Skip to main content
Glama

Blender MCP Ultra

205 tools. 37 modules. Complete Blender control via MCP.

A production-grade Model Context Protocol (MCP) server that gives AI agents full control of Blender. Create, animate, light, render, and sculpt — all through structured tools, no scripts needed.

Features

  • 205 structured tools across 37 modules — every tool does one thing well

  • Zero execute_blender_code needed for most workflows — structured tools are faster, safer, and save tokens

  • Wizard tools — one call creates a complete scene (product shots, interiors, characters, environments)

  • Batch tools — operate on hundreds of objects in a single call

  • Works with any LLM — optimized for weak models (GPT-3.5, Haiku, Flash) via compact tool grouping

  • Blender 5.2+ compatible — tested with EEVEE Next and Cycles

Related MCP server: Blender MCP

Installation

MCP Server (for AI agents)

pip install blender-mcp-ultra
# or with uv
uv pip install blender-mcp-ultra

Blender Addon

# Deploy addon to Blender
python deploy.py
# or manually copy addon/ to your Blender scripts/addons directory

Enable the addon in Blender Preferences → Add-ons → search "Blender MCP Ultra".

Quick Start

# From your MCP client (opencode, Claude, etc.)
from blender_mcp_ultra import BlenderMCPServer

server = BlenderMCPServer()
server.connect()  # Auto-starts Blender addon on port 9876

# Create a product shot in one call
server.call("wizard_product_shot", {
    "product_type": "sphere",
    "product_color": [0.8, 0.2, 0.2],
    "render": True,
    "samples": 32
})

# Or build scenes tool-by-tool
server.call("create_object", {"object_type": "MESH", "name": "MyMesh"})
server.call("create_material", {"name": "RedMetal", "color": [0.8, 0.1, 0.1], "metallic": 0.9})
server.call("assign_material", {"object_name": "MyMesh", "material_name": "RedMetal"})
server.call("setup_studio_3point", {"key_energy": 18, "fill_energy": 8, "rim_energy": 35})
server.call("create_turntable_animation", {"object_name": "MyMesh", "frames": 250})
server.call("render_image", {"samples": 64})

Tool Groups

Grouped tools save tokens by doing one specific job well. Each group is independent — animation tools don't import sculpting, material tools don't import physics.

Group

Tools

Use For

Turntable

create_turntable_animation, set_animation_cyclic, set_bezier_easing

Rotation animations

Studio Camera

setup_studio_camera, set_camera_framing

Camera for any subject

Studio Lighting

setup_studio_3point, set_studio_world, create_studio_floor

3-point lighting

Material Config

configure_display_material, configure_glass_material, configure_body_material, reassign_material_slot

Screen/glass/body materials

Constraints

add_object_constraint, remove_object_constraint

Object constraints (27 types)

Shape Keys

add_shape_key, set_shape_key_value, remove_shape_key

Morph targets

NLA

add_nla_track, add_nla_strip

Non-linear animation

Markers

add_marker, remove_marker

Timeline markers

Vertex Colors

add_color_attribute, set_vertex_color

Per-vertex color data

Custom Properties

set_custom_property, get_custom_property

User-defined metadata

World/Compositor

setup_world_sky_texture, setup_compositor

Sky textures, post-processing

Lattice/Paint

create_lattice, apply_lattice_deform, enter_weight_paint, enter_vertex_paint

Deformation, painting

Library/Normals

link_blend_data, set_custom_normals

External assets, custom normals

Batch

batch_create_objects, batch_rename, batch_select, batch_transform, batch_material_preset

Multiple objects

Wizard

wizard_product_shot, wizard_archviz_interior, etc.

Complete scenes

All 205 Commands by Domain

Objects (11)

create_object delete_object duplicate_object join_objects parent_objects rename_object select_objects set_object_visibility set_origin shade_object convert_object

Transforms (8)

move_object rotate_object scale_object set_object_transform get_local_transforms align_object apply_transform snap_to_cursor

Modifiers (14)

add_modifier remove_modifier apply_modifier configure_modifier reorder_modifier bevel_edges boolean_operation extrude_faces inset_faces loop_cut merge_vertices subdivide_mesh flip_normals recalculate_normals

Mesh Editing (10)

edit_mesh_vertices edit_mesh_edges edit_mesh_faces create_vertex_group assign_vertex_group smooth_vertices tri_to_quad limited_dissolve separate_by_loose separate_by_material

Mesh Quality (5)

analyze_mesh_quality get_mesh_statistics check_production_readiness find_duplicates fix_mesh_defects

Materials (10)

create_material delete_material assign_material set_material_property create_procedural_material add_shader_node set_shader_node_value connect_shader_nodes apply_image_texture list_materials

Material Config (4)

configure_display_material configure_glass_material configure_body_material reassign_material_slot

Lights (5)

create_light configure_light setup_hdri_lighting setup_studio_lighting list_lights

Studio Lighting (3)

setup_studio_3point set_studio_world create_studio_floor

Camera (5)

create_camera configure_camera setup_camera_track_to setup_turntable_camera set_camera_to_view

Studio Camera (2)

setup_studio_camera set_camera_framing

Animation (8)

set_keyframe delete_keyframe set_interpolation set_animation_range set_fps go_to_frame create_walk_cycle setup_subdivision_animation

Turntable (3)

create_turntable_animation set_animation_cyclic set_bezier_easing

Constraints (2)

add_object_constraint remove_object_constraint

Shape Keys (3)

add_shape_key set_shape_key_value remove_shape_key

NLA (2)

add_nla_track add_nla_strip

Markers (2)

add_marker remove_marker

Vertex Colors (2)

add_color_attribute set_vertex_color

Custom Properties (2)

set_custom_property get_custom_property

World & Compositor (2)

setup_world_sky_texture setup_compositor

Lattice (2)

create_lattice apply_lattice_deform

Weight/Vertex Paint (2)

enter_weight_paint enter_vertex_paint

Library & Normals (2)

link_blend_data set_custom_normals

Scene (5)

get_scene_info list_objects get_object_info create_scene set_scene_property

Viewport (4)

get_viewport_info set_viewport_shading set_viewport_camera toggle_overlays

Viewport Enhanced (3)

get_viewport_screenshot get_viewport_screenshot_comparison get_render_preview

Sculpting (6)

configure_sculpt_brush enter_sculpt_mode exit_sculpt_mode set_sculpt_symmetry configure_dyntopo remesh_sculpt

UV (6)

uv_smart_project uv_unwrap uv_pack_islands uv_project_from_view uv_select_island get_uv_info

Physics (7)

add_rigid_body add_cloth_physics add_fluid_physics add_particle_system add_force_field bake_physics delete_physics

Geometry Nodes (4)

add_geometry_nodes_modifier add_geometry_node connect_geometry_nodes create_procedural_distribution

Curves (5)

create_curve create_text_object edit_curve_points set_curve_fill convert_curve_to_mesh

Armature (6)

create_armature add_bone create_humanoid_rig add_bone_constraint setup_ik_chain parent_bone_to_object

Collections (5)

create_collection delete_collection move_to_collection set_collection_visibility list_collections

File I/O (5)

import_file export_file export_fbx export_glb export_obj

Procedural (4)

create_terrain create_tree create_rock create_particle_field

Batch (11)

batch_create_objects batch_delete_objects batch_transform batch_add_modifiers batch_material_preset batch_rename batch_parent batch_visibility batch_select batch_set_origin execute_sequence

Rendering (4)

render_image render_animation render_preview configure_render

Multi-Scene (8)

list_open_scenes open_blend_file save_blend_file new_scene switch_scene delete_scene merge_blend_file get_scene_diff

Code Execution (2)

execute_blender_code run_operator

Wizards (11)

wizard_product_shot wizard_archviz_interior wizard_character_basemesh wizard_environment wizard_studio_render wizard_uv_unwrap_all wizard_scene_optimize wizard_material_preset wizard_quick_scene wizard_turntable wizard_batch_materials

Architecture

opencode ──MCP stdio──▶ blender_mcp_ultra.server ──WebSocket 9876──▶ Blender addon
  1. AI agent calls MCP tool via stdio

  2. MCP server serializes command and sends via WebSocket to Blender

  3. Blender addon queues command on main thread

  4. Handler executes the Blender API call

  5. Result returned through the same path

Development

# Install dependencies
pip install -e ".[dev]"

# Run MCP server (standalone test)
blender-mcp-ultra

# Run Blender with addon
blender --python blender_startup.py

# Run tests
pytest tests/

# Lint
ruff check src/

License

MIT

Available Tools

209 tools
add_boneA

Add a bone to an armature.

Args: armature_name: Target armature. bone_name: Name for the bone. head: [x, y, z] bone head position. tail: [x, y, z] bone tail position. parent_bone: Parent bone name (for hierarchy).

Inputs: bone_name (required), armature_name (required), head, tail, +1 more.

add_bone_constraintB

Add a constraint to a bone.

Args: armature_name: Target armature. bone_name: Bone to constrain. constraint_type: TRACK_TO, COPY_LOCATION, COPY_ROTATION, IK, etc. target_name: Target object for the constraint.

Inputs: bone_name (required), armature_name (required), target_name, constraint_type.

add_cloth_physicsB

Add cloth simulation to an object.

Args: object_name: Target object. quality_steps: Simulation quality (1-20). mass: Cloth mass density. tension: Structural tension. compression: Structural compression.

Inputs: object_name (required), mass, tension, compression, +1 more.

add_color_attributeB

Add a color attribute (vertex color layer) to a mesh.

Args: object_name: Target mesh object. name: Name for the color attribute. domain: CORNER (per-loop) or POINT (per-vertex). data_type: BYTE_COLOR (0-1 byte) or FLOAT_COLOR (0-1 float).

Inputs: object_name (required), name, domain, data_type.

add_fluid_physicsC

Add fluid simulation to an object.

Args: object_name: Target object. domain_type: DOMAIN, EFFERENT, FLOW, or COLLISION. fluid_type: LIQUID or GAS.

Inputs: object_name (required), fluid_type, domain_type.

add_force_fieldC

Add a force field effect.

Args: name: Force field name. field_type: FORCE, WIND, VORTEX, MAGNET, CHARGE, LENARD_JONES, TURBULENCE, etc. location: [x, y, z] position. strength: Field strength. flow: Field flow.

Inputs: flow, name, location, strength, +1 more.

add_geometry_nodeC

Add a node to a geometry node tree.

Args: node_group_name: Node group name. node_type: Node type (e.g., 'MeshPrimitiveCube', 'InstanceOnPoints', 'SetPosition'). location: [x, y] position in the node editor.

Inputs: node_type (required), node_group_name (required), location.

add_geometry_nodes_modifierC

Add a geometry nodes modifier to an object.

Args: object_name: Target object. node_group_name: Name for the node group.

Inputs: object_name (required), node_group_name.

add_markerA

Add a timeline marker for animation notes or camera binding.

Args: name: Marker name. frame: Frame number for the marker. camera_name: Camera to bind to this marker (optional).

Inputs: name, frame, camera_name.

add_modifierB

Add a modifier to an object.

Args: object_name: Target object. modifier_type: SUBSURF, MIRROR, SOLIDIFY, BOOLEAN, BEVEL, ARRAY, etc. name: Optional modifier name. params: Optional modifier settings dict (e.g. {'levels': 2, 'render_levels': 3} for SUBSURF, {'width': 0.002, 'segments': 4} for BEVEL).

Inputs: object_name (required), modifier_type (required), name, params.

add_nla_stripB

Add an animation clip (strip) to an NLA track.

Args: object_name: Target object. track_name: NLA track to add the strip to. action_name: Action (animation clip) to use. name: Custom name for the strip. start_frame: Frame where the strip starts. scale: Time scale for the strip. repeat: Number of times to repeat. blend_type: REPLACE, ADD, SUBTRACT, MULTIPLY.

Inputs: track_name (required), action_name (required), object_name (required), name, +4 more.

add_nla_trackC

Add an NLA track to an object for layering animation clips.

Args: object_name: Target object with animation data. name: Name for the new track.

Inputs: object_name (required), name.

add_object_constraintB

Add a constraint to an object.

Common types: COPY_LOCATION, COPY_ROTATION, COPY_SCALE, TRACK_TO, FOLLOW_PATH, CHILD_OF, LIMIT_LOCATION, LIMIT_ROTATION, LIMIT_SCALE, TRANSFORM, CLAMP_TO, DAMPED_TRACK_TO, IK, PUSH_PULL,Stretch To.

Args: object_name: Target object. constraint_type: Constraint type (e.g. 'COPY_LOCATION'). name: Custom name for the constraint. target_name: Target object for the constraint. subtarget: Sub-target (bone name for armature targets). settings: Dict of constraint properties to set.

Inputs: object_name (required), constraint_type (required), name, settings, +2 more.

add_particle_systemB

Add a particle system to an object.

Args: object_name: Target object. particle_type: EMITTER, HAIR, or STATIC_HAIR. count: Number of particles. lifetime: Particle lifetime in frames. frame_start: Start frame. frame_end: End frame.

Inputs: object_name (required), count, lifetime, frame_end, +2 more.

add_rigid_bodyA

Add rigid body physics to an object.

Args: object_name: Target object. body_type: ACTIVE (dynamic) or PASSIVE (static/kinematic). mass: Mass in kg. friction: Surface friction (0-1). restitution: Bounciness (0-1).

Inputs: object_name (required), mass, friction, body_type, +1 more.

add_shader_nodeA

Add a shader node to a material's node tree.

Args: material_name: Target material. node_type: Shader node type (e.g., 'TEX_NOISE', 'TEX_VORONOI', 'MIXRGB', 'VALUE'). location: [x, y] position in the node editor. name: Optional node label.

Inputs: node_type (required), material_name (required), name, location.

add_shape_keyB

Add a shape key (morph target) to a mesh object.

Automatically creates the Basis key if none exists.

Args: object_name: Target mesh object. name: Name for the new shape key. from_mix: Create from current mesh state.

Inputs: object_name (required), name, from_mix.

align_objectA

Align one object's transform to another.

Args: name: Object to align. target: Reference object. align_location: Match position. align_rotation: Match rotation. align_scale: Match scale.

Inputs: name (required), target (required), align_scale, align_location, +1 more.

analyze_mesh_qualityA

Analyze mesh for defects: non-manifold edges, loose vertices, zero-area faces, duplicate vertices, wire edges, and twisted faces.

Returns a structured defect report with counts and affected element indices.

Inputs: object_name (required).

apply_image_textureC

Apply an image texture to an object.

Args: object_name: Target object. image_path: Path to the image file. material_name: Optional existing material to add texture to.

Inputs: image_path (required), object_name (required), material_name.

apply_lattice_deformA

Apply lattice modifier to bake deformation into mesh.

Args: object_name: Target object with lattice modifier. modifier_name: Name of the lattice modifier.

Inputs: object_name (required), modifier_name.

apply_modifierC

Apply (bake) a modifier into the mesh.

Args: object_name: Target object. modifier_name: Name of the modifier to apply.

Inputs: object_name (required), modifier_name (required).

apply_transformA

Apply (bake) transforms — resets values to identity while keeping world position.

Args: name: Object name. location: Apply location. rotation: Apply rotation. scale: Apply scale.

Inputs: name (required), scale, location, rotation.

assign_materialC

Assign a material to an object's material slot.

Args: object_name: Target object. material_name: Material to assign. slot: Material slot index.

Inputs: object_name (required), material_name (required), slot.

assign_vertex_groupA

Assign vertices to a vertex group with a specific weight.

Args: object_name: Target object. group_name: Vertex group name. vertices: Vertex indices to assign. weight: Weight value (0.0 - 1.0).

Inputs: vertices (required), group_name (required), object_name (required), weight.

auto_scene_reportB

Full scene analysis with quality metrics in compact format.

Returns: poly count, material count, lighting setup, camera info, bounding box, and quality issues (non-manifold, ngons, etc.) All in a single compact response.

Inputs: no named parameters.

bake_physicsA

Bake physics simulation for an object.

Args: object_name: Object with physics. frame_start: First frame to bake. frame_end: Last frame to bake.

Inputs: object_name (required), frame_end, frame_start.

batch_add_modifiersA

Add the same modifier to multiple objects in one call.

Args: object_names: List of object names. modifier_type: Modifier type (SUBSURF, MIRROR, BEVEL, etc.) settings: Optional settings dict to apply to each modifier.

Inputs: object_names (required), modifier_type (required), settings.

batch_create_objectsC

Create multiple objects in one call.

Each object: {"type": "MESH", "name": "Obj", "location": [x,y,z], "scale": [sx,sy,sz]}

Args: objects: List of object definitions.

Inputs: objects (required).

batch_delete_objectsB

Delete multiple objects in one call.

Args: names: List of object names to delete.

Inputs: names (required).

batch_material_presetB

Apply material presets to multiple objects in one call.

Each entry: {"object": "name", "preset": "metal", "color": [r,g,b]}

Args: assignments: List of material preset assignments.

Inputs: assignments (required).

batch_parentC

Set parent-child relationships for multiple pairs in one call.

Each entry: {"child": "name", "parent": "name", "keep_transform": true}

Args: parentings: List of parenting dicts.

Inputs: parentings (required).

batch_renameA

Rename multiple objects in one call.

Each entry: {"old": "OldName", "new": "NewName"}

Args: renames: List of rename dicts.

Inputs: renames (required).

batch_selectA

Select multiple groups of objects in one call.

Each group: {"replace": true, "names": ["Obj1", "Obj2"]} Useful for material assignment workflows.

Args: groups: List of selection groups.

Inputs: groups (required).

batch_set_originB

Set origins for multiple objects in one call.

Each entry: {"name": "Obj", "origin_type": "GEOMETRY"}

Args: origins: List of origin dicts.

Inputs: origins (required).

batch_transformB

Apply transforms to multiple objects in one call.

Each entry: {"name": "Obj", "location": [x,y,z], "rotation": [rx,ry,rz], "scale": [sx,sy,sz]} Only provided channels are modified per object.

Args: transforms: List of transform dicts.

Inputs: transforms (required).

batch_visibilityC

Set visibility for multiple objects in one call.

Each entry: {"name": "Obj", "visible": true, "hide_render": false}

Args: visibilities: List of visibility dicts.

Inputs: visibilities (required).

bevel_edgesB

Bevel selected edges of a mesh.

Args: object_name: Object name. width: Bevel width. segments: Number of segments (1 = flat bevel).

Inputs: object_name (required), width, segments.

boolean_operationB

Perform a boolean operation between two objects.

Args: object_name: Object to modify. target_name: Object to use as boolean operand. operation: UNION, INTERSECT, or DIFFERENCE.

Inputs: object_name (required), target_name (required), operation.

check_production_readinessA

Full production readiness audit: manifold geometry, UV maps, materials, naming conventions, origin alignment. Returns a score 0-100 with detailed breakdown.

Inputs: object_name (required).

configure_body_materialB

Configure a solid body/casing material.

Works for product casings, furniture surfaces, architectural elements, or any solid opaque surface.

Args: material_name: Name of the body material. color: RGB base color (0-1). roughness: Surface roughness. metallic: Metallic value. 0.0 = dielectric, 1.0 = metal.

Inputs: color, metallic, roughness, material_name.

configure_cameraC

Configure camera optical properties.

Args: name: Camera object name. lens: Focal length in mm. depth_of_field: Enable depth of field. fstop: Aperture f-stop. focus_distance: Focus distance. clip_start: Near clip. clip_end: Far clip.

Inputs: name (required), lens, fstop, clip_end, +3 more.

configure_display_materialA

Configure a display/emissive material for any scene.

Sets dark base color, low roughness, and optional emission. Works for phone screens, monitors, TVs, control panels, HUDs, or any emissive surface.

Args: material_name: Name of the material to configure. color: RGB base color (0-1). Default: near-black. roughness: Surface roughness. 0.03 = mirror-like. emission_color: RGB emission color. emission_strength: Emission intensity. 0 = off, 1+ = glowing.

Inputs: color, roughness, material_name, emission_color, +1 more.

configure_dyntopoB

Configure dynamic topology (dyntopo) for sculpting.

Args: enabled: Enable/disable dyntopo. detail_size: Detail size (smaller = more detail). resolution: RELATIVE, ABSOLUTE, or BRUSH.

Inputs: enabled, resolution, detail_size.

configure_glass_materialB

Configure glass/transparent material for EEVEE.

Works for windows, lenses, screens, bottles, or any transparent surface.

Args: material_name: Name of the glass material. transmission: Transmission weight (0-1). 0.95 = fully glass-like. ior: Index of refraction. 1.52 = standard glass. roughness: Surface roughness. 0.0 = perfect mirror.

Inputs: ior, roughness, transmission, material_name.

configure_lightA

Configure an existing light's properties.

Args: name: Light object name. energy: Power in watts. color: [R, G, B] light color. radius: Soft shadow radius. spot_angle: Spot cone angle in radians (spot lights only). shadow_soft_size: Shadow soft size.

Inputs: name (required), color, energy, radius, +2 more.

configure_modifierC

Configure settings of an existing modifier.

Args: object_name: Target object. modifier_name: Name of the modifier to configure. settings: Dict of setting_name: value pairs.

Inputs: settings (required), object_name (required), modifier_name (required).

configure_renderA

Configure render engine, GPU, samples, resolution, etc.

Args: engine: Render engine (CYCLES, BLENDER_EEVEE, BLENDER_WORKBENCH). samples: Number of samples for Cycles. device: "GPU" or "CPU" for Cycles device. denoising: Enable/disable denoising. max_bounces: Max light bounces for Cycles. resolution_x: Output width. resolution_y: Output height.

Inputs: device, engine, samples, denoising, +3 more.

configure_sculpt_brushB

Configure the active sculpt brush.

Args: brush_name: Draw, Clay, Crease, Inflate, Grab, Smooth, etc. size: Brush radius. strength: Brush strength (0-1). auto_masking: Enable auto masking.

Inputs: size, strength, brush_name, auto_masking.

connect_geometry_nodesC

Connect two nodes in a geometry node tree.

Args: node_group_name: Node group name. from_node: Source node name. from_socket: Source socket name. to_node: Target node name. to_socket: Target socket name.

Inputs: to_node (required), from_node (required), to_socket (required), from_socket (required), +1 more.

connect_shader_nodesA

Connect two shader nodes in a material's node tree.

Args: material_name: Target material. from_node: Source node name/label. from_socket: Source socket name. to_node: Target node name/label. to_socket: Target socket name.

Inputs: to_node (required), from_node (required), to_socket (required), from_socket (required), +1 more.

convert_curve_to_meshB

Convert a curve object to a mesh.

Args: curve_name: Curve to convert. name: Name for the new mesh. Empty = auto.

Inputs: curve_name (required), name.

convert_objectC

Convert an object to a different type (e.g., curve to mesh).

Args: name: Object name. target_type: Target type (MESH, CURVE, SURFACE, etc.).

Inputs: name (required), target_type.

create_armatureC

Create a new armature object.

Args: name: Armature name. location: [x, y, z] position.

Inputs: name, location.

create_cameraB

Create a camera with optical settings.

Args: name: Camera name. location: [x, y, z] position. rotation: [x, y, z] Euler rotation. lens: Focal length in mm. sensor_width: Sensor width in mm. clip_start: Near clipping distance. clip_end: Far clipping distance.

Inputs: lens, name, clip_end, location, +3 more.

create_collectionB

Create a new collection.

Args: name: Collection name. parent: Parent collection name (empty = root).

Inputs: name (required), parent.

create_curveA

Create a curve object.

Args: name: Curve name. curve_type: BEZIER, NURBS, or POLY. points: List of [x, y, z] control points. location: [x, y, z] position. bevel_depth: Curve bevel depth (thickness). bevel_resolution: Bevel resolution. fill: FULL, HALF, or NONE.

Inputs: fill, name, points, location, +3 more.

create_humanoid_rigB

Create a basic humanoid armature with spine, arms, and legs.

Args: armature_name: Name for the armature. location: [x, y, z] position.

Inputs: location, armature_name.

create_latticeC

Create a lattice for free-form mesh deformation.

Optionally binds to a target object via Lattice modifier.

Args: name: Name for the lattice. location: [x, y, z] position. points_u: Control points in U direction. points_v: Control points in V direction. points_w: Control points in W direction. target_object: Object to apply lattice modifier to (optional).

Inputs: name, location, points_u, points_v, +2 more.

create_lightB

Create a light source.

Args: name: Light name. light_type: POINT, SUN, SPOT, or AREA. location: [x, y, z] position. energy: Light power in watts. color: [R, G, B] light color. radius: Soft shadow radius.

Inputs: name, color, energy, radius, +2 more.

create_materialA

Create a new Principled BSDF material.

Args: name: Material name. color: [R, G, B, A] base color (0-1). metallic: Metallic value (0-1). roughness: Roughness value (0-1).

Inputs: name, color, metallic, roughness.

create_objectB

Create a new object of any type with optional transform.

Args: object_type: MESH, CURVE, SURFACE, META, TEXT, ARMATURE, LATTICE, EMPTY, CAMERA, LIGHT, etc. name: Name for the new object. location: [x, y, z] world position. rotation: [x, y, z] Euler rotation in radians. scale: [x, y, z] scale factors.

Inputs: name, scale, location, rotation, +1 more.

create_particle_fieldB

Generate a field of scattered particles/objects.

Args: name: Object name. count: Number of particles. size: Field size. particle_size: Individual particle size. seed: Random seed.

Inputs: name, seed, size, count, +1 more.

create_procedural_distributionA

Set up points-on-faces distribution via geometry nodes.

Args: object_name: Target object to distribute on. instance_object: Object to instance on each point. Empty = just points. count: Number of instances. distribution: RANDOM, POISSON_DISK, or GRID. seed: Random seed.

Inputs: object_name (required), seed, count, distribution, +1 more.

create_procedural_materialA

Create a complete procedural material with node graph in one call.

Creates coordinate mapping, texture node, color ramp, and Principled BSDF.

Args: name: Material name. pattern: NOISE, VORONOI, MUSGRAVE, WAVY, MAGIC, checker, marble, wood, cloud, gradient, veins, plasma. color1: First color [R, G, B]. color2: Second color [R, G, B]. scale: Texture scale. detail: Texture detail level. roughness: Surface roughness.

Inputs: name, scale, color1, color2, +3 more.

create_rockA

Generate a procedural rock.

Args: name: Object name. size: Rock size. detail: Surface detail level (0-1). roughness: Surface roughness. seed: Random seed.

Inputs: name, seed, size, detail, +1 more.

create_sceneB

Create a new scene.

Args: name: Name for the new scene. copy_current: If True, copy the current scene's settings.

Inputs: name, copy_current.

create_studio_floorA

Create a ground plane for studio scenes.

Works as a floor for products, characters, or any standing object. Dark matte by default, configurable color and roughness.

Args: color: RGB floor color (0-1). Default: near-black. roughness: Surface roughness. 0.3 = subtle reflection. size: Floor size in meters. height: Floor Z position. name: Name for the floor object.

Inputs: name, size, color, height, +1 more.

create_terrainB

Generate a procedural terrain mesh.

Args: name: Object name. size: Grid size. subdivisions: Number of subdivisions. height: Maximum height. seed: Random seed. noise_scale: Noise scale factor.

Inputs: name, seed, size, height, +2 more.

create_text_objectC

Create a text object with formatting.

Args: name: Object name. text: The text content. location: [x, y, z] position. size: Font size. extrude: Text depth. font_path: Path to a .ttf/.otf font file.

Inputs: name, size, text, extrude, +2 more.

create_treeA

Generate a procedural tree with trunk, branches, and leaves.

Args: name: Object name. trunk_height: Height of the trunk. trunk_radius: Radius of the trunk. branch_levels: Number of branching levels. leaves_per_branch: Leaves per branch. seed: Random seed.

Inputs: name, seed, trunk_height, trunk_radius, +2 more.

create_turntable_animationA

Create a 360-degree turntable rotation animation on an object.

Works for products, characters, environments, anything. Sets keyframes at frame 1 and frame N with full rotation. Applies bezier easing (AUTO_CLAMPED handles) for smooth ease in/out. Optionally adds cyclic modifier for seamless looping.

Args: object_name: Object to animate. frames: Total frames for one full rotation. axis: Rotation axis (X, Y, or Z). cyclic: Whether to make the animation loop.

Inputs: object_name (required), axis, cyclic, frames.

create_vertex_groupC

Create a new vertex group on a mesh object.

Args: object_name: Target object. group_name: Name for the vertex group.

Inputs: group_name (required), object_name (required).

create_walk_cycleB

Create a simple walk/bounce cycle animation.

Args: object_name: Target object. frames_per_cycle: Frames for one full cycle. amplitude: Bounce height.

Inputs: object_name (required), amplitude, frames_per_cycle.

delete_collectionA

Delete a collection.

Args: name: Collection name. keep_objects: If True, move objects to the scene collection first.

Inputs: name (required), keep_objects.

delete_keyframeA

Delete keyframes at a specific frame or all keyframes.

Args: object_name: Target object. frame: Frame to delete (None = all keyframes).

Inputs: object_name (required), frame.

delete_materialC

Remove material from an object's slot.

Args: object_name: Target object. slot: Material slot index.

Inputs: object_name (required), slot.

delete_objectB

Delete an object by name.

Args: name: Name of the object to delete.

Inputs: name (required).

delete_physicsC

Remove all physics from an object.

Args: object_name: Target object.

Inputs: object_name (required).

delete_sceneC

Delete a scene from the current .blend file.

Args: scene_name: Name of the scene to delete.

Inputs: scene_name (required).

duplicate_objectC

Duplicate an object with all its data.

Args: name: Name of the object to duplicate. new_name: Optional name for the duplicate.

Inputs: name (required), new_name.

edit_curve_pointsA

Add or remove curve control points.

Args: curve_name: Curve object name. action: add, remove, or move. points: [x, y, z] for add/move actions. index: Point index for remove/move (-1 = last).

Inputs: curve_name (required), index, action, points.

edit_mesh_edgesC

Edit mesh edges.

Args: object_name: Target mesh object. action: select, deselect, mark_seam, clear_seam, mark_sharp, crease. edges: List of edge indices (None = selected).

Inputs: object_name (required), edges, action.

edit_mesh_facesB

Edit mesh faces.

Args: object_name: Target mesh object. action: select, deselect, delete, fill, grid_fill, triangulate, poke. faces: List of face indices (None = selected).

Inputs: object_name (required), faces, action.

edit_mesh_verticesB

Edit mesh vertices at the element level.

Args: object_name: Target mesh object. action: move, delete, smooth, or collapse. vertices: List of vertex indices to operate on (None = selected). offset: [x, y, z] offset for move action.

Inputs: object_name (required), action, offset, vertices.

enter_sculpt_modeB

Enter sculpt mode on an object.

Args: object_name: Object to sculpt. Empty = active object.

Inputs: object_name.

enter_vertex_paintB

Enter vertex paint mode.

Args: object_name: Object to paint (empty = active object).

Inputs: object_name.

enter_weight_paintA

Enter weight paint mode for rigging.

Args: object_name: Object to paint (empty = active object).

Inputs: object_name.

execute_blender_codeA

Execute arbitrary Python code in Blender with full bpy access.

WARNING: This runs unvalidated code. Use structured tools when possible. Code is executed in a sandboxed environment with restricted builtins.

Args: code: Python code to execute. Has access to 'bpy' and 'bmesh'.

Inputs: code (required).

execute_sequenceB

Execute a sequence of Blender commands in one call.

Each command: {"type": "create_object", "params": {...}} Commands are executed in order on the Blender main thread. This is the most powerful batch tool — it chains any operations.

Args: commands: List of command dicts with type and params.

Inputs: commands (required).

exit_sculpt_modeA

Exit sculpt mode and return to object mode.

Inputs: no named parameters.

export_fbxA

Export to FBX format with common settings.

Args: filepath: Output path. selected_only: Only export selected. apply_scale: Apply scale transforms. mesh_smooth_type: OFF, FACE, or EDGE. path_mode: AUTO, ABSOLUTE, RELATIVE, MATCH, STRIP, COPY.

Inputs: filepath (required), path_mode, apply_scale, selected_only, +1 more.

export_fileB

Export objects to a 3D model file.

Args: filepath: Output file path. file_type: FBX, OBJ, GLTF, GLB, STL, USD, PLY, ABC, etc. selected_only: Only export selected objects.

Inputs: filepath (required), file_type, selected_only.

export_glbB

Export to glTF binary (GLB) format.

Args: filepath: Output path. selected_only: Only export selected. export_materials: Include materials.

Inputs: filepath (required), selected_only, export_materials.

export_objC

Export to OBJ format.

Args: filepath: Output path. selected_only: Only export selected. export_materials: Include MTL file.

Inputs: filepath (required), selected_only, export_materials.

extrude_facesB

Extrude selected faces of a mesh object (must be in edit mode).

Args: object_name: Object name. distance: Extrusion distance (0 for manual manipulation).

Inputs: object_name (required), distance.

find_duplicatesB

Find duplicate vertices within a distance threshold.

Args: object_name: Target object. distance: Distance threshold for duplicate detection.

Inputs: object_name (required), distance.

fix_mesh_defectsC

Automatically fix common mesh defects.

Args: object_name: Target object. fix_manifold: Fix non-manifold geometry. merge_distance: Distance for merging duplicate vertices.

Inputs: object_name (required), fix_manifold, merge_distance.

flip_normalsC

Flip normals of selected faces.

Args: object_name: Object name.

Inputs: object_name (required).

get_custom_propertyC

Read a custom property from an object or bone.

Args: object_name: Target object. bone_name: Target bone. armature_name: Armature containing the bone. property_name: Name of the custom property.

Inputs: bone_name, object_name, armature_name, property_name.

get_local_transformsC

Get the local (parent-relative) transforms of an object.

Args: name: Object name.

Inputs: name (required).

get_mesh_statisticsC

Get detailed mesh statistics: vertex/edge/face counts, triangle count, ngon count, volume, surface area, bounding box dimensions.

Inputs: object_name (required).

get_object_infoB

Get detailed information about a specific object: transforms, mesh stats, materials, modifiers, constraints, vertex groups, and shape keys.

Args: name: Name of the object to inspect.

Inputs: name (required).

get_render_previewA

Quick low-sample render preview for fast iteration.

Args: width: Preview width. height: Preview height. samples: Number of render samples (lower = faster, less quality).

Inputs: width, height, samples.

get_scene_diffA

Compare two scenes and list differences.

Args: filepath_a: First .blend file (current if empty). filepath_b: Second .blend file (must be specified).

Inputs: filepath_a, filepath_b.

get_scene_for_modelA

Get scene info tailored to the model's context size.

Args: complexity: compact (~200 tokens for weak models), standard (~500 tokens for most models), detailed (~2000 tokens for large models).

Inputs: complexity.

get_scene_infoA

Get comprehensive scene information: objects, hierarchy, frame range, render settings.

Returns scene name, active object, object count with type breakdown, full object list with transforms, collection hierarchy, and render config.

Inputs: no named parameters.

get_scene_summaryA

Get an ultra-compact scene summary (~200 tokens) for weak LLMs.

Returns: object count, types, materials, camera, lights, render engine. Designed to fit in small context windows while providing actionable info.

Inputs: no named parameters.

get_uv_infoC

Get UV mapping information: island count, UV bounds, stretch stats.

Args: object_name: Target object.

Inputs: object_name (required).

get_viewport_infoA

Get current viewport state: active camera, shading mode, view matrix, cursor position.

Inputs: no named parameters.

get_viewport_screenshotA

Take a high-quality viewport screenshot using GPU offscreen rendering.

Args: filepath: Path to save the PNG. If empty, returns base64 only. width: Output width in pixels. height: Output height in pixels. include_overlays: Include viewport overlays (grid, outlines, etc.). camera_view: Render from the active camera's perspective. render_engine: Override render engine ('BLENDER_EEVEE', 'BLENDER_CYCLES', 'BLENDER_WORKBENCH').

Inputs: width, height, filepath, camera_view, +2 more.

get_viewport_screenshot_comparisonA

Take two viewport screenshots: one from user view, one from camera view.

Useful for verifying scene composition and camera framing.

Returns: user_view: Base64 PNG from the user's current viewport perspective. camera_view: Base64 PNG from the active camera's perspective.

Inputs: width, height.

go_to_frameC

Jump to a specific frame in the timeline.

Args: frame: Frame number.

Inputs: frame.

import_fileB

Import a 3D model file.

Args: filepath: Path to the file to import. file_type: FBX, OBJ, GLTF, GLB, STL, USD, PLY, ABC, etc. (auto-detected from extension if empty).

Inputs: filepath (required), file_type.

inset_facesC

Inset selected faces of a mesh.

Args: object_name: Object name. thickness: Inset thickness. use_boundary: Also inset boundary edges.

Inputs: object_name (required), thickness, use_boundary.

join_objectsB

Join multiple objects into a single mesh.

Args: names: List of object names to join. First object becomes the active.

Inputs: names (required).

limited_dissolveC

Dissolve geometry based on angle threshold.

Args: object_name: Target object. angle_limit: Angle threshold in radians.

Inputs: object_name (required), angle_limit.

list_collectionsA

List all collections with their objects and hierarchy.

Inputs: no named parameters.

list_lightsA

List all lights in the scene with their types, positions, and energy values.

Inputs: no named parameters.

list_materialsA

List all materials in the current blend file with their names and usage counts.

Inputs: no named parameters.

list_objectsA

List all objects in the scene with their types, locations, and visibility.

Args: object_type: Filter by type: ALL, MESH, CURVE, LIGHT, CAMERA, ARMATURE, EMPTY, etc. include_hidden: If True, include hidden objects. collection: Optional collection name to filter by.

Inputs: collection, object_type, include_hidden.

list_open_scenesA

List all currently open .blend files and their status.

Inputs: no named parameters.

loop_cutC

Add loop cuts to a mesh.

Args: object_name: Object name. number_cuts: Number of cuts. axis: X, Y, or Z axis.

Inputs: object_name (required), axis, number_cuts.

merge_blend_fileB

Merge objects from another .blend file into the current scene.

Args: filepath: Path to the .blend file to merge. merge_method: 'append' (linked), 'link', or 'import' (direct copy).

Inputs: filepath (required), merge_method.

merge_verticesC

Merge vertices by distance (remove doubles).

Args: object_name: Object name. distance: Merge distance threshold.

Inputs: object_name (required), distance.

move_objectA

Move an object by delta in world or local space.

Args: name: Object name. x, y, z: Translation delta. space: WORLD or LOCAL.

Inputs: name (required), x, y, z, +1 more.

move_to_collectionC

Move an object to a different collection.

Args: object_name: Object to move. collection_name: Target collection.

Inputs: object_name (required), collection_name (required).

new_sceneB

Create a new scene within the current .blend file.

Args: name: Scene name. If empty, auto-generates one. copy_settings: Copy settings from current scene.

Inputs: name, copy_settings.

open_blend_fileC

Open a .blend file.

Args: filepath: Path to the .blend file. use_scripts: Whether to load linked scripts.

Inputs: filepath (required), use_scripts.

parent_bone_to_objectA

Parent an object to a bone (for rigging).

Args: armature_name: Target armature. bone_name: Bone to parent to. object_name: Object to parent.

Inputs: bone_name (required), object_name (required), armature_name (required).

parent_objectsB

Set parent-child relationship between objects.

Args: child: Name of the child object. parent: Name of the parent object. keep_transform: If True, maintain the child's current world transform.

Inputs: child (required), parent (required), keep_transform.

reassign_material_slotA

Reassign all faces from one material slot to another.

Useful for replacing one material with another across the entire mesh.

Args: object_name: Target mesh object. from_slot: Source material slot index. to_slot: Destination material slot index.

Inputs: to_slot (required), from_slot (required), object_name (required).

recalculate_normalsB

Recalculate normals of a mesh.

Args: object_name: Object name. outside: If True, normals point outward.

Inputs: object_name (required), outside.

remesh_sculptB

Remesh the active object for sculpting.

Args: mode: VOXEL or SMOOTH. voxel_size: Voxel size for voxel remesh. smooth_iterations: Smooth iterations for smooth remesh.

Inputs: mode, voxel_size, smooth_iterations.

remove_markerA

Remove a timeline marker.

Args: marker_name: Name of the marker to remove.

Inputs: marker_name (required).

remove_modifierB

Remove a modifier from an object.

Args: object_name: Target object. modifier_name: Name of the modifier to remove.

Inputs: object_name (required), modifier_name (required).

remove_object_constraintB

Remove a constraint from an object.

Args: object_name: Target object. constraint_name: Name of the constraint to remove.

Inputs: object_name (required), constraint_name (required).

remove_shape_keyB

Remove a shape key from an object.

Args: object_name: Target mesh object. key_name: Name of the shape key to remove.

Inputs: key_name (required), object_name (required).

rename_objectB

Rename an object.

Args: name: Current name of the object. new_name: New name for the object.

Inputs: name (required), new_name (required).

render_animationC

Render an animation sequence.

Args: output_path: Output directory path. frame_start: First frame. frame_end: Last frame. engine: Render engine.

Inputs: engine, frame_end, frame_start, output_path.

render_imageB

Render the current scene to an image file.

Args: output_path: File path for the rendered image. If empty, uses temp file. resolution_x: Output width. resolution_y: Output height. samples: Render samples. engine: BLENDER_EEVEE, CYCLES, or BLENDER_WORKBENCH.

Inputs: engine, samples, output_path, resolution_x, +1 more.

render_previewB

Quick preview render for visual feedback loops.

Args: quality: LOW (320x240), MEDIUM (800x600), HIGH (1920x1080).

Inputs: quality.

reorder_modifierA

Move a modifier to a specific position in the stack.

Args: object_name: Target object. modifier_name: Modifier to move. new_index: Target position (0-based).

Inputs: new_index (required), object_name (required), modifier_name (required).

rotate_objectB

Rotate an object by delta radians in world or local space.

Args: name: Object name. x, y, z: Rotation delta in radians. space: WORLD or LOCAL.

Inputs: name (required), x, y, z, +1 more.

run_operatorB

Execute a bpy.ops operator by name.

Args: operator_name: Full operator name (e.g., 'mesh.primitive_cube_add'). params: Optional dict of operator parameters (e.g., {'size': 2, 'location': [0,0,0]}).

Inputs: operator_name (required), params.

save_blend_fileA

Save the current .blend file.

Args: filepath: Save path. If empty, saves to current location. copy: If True, save as copy (don't overwrite original).

Inputs: copy, filepath.

scale_objectA

Scale an object by factors, or set absolute scale.

Args: name: Object name. x, y, z: Scale factors (1.0 = no change). Used when scale is not given. scale: Optional [sx, sy, sz] — sets the scale absolutely instead of multiplying.

Inputs: name (required), x, y, z, +1 more.

select_objectsA

Select one or more objects by name.

Args: names: List of object names to select. replace: If True, deselect all others first.

Inputs: names (required), replace.

separate_by_looseC

Separate a mesh into disconnected parts.

Args: object_name: Object to separate.

Inputs: object_name (required).

separate_by_materialB

Separate a mesh object into parts by material assignment.

Args: object_name: Object to separate.

Inputs: object_name (required).

set_animation_cyclicB

Make an object's animation loop cyclically.

Args: object_name: Target object. cyclic: True to loop, False to stop.

Inputs: object_name (required), cyclic.

set_animation_rangeB

Set the animation playback range.

Args: start_frame: Start frame. end_frame: End frame. frame_step: Step between frames.

Inputs: end_frame, frame_step, start_frame.

set_bezier_easingA

Set bezier interpolation with auto-clamped handles on all keyframes.

Produces smooth ease-in and ease-out on every keyframe of the object.

Args: object_name: Target object.

Inputs: object_name (required).

set_camera_framingA

Adjust camera position relative to a target without recreating it.

Useful for re-framing or adjusting composition.

Args: camera_name: Camera to adjust. target_name: Object to frame. distance: New distance from target. height_offset: New height offset. angle_offset: New horizontal angle.

Inputs: distance, camera_name, target_name, angle_offset, +1 more.

set_camera_to_viewA

Position camera to frame the current viewport or a specific object.

Args: name: Camera name (empty = active camera). target_name: Object to frame (empty = all visible). distance: Distance from target.

Inputs: name, distance, target_name.

set_collection_visibilityC

Toggle collection visibility in viewport.

Args: collection_name: Collection name. visible: Show or hide.

Inputs: collection_name (required), visible.

set_curve_fillB

Set curve fill mode.

Args: curve_name: Curve object name. fill: FULL, HALF, or NONE.

Inputs: curve_name (required), fill.

set_custom_normalsB

Set custom split normals for precise shading control.

Args: object_name: Target mesh object. normals: List of [x, y, z] normal vectors (one per loop). angle: Auto-smooth angle in radians.

Inputs: object_name (required), angle, normals.

set_custom_propertyA

Set a custom property on an object or bone.

Custom properties store user-defined data — useful for rig controls, material parameters, animation drivers, or any metadata.

Args: object_name: Target object (or empty if using bone). bone_name: Target bone (with armature_name). armature_name: Armature containing the bone. property_name: Name of the custom property. value: Property value. min_value: Minimum allowed value. max_value: Maximum allowed value. description: Property description.

Inputs: value, bone_name, max_value, min_value, +4 more.

set_fpsB

Set the scene frame rate.

Args: fps: Frames per second (1-1000).

Inputs: fps.

set_interpolationB

Set keyframe interpolation mode for an object's animation.

Args: object_name: Target object. interpolation: CONSTANT, LINEAR, BEZIER, etc. easing: AUTO, EASE_IN, EASE_OUT, EASE_IN_OUT.

Inputs: object_name (required), easing, interpolation.

set_keyframeC

Insert keyframes for an object.

Args: object_name: Target object. frame: Frame number (None = current frame). location: Keyframe location. rotation: Keyframe rotation. scale: Keyframe scale. property_name: Optional custom property to keyframe.

Inputs: object_name (required), frame, scale, location, +2 more.

set_material_propertyB

Set a property on a material's Principled BSDF node.

Args: material_name: Target material. property_name: Node input name (e.g., 'Base Color', 'Metallic', 'Roughness'). value: The value to set.

Inputs: value (required), material_name (required), property_name (required).

set_object_transformA

Set world/local transform of an object. Only provided channels are modified.

Args: name: Object name. location: [x, y, z] position. rotation: [x, y, z] Euler rotation in radians. scale: [x, y, z] scale factors. space: WORLD or LOCAL coordinate space.

Inputs: name (required), scale, space, location, +1 more.

set_object_visibilityB

Set object viewport and/or render visibility.

Args: name: Object name. visible: Viewport visibility. hide_render: Render visibility.

Inputs: name (required), visible, hide_render.

set_originB

Set the origin of an object.

Args: name: Object name. origin_type: GEOMETRY, CURSOR, CENTER_OF_MASS, or CENTER_OF_VOLUME.

Inputs: name (required), origin_type.

set_scene_propertyB

Set a scene-level property (e.g., frame_start, frame_end, fps, render_engine).

Args: property_name: The property to set (e.g., 'frame_start', 'render_resolution_x'). value: The value to set.

Inputs: value (required), property_name (required).

set_sculpt_symmetryB

Configure sculpt symmetry settings.

Args: axis_x: Mirror on X axis. axis_y: Mirror on Y axis. axis_z: Mirror on Z axis. mirror: Enable mirroring.

Inputs: axis_x, axis_y, axis_z, mirror.

set_shader_node_valueB

Set the value of a shader node input.

Args: material_name: Target material. node_name: Node name/label. value: Value to set.

Inputs: value (required), node_name (required), material_name (required).

set_shape_key_valueB

Set the value of a shape key to control morphing.

Args: object_name: Target mesh object. key_name: Name of the shape key. value: Morph value (0.0 = base, 1.0 = full morph).

Inputs: key_name (required), object_name (required), value.

set_studio_worldC

Set world background for studio environment.

Args: strength: Background strength (0.1 = subtle, 1.0 = bright). color: RGB background color.

Inputs: color, strength.

setup_camera_track_toA

Make a camera always point at a target object (Track To constraint).

Args: camera_name: Camera to constrain. target_name: Object to track.

Inputs: camera_name (required), target_name (required).

setup_compositorC

Set up compositing nodes for post-processing.

Creates Render Layers → [custom nodes] → Composite + Viewer.

Args: nodes: List of node dicts: [{"type": "CompositorNodeGlare", "settings": {"glare_type": "FOG_GLOW"}}]

Inputs: nodes.

setup_hdri_lightingB

Set up HDRI environment lighting.

Args: hdri_path: Path to HDRI file. If empty, uses a default gradient. strength: Environment strength. rotation: Rotation in radians.

Inputs: rotation, strength, hdri_path.

setup_ik_chainC

Set up an IK (Inverse Kinematics) chain.

Args: armature_name: Target armature. chain_bones: List of bone names in the chain. pole_target: Pole target object name.

Inputs: chain_bones (required), armature_name (required), pole_target.

setup_studio_3pointA

Set up 3-point studio lighting (key, fill, rim).

Works for products, characters, environments, portraits. Removes existing lights and creates optimized area lights.

Args: key_energy: Key light power in watts. fill_energy: Fill light power (typically 1/3 of key). rim_energy: Rim/back light power (typically 1/2 of key). key_color: RGB key light color. fill_color: RGB fill light color. rim_color: RGB rim light color. key_position: [x,y,z] position for key light. fill_position: [x,y,z] position for fill light. rim_position: [x,y,z] position for rim light. remove_existing: Remove existing lights first.

Inputs: key_color, rim_color, fill_color, key_energy, +6 more.

setup_studio_cameraA

Set up camera for studio rendering of any subject.

Positions camera at 3/4 angle (front + side visible), slightly above eye level. Uses 85-100mm focal length for natural proportions. f/8 for full sharpness, f/2.8 for bokeh.

Works for products, characters, environments, portraits, anything.

Args: target_name: Object to point camera at (empty = world origin). camera_name: Name for the camera object. focal_length: Lens focal length in mm (85-100 recommended). fstop: Aperture f-stop (8-11 for full sharpness, 2.8 for bokeh). distance: Camera distance from target in meters. height_offset: Camera height above target (0 = eye level). angle_offset: Horizontal angle (0 = front, 1 = side).

Inputs: fstop, distance, camera_name, target_name, +3 more.

setup_studio_lightingC

Set up preset studio lighting configurations.

Args: style: STUDIO, PORTRAIT, PRODUCT, DRAMATIC, or SOFT. key_energy: Key light power.

Inputs: style, key_energy.

setup_subdivision_animationC

Animate a subdivision surface modifier's viewport levels.

Args: object_name: Target object. modifier_name: Name of the subdivision modifier. start_level: Starting subdivision level. end_level: Ending subdivision level. start_frame: Start frame. end_frame: End frame.

Inputs: object_name (required), end_frame, end_level, start_frame, +2 more.

setup_turntable_cameraB

Set up a turntable camera animation (360-degree orbit).

Args: name: Camera name. target: [x, y, z] point to orbit around. distance: Orbit radius. height: Camera height. frames: Number of frames for one revolution.

Inputs: name, frames, height, target, +1 more.

setup_world_sky_textureB

Set up a procedural sky texture in the world environment.

Args: sky_type: NISHITA (physical sky), PREETHAM, or HOSEK_WILKIE. strength: Background strength. sun_elevation: Sun angle above horizon in degrees. sun_rotation: Sun rotation around zenith in degrees. air_density: Air density (NISHITA only). dust_density: Dust density (NISHITA only). ozone_density: Ozone density (NISHITA only).

Inputs: sky_type, strength, air_density, dust_density, +3 more.

set_vertex_colorA

Set color on vertices/loops of a color attribute.

Args: object_name: Target mesh object. attribute_name: Name of the color attribute. color: RGBA color [R, G, B, A] (0-1). indices: Specific loop/vertex indices to color. None = all.

Inputs: object_name (required), color, indices, attribute_name.

set_viewport_cameraC

Set the active viewport camera.

Args: camera_name: Camera to use. Empty string = auto.

Inputs: camera_name.

set_viewport_shadingC

Set viewport shading mode.

Args: mode: WIREFRAME, SOLID, MATERIAL, or RENDERED.

Inputs: mode.

shade_objectC

Set shading mode for an object.

Args: name: Object name. shading: FLAT or SMOOTH.

Inputs: name (required), shading.

smooth_verticesB

Smooth selected vertices.

Args: object_name: Target object. factor: Smoothing factor (0-1). iterations: Number of smoothing iterations.

Inputs: object_name (required), factor, iterations.

snap_to_cursorC

Snap an object's origin to the 3D cursor or a specific location.

Args: name: Object name. cursor_location: Optional [x, y, z] to set cursor first.

Inputs: name (required), cursor_location.

subdivide_meshB

Subdivide selected mesh geometry.

Args: object_name: Object name. cuts: Number of subdivision cuts. smooth: Smooth factor (0-1).

Inputs: object_name (required), cuts, smooth.

suggest_next_stepA

Analyze the current scene and suggest the next logical step.

Returns 1-3 concrete suggestions based on what's in the scene, what's missing, and common 3D workflows. Helps weak models stay on track without requiring them to plan ahead.

Inputs: no named parameters.

switch_sceneC

Switch to a different scene within the current .blend file.

Args: scene_name: Name of the scene to switch to.

Inputs: scene_name (required).

toggle_overlaysA

Toggle viewport overlays (grid, axes, selection outlines).

Args: show: True to show overlays, False to hide.

Inputs: show.

tri_to_quadC

Convert triangles to quads.

Args: object_name: Target object. angle_limit: Angle limit in radians.

Inputs: object_name (required), angle_limit.

uv_pack_islandsB

Pack UV islands to fill the UV space efficiently.

Args: object_name: Target object. margin: Margin between islands. rotate: Allow islands to rotate.

Inputs: object_name (required), margin, rotate.

uv_project_from_viewC

Project UVs from the current view or a specific direction.

Args: object_name: Target object. aspect_ratio: [width, height] aspect ratio. direction: VIEW, TOP, FRONT, or SIDE.

Inputs: object_name (required), direction, aspect_ratio.

uv_select_islandC

Select a UV island by index.

Args: object_name: Target object. island_index: Island index to select.

Inputs: object_name (required), island_index.

uv_smart_projectC

Smart UV project unwrap.

Args: object_name: Target mesh object. angle_limit: Angle limit in degrees. island_margin: Margin between islands.

Inputs: object_name (required), angle_limit, island_margin.

uv_unwrapC

UV unwrap selected faces.

Args: object_name: Target object. method: ANGLE_BASED or CONFORMAL.

Inputs: object_name (required), method.

wizard_archviz_interiorA

Create a complete architectural interior room in one call.

Sets up: walls, floor, ceiling, windows, door, furniture, materials, lighting, camera, and render settings. Fully furnished.

Args: room_width: Room width in meters. room_depth: Room depth in meters. room_height: Ceiling height in meters. wall_color: [R, G, B] wall paint color. floor_color: [R, G, B] floor color (wood tone). style: modern, minimalist, industrial, cozy, or scandinavian. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Where to save the render.

Inputs: style, render, samples, room_depth, +5 more.

wizard_batch_materialsA

Assign materials to multiple objects in one call.

Each assignment: {"object": "name", "material": "mat_name", "color": [r,g,b]} Creates materials if they don't exist.

Args: assignments: List of assignment dicts with object, material, and optional color.

Inputs: assignments (required).

wizard_character_basemeshA

Create a character basemesh with rig in one call.

Full body with correct proportions, edge loops at joints, mirror modifier. Optional humanoid armature with IK.

Args: height: Character height in meters. Default: 1.75m (average human). style: humanoid, creature, robot, or cartoon. gender: male, female, or neutral. subdivisions: Subdivision surface levels (0-3). add_armature: Whether to add a basic humanoid armature. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Optional file to save the .blend.

Inputs: style, gender, height, render, +4 more.

wizard_environmentA

Create a complete natural environment in one call.

Generates: terrain, vegetation, sky, lighting, and camera.

Args: env_type: forest, desert, ocean, mountain, meadow, or city. time_of_day: day, sunset, night, or dawn. density: Vegetation/object density (0-1). terrain_size: Terrain dimensions in meters. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Optional file to save the .blend.

Inputs: render, density, samples, env_type, +3 more.

wizard_material_presetA

Apply a complete PBR material preset to an object in one call.

Pre-configured recipes for common materials with correct roughness, metallic, and subsurface values.

Args: object_name: Target object. preset: metal, chrome, gold, wood, glass, plastic, concrete, fabric, leather, rubber, ceramic, marble, skin, emissive. color: Override base color [R, G, B]. None = preset default.

Inputs: object_name (required), color, preset.

wizard_product_shotA

Create a complete product photography scene in one call.

Sets up: product object, backdrop, 3-point lighting, camera, materials, render settings, and renders a preview. One tool call = finished shot.

Args: product_type: cube, sphere, cylinder, cone, torus, or a .glb/.obj/.fbx path product_color: [R, G, B] base color (0-1). Default: white. background_color: [R, G, B] backdrop color. Default: light gray. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Where to save the render. Empty = temp file.

Inputs: render, samples, output_path, product_type, +2 more.

wizard_quick_sceneA

Build a scene from a natural language description in one call.

Parses the description and creates objects, materials, lighting, and camera to match. Works best with simple, clear descriptions.

Args: description: Plain English description of the scene. render: Whether to render (CPU-heavy). Keep False for scene building. samples: Render samples if render=True (16-32 for preview). output_path: Where to save the render.

Inputs: render, samples, description, output_path.

wizard_scene_optimizeA

Optimize the entire scene for export or rendering in one call.

Applies modifiers, removes doubles, fixes normals, decimates if needed.

Args: apply_modifiers: Apply all modifiers on all mesh objects. merge_by_distance: Merge distance for doubles removal. 0 = skip. remove_loose: Remove loose vertices/edges. recalculate_normals: Recalculate all normals outward. decimate_ratio: Decimation ratio (0 = skip, 0.5 = halve poly count).

Inputs: remove_loose, decimate_ratio, apply_modifiers, merge_by_distance, +1 more.

wizard_studio_renderA

Create a professional studio render setup in one call.

Complete scene: subject, backdrop, lighting rig, camera, render settings. Multiple style presets available.

Args: subject_type: cube, sphere, cylinder, torus, or a file path (.glb/.obj/.fbx) subject_color: [R, G, B] subject color. preset: studio, portrait, dramatic, soft, or rim. resolution: LOW (800x600), MEDIUM (1920x1080), HIGH (3840x2160). render: Whether to render (CPU-heavy). Keep False for setup only. samples: Render samples if render=True (16-32 for preview). output_path: Where to save the render.

Inputs: preset, render, samples, resolution, +3 more.

wizard_turntableA

Create a turntable animation around the scene or a specific object.

Sets up camera orbit, lighting, and renders if requested.

Args: target_object: Object to orbit around. Empty = world origin. frames: Number of frames for full rotation. height: Camera height above target. distance: Camera distance from target. render: Whether to render the animation. output_path: Output directory for rendered frames.

Inputs: frames, height, render, distance, +2 more.

wizard_uv_unwrap_allA

UV unwrap all mesh objects in the scene in one call.

Smart project or lightmap unwrap for every mesh, with island packing.

Args: method: smart or lightmap. margin: UV island margin (0-1). fix_islands: Auto-fix flipped and overlapping islands.

Inputs: margin, method, fix_islands.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 209 tools

    Disambiguation2/5

    With 209 tools, there are many overlapping capabilities such as multiple render/screenshot tools (get_render_preview, render_preview, get_viewport_screenshot, get_viewport_screenshot_comparison), multiple material configuration tools (create_material, wizard_material_preset, configure_display_material, etc.), and multiple transform tools (set_object_transform, move_object, rotate_object, scale_object). While descriptions are detailed, the sheer volume makes tool selection error-prone, and some tools are nearly identical in purpose.

    Naming Consistency4/5

    Naming is largely consistent with a verb_noun pattern (e.g., create_object, delete_object, set_object_transform) and common prefixes like batch_, wizard_, setup_, and list_. A few outliers such as suggest_next_step and auto_scene_report break the pattern, but overall naming is predictable and follows clear conventions.

    Tool Count1/5

    209 tools is far beyond the typical well-scoped server (3-15 tools). Even for a complex application like Blender, this is excessive and will overwhelm agents, making tool selection costly and error-prone. The count severely impacts usability and efficiency.

    Completeness5/5

    The server covers an extensive range of Blender functionality: object lifecycle, transforms, materials, lighting, camera, animation, physics, sculpting, UV, geometry nodes, modifiers, constraints, collections, importing/exporting, and rendering. There are few obvious gaps, and many wizards provide high-level workflows, ensuring agents have all necessary operations.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers