Blender MCP Ultra
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. |
| delete_keyframeA | Delete keyframes at a specific frame or all keyframes. Args: object_name: Target object. frame: Frame to delete (None = all keyframes). |
| 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. |
| set_animation_rangeB | Set the animation playback range. Args: start_frame: Start frame. end_frame: End frame. frame_step: Step between frames. |
| set_fpsB | Set the scene frame rate. Args: fps: Frames per second (1-1000). |
| go_to_frameC | Jump to a specific frame in the timeline. Args: frame: Frame number. |
| 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. |
| 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. |
| create_armatureC | Create a new armature object. Args: name: Armature name. location: [x, y, z] position. |
| 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). |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| batch_delete_objectsB | Delete multiple objects in one call. Args: names: List of object names to delete. |
| 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. |
| 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. |
| 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. |
| batch_renameA | Rename multiple objects in one call. Each entry: {"old": "OldName", "new": "NewName"} Args: renames: List of rename dicts. |
| 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. |
| 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. |
| 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. |
| batch_set_originB | Set origins for multiple objects in one call. Each entry: {"name": "Obj", "origin_type": "GEOMETRY"} Args: origins: List of origin dicts. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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'. |
| 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]}). |
| create_collectionB | Create a new collection. Args: name: Collection name. parent: Parent collection name (empty = root). |
| delete_collectionA | Delete a collection. Args: name: Collection name. keep_objects: If True, move objects to the scene collection first. |
| move_to_collectionC | Move an object to a different collection. Args: object_name: Object to move. collection_name: Target collection. |
| set_collection_visibilityC | Toggle collection visibility in viewport. Args: collection_name: Collection name. visible: Show or hide. |
| list_collectionsA | List all collections with their objects and hierarchy. |
| 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. |
| 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. |
| 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). |
| set_curve_fillB | Set curve fill mode. Args: curve_name: Curve object name. fill: FULL, HALF, or NONE. |
| 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. |
| 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). |
| 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. |
| 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. |
| export_glbB | Export to glTF binary (GLB) format. Args: filepath: Output path. selected_only: Only export selected. export_materials: Include materials. |
| export_objC | Export to OBJ format. Args: filepath: Output path. selected_only: Only export selected. export_materials: Include MTL file. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| setup_studio_lightingC | Set up preset studio lighting configurations. Args: style: STUDIO, PORTRAIT, PRODUCT, DRAMATIC, or SOFT. key_energy: Key light power. |
| list_lightsA | List all lights in the scene with their types, positions, and energy values. |
| 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). |
| 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. |
| delete_materialC | Remove material from an object's slot. Args: object_name: Target object. slot: Material slot index. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| list_materialsA | List all materials in the current blend file with their names and usage counts. |
| 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. |
| 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). |
| 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). |
| create_vertex_groupC | Create a new vertex group on a mesh object. Args: object_name: Target object. group_name: Name for the vertex group. |
| 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). |
| separate_by_materialB | Separate a mesh object into parts by material assignment. Args: object_name: Object to separate. |
| separate_by_looseC | Separate a mesh into disconnected parts. Args: object_name: Object to separate. |
| smooth_verticesB | Smooth selected vertices. Args: object_name: Target object. factor: Smoothing factor (0-1). iterations: Number of smoothing iterations. |
| tri_to_quadC | Convert triangles to quads. Args: object_name: Target object. angle_limit: Angle limit in radians. |
| limited_dissolveC | Dissolve geometry based on angle threshold. Args: object_name: Target object. angle_limit: Angle threshold in radians. |
| 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. |
| get_mesh_statisticsC | Get detailed mesh statistics: vertex/edge/face counts, triangle count, ngon count, volume, surface area, bounding box dimensions. |
| check_production_readinessA | Full production readiness audit: manifold geometry, UV maps, materials, naming conventions, origin alignment. Returns a score 0-100 with detailed breakdown. |
| find_duplicatesB | Find duplicate vertices within a distance threshold. Args: object_name: Target object. distance: Distance threshold for duplicate detection. |
| 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. |
| 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). |
| 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. |
| apply_modifierC | Apply (bake) a modifier into the mesh. Args: object_name: Target object. modifier_name: Name of the modifier to apply. |
| remove_modifierB | Remove a modifier from an object. Args: object_name: Target object. modifier_name: Name of the modifier to remove. |
| 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). |
| 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. |
| 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). |
| inset_facesC | Inset selected faces of a mesh. Args: object_name: Object name. thickness: Inset thickness. use_boundary: Also inset boundary edges. |
| bevel_edgesB | Bevel selected edges of a mesh. Args: object_name: Object name. width: Bevel width. segments: Number of segments (1 = flat bevel). |
| loop_cutC | Add loop cuts to a mesh. Args: object_name: Object name. number_cuts: Number of cuts. axis: X, Y, or Z axis. |
| subdivide_meshB | Subdivide selected mesh geometry. Args: object_name: Object name. cuts: Number of subdivision cuts. smooth: Smooth factor (0-1). |
| merge_verticesC | Merge vertices by distance (remove doubles). Args: object_name: Object name. distance: Merge distance threshold. |
| flip_normalsC | Flip normals of selected faces. Args: object_name: Object name. |
| recalculate_normalsB | Recalculate normals of a mesh. Args: object_name: Object name. outside: If True, normals point outward. |
| list_open_scenesA | List all currently open .blend files and their status. |
| open_blend_fileC | Open a .blend file. Args: filepath: Path to the .blend file. use_scripts: Whether to load linked scripts. |
| 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). |
| 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. |
| switch_sceneC | Switch to a different scene within the current .blend file. Args: scene_name: Name of the scene to switch to. |
| delete_sceneC | Delete a scene from the current .blend file. Args: scene_name: Name of the scene to delete. |
| 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). |
| 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). |
| 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. |
| delete_objectB | Delete an object by name. Args: name: Name of the object to delete. |
| duplicate_objectC | Duplicate an object with all its data. Args: name: Name of the object to duplicate. new_name: Optional name for the duplicate. |
| rename_objectB | Rename an object. Args: name: Current name of the object. new_name: New name for the object. |
| select_objectsA | Select one or more objects by name. Args: names: List of object names to select. replace: If True, deselect all others first. |
| set_object_visibilityB | Set object viewport and/or render visibility. Args: name: Object name. visible: Viewport visibility. hide_render: Render visibility. |
| 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. |
| join_objectsB | Join multiple objects into a single mesh. Args: names: List of object names to join. First object becomes the active. |
| set_originB | Set the origin of an object. Args: name: Object name. origin_type: GEOMETRY, CURSOR, CENTER_OF_MASS, or CENTER_OF_VOLUME. |
| 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.). |
| shade_objectC | Set shading mode for an object. Args: name: Object name. shading: FLAT or SMOOTH. |
| 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). |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| delete_physicsC | Remove all physics from an object. Args: object_name: Target object. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| render_animationC | Render an animation sequence. Args: output_path: Output directory path. frame_start: First frame. frame_end: Last frame. engine: Render engine. |
| render_previewB | Quick preview render for visual feedback loops. Args: quality: LOW (320x240), MEDIUM (800x600), HIGH (1920x1080). |
| 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. |
| 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. |
| 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. |
| 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. |
| create_sceneB | Create a new scene. Args: name: Name for the new scene. copy_current: If True, copy the current scene's settings. |
| 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. |
| 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. |
| enter_sculpt_modeB | Enter sculpt mode on an object. Args: object_name: Object to sculpt. Empty = active object. |
| exit_sculpt_modeA | Exit sculpt mode and return to object mode. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| get_local_transformsC | Get the local (parent-relative) transforms of an object. Args: name: Object name. |
| 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. |
| 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. |
| uv_smart_projectC | Smart UV project unwrap. Args: object_name: Target mesh object. angle_limit: Angle limit in degrees. island_margin: Margin between islands. |
| uv_unwrapC | UV unwrap selected faces. Args: object_name: Target object. method: ANGLE_BASED or CONFORMAL. |
| 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. |
| 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. |
| uv_select_islandC | Select a UV island by index. Args: object_name: Target object. island_index: Island index to select. |
| get_uv_infoC | Get UV mapping information: island count, UV bounds, stretch stats. Args: object_name: Target object. |
| get_viewport_infoA | Get current viewport state: active camera, shading mode, view matrix, cursor position. |
| set_viewport_shadingC | Set viewport shading mode. Args: mode: WIREFRAME, SOLID, MATERIAL, or RENDERED. |
| set_viewport_cameraC | Set the active viewport camera. Args: camera_name: Camera to use. Empty string = auto. |
| toggle_overlaysA | Toggle viewport overlays (grid, axes, selection outlines). Args: show: True to show overlays, False to hide. |
| 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'). |
| 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. |
| 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). |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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). |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| set_animation_cyclicB | Make an object's animation loop cyclically. Args: object_name: Target object. cyclic: True to loop, False to stop. |
| 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. |
| 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). |
| 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. |
| 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. |
| set_studio_worldC | Set world background for studio environment. Args: strength: Background strength (0.1 = subtle, 1.0 = bright). color: RGB background color. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| remove_object_constraintB | Remove a constraint from an object. Args: object_name: Target object. constraint_name: Name of the constraint to remove. |
| 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. |
| 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). |
| 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. |
| 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. |
| 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. |
| 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). |
| remove_markerA | Remove a timeline marker. Args: marker_name: Name of the marker to remove. |
| 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). |
| 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. |
| 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. |
| 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. |
| 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). |
| 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"}}] |
| 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). |
| 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. |
| enter_weight_paintA | Enter weight paint mode for rigging. Args: object_name: Object to paint (empty = active object). |
| enter_vertex_paintB | Enter vertex paint mode. Args: object_name: Object to paint (empty = active object). |
| link_blend_dataA | Link or append data from an external .blend file. Args: filepath: Path to the .blend file. data_type: OBJECT, MESH, MATERIAL, ACTION, or NODE_GROUP. names: List of data block names to link. link: True = linked (updates with source), False = appended (independent copy). |
| 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. |
| 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. |
| 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). |
| 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. |
| 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| modeling_guide | Topology, scale, and mesh workflow reference. |
| lighting_materials_guide | Lighting setups and PBR material recipes. |
| workflow_best_practices | Scene workflow, undo strategy, and common mistakes. |
| render_presets | Render settings for common styles. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_scene_resource | Full scene information: objects, hierarchy, frame range, render engine, FPS. |
| get_objects_resource | List of all objects with name, type, location, and visibility. |
| get_materials_resource | List of all materials with name and user count. |
TDQS
Scored across 209 tools
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 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.
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.
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.