Prompts
Fifteen prompts. Six are starters for the Chat panel (one-click suggestions for a new chat). Two are dispatch helpers (encode the message conventions so LLMs don’t have to remember them). Seven are skeletal workflow guides (return reusable template text: entry points, not full bpy reference). All are blender_-prefixed.
Prompts are pure templates. None of them call the bus or dispatch anything; the LLM consumes the returned text and decides what to do.
Starter prompts
Section titled “Starter prompts”Short requests a new user can try with one click. The add-on’s Chat panel lists them in a new, empty chat; clicking one fills the message box without sending it. Any other MCP client sees them as ordinary prompts, for example in a slash-command picker.
None take arguments. prompts/get returns one user message whose text is exactly what goes into the message box. The title is the button label.
| Name | Title | Group | Text |
|---|---|---|---|
| blender_starter_b_wave | Make B wave | b_clip | Make B. Clip wave hello with his front handle: rock the handle.front bone of his rig (the B. Clip armature) between -10 and 15 degrees around its Y axis, a few times over about two seconds. I’ll press Space to play it. |
| blender_starter_b_top_hat | Give B a top hat | b_clip | Give B. Clip a black top hat that sits on top of him, between his handles, and parent it to the body bone of his rig so it moves with him. |
| blender_starter_b_desk | Put B on a desk | b_clip | Build a simple wooden desk and stand B. Clip on top of it, near the front edge, still facing the camera. Move his rig so all of him goes. |
| blender_starter_describe_scene | Describe this scene | general | Describe what’s in this scene: the objects, how they’re arranged, and how it’s lit. |
| blender_starter_table_chair | Add a table and chair | general | Add a simple wooden table with a chair tucked under it, both real-world size and resting on the floor. |
| blender_starter_light_scene | Light this scene nicely | general | Light this scene nicely with a soft three-point setup aimed at the main subject, as seen from the camera. |
The _meta convention
Section titled “The _meta convention”Clients find starters by metadata, not by name. Each starter’s entry in prompts/list carries:
{ "name": "blender_starter_b_wave", "title": "Make B wave", "description": "Animate B. Clip waving hello by keying his rig's handle.front bone.", "arguments": [], "_meta": { "blender_mcp": {"starter": true, "group": "b_clip", "order": 1}, "fastmcp": {"tags": []} }}| Key | Meaning |
|---|---|
| starter | true marks a starter. Anything else, or no blender_mcp key, is an ordinary prompt. |
| group | When it fits. b_clip for the B. Clip template or a scene with B in it; general for any scene. |
| order | Sort key for the buttons, lowest first. |
FastMCP adds its own fastmcp key beside ours; clients should ignore keys they don’t know. The add-on shows the b_clip group when the active application template is B_Clip or the scene has an object named B. Clip (or Clip_Rig), and general otherwise, falling back to general if a server has no b_clip starters. A server without starters gets no buttons and no error.
Names are stable. To change the set, add or edit entries in src/blender_mcp/starter_prompts.py; keep titles short enough for a sidebar button.
Dispatch helpers
Section titled “Dispatch helpers”blender_dispatch_script
Section titled “blender_dispatch_script”Build a properly-formed blender_send_message call for executing Python in Blender via a job_dispatch payload.
blender_dispatch_script( target: str, script: str, priority: str = "info", description: str | None = None,) -> list[PromptMessage]Target syntax:
| Prefix | Routing | Example |
|---|---|---|
| uuid:<client-uuid> | direct | uuid:blender-abc123 |
| group:<group-id> | group | group:render-cluster |
| type:<client_type> | type_filter | type:blender |
| broadcast | broadcast | broadcast |
Unknown prefixes render inline as <invalid target spec: ...> so the LLM can see the error rather than silently dropping the dispatch.
Returns a single user-role text message templating the blender_send_message call (target fields, priority, full payload shape with message_type: job_dispatch, job_id, script, optional description).
blender_dispatch_recipe
Section titled “blender_dispatch_recipe”Emit the canonical MCP call shape for any of the 24 dispatch tools.
blender_dispatch_recipe(command: str) -> list[PromptMessage]Inlines a per-command kwargs template + the standard return-shape doc so the LLM can call any dispatch tool without first running list_tools and parsing schema. Pass any of the 24 command names (e.g. "get_scene_info", "download_polyhaven_asset").
Workflow assistants (skeletal)
Section titled “Workflow assistants (skeletal)”These return short reusable templates: patterns and decision trees, not exhaustive bpy reference. Use them as entry points for the LLM to plan an approach before committing to specific tool calls.
blender_script_writing_assistant
Section titled “blender_script_writing_assistant”blender_script_writing_assistant(goal: str) -> list[PromptMessage]bpy patterns relevant to goal: imports, context safety, the bpy.ops vs bpy.data vs bmesh decision tree, common operator vs data-API tradeoffs.
blender_modeling_workflow
Section titled “blender_modeling_workflow”blender_modeling_workflow(object_type: str) -> list[PromptMessage]Operator vs modifier vs bmesh vs Geometry Nodes decision tree for the named object type.
blender_rendering_setup
Section titled “blender_rendering_setup”blender_rendering_setup(engine: str = "cycles") -> list[PromptMessage]Setup checklist for the named render engine (cycles or eevee): engine selection, sampling, resolution, camera, world setup.
blender_material_creation
Section titled “blender_material_creation”blender_material_creation(material_kind: str) -> list[PromptMessage]Principled-BSDF skeleton with inline customization points keyed to material_kind (metal, plastic, glass, fabric, etc.).
blender_animation_basics
Section titled “blender_animation_basics”blender_animation_basics(animation_type: str) -> list[PromptMessage]Keyframes vs drivers vs constraints guide for the requested animation type.
Troubleshooting
Section titled “Troubleshooting”blender_debug_assistant
Section titled “blender_debug_assistant”blender_debug_assistant(error_text: str) -> list[PromptMessage]Diagnose a Blender traceback. Covers common patterns: context errors, KeyError, AttributeError, pickle/segfault, blank result, mode-switch failures.
Asset pipeline
Section titled “Asset pipeline”blender_asset_creation_strategy
Section titled “blender_asset_creation_strategy”blender_asset_creation_strategy(asset_kind: str) -> list[PromptMessage]Pipeline picker: Hyper3D vs PolyHaven vs Sketchfab vs manual modeling, and when each is appropriate based on the asset kind requested.
Why prompts, not tools
Section titled “Why prompts, not tools”Tools force the LLM through a wrapper that hides the underlying convention. Prompts surface the convention so the LLM can call the next tool (blender_send_message, blender_execute_code, blender_download_polyhaven_asset) directly with full visibility over routing, priority, and payload shape. Think of prompts as documentation the model can ask for inline.
Related
Section titled “Related”- Chat inside Blender: where the starter prompts show up
- Bus tools:
blender_send_message, the calldispatch_scripttemplates - Dispatch tools: the 24 named tools
dispatch_recipeemits recipes for - Routing modes: direct / group / type_filter / broadcast
- Priority levels: what to pass for
priority - Use cases: concrete dispatch patterns these prompts accelerate
A Supported Systems Joint
BlenderMCP is built and maintained by Supported Systems, a small studio that writes software for people who have to keep it running afterwards.
Visit supported.systems