Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TOOLBAG_MCP_NO_FOCUSNoSet to 1 to stop the server from bringing Toolbag to the front for the duration of each call (the plugin only runs while Toolbag has focus, so this is normally left unset).

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
statusA

Toolbag version, graphics adapter, scene path, counts and plugin state (port, Python switch, call counter). Start here: it tells whether the plugin is reachable.

capabilitiesA

Everything the running Toolbag exposes in mset plus the plugin's action list, for version differences between Toolbag builds.

preferences_getB

Toolbag application preferences, all or the given keys (e.g. autoTextureReload, defaultTangentMethod, rayTraceBackend).

preferences_setA

Set one Toolbag application preference (see preferences_get for keys).

scene_infoC

Scene path, unit scale, bounds, object counts by type, bake projects, selection.

scene_newA

New empty scene. Unsaved changes are lost without a prompt. Save a large scene first: Toolbag 5.0.2 has crashed here on big bake scenes.

scene_loadA

Load a .tbscene file. Unsaved changes in the current scene are lost without a prompt; save a large scene first (Toolbag 5.0.2 has crashed tearing big bake scenes down).

scene_saveA

Save the scene to its current file, or to path (save as). Overwrites without asking.

scene_list_objectsB

Flat list of scene objects (uid, name, type, parent, visibility, transform). object_type filters by class: MeshObject, SubMeshObject, BakerObject, BakerTargetObject, LightObject, CameraObject, SkyBoxObject, FogObject, SceneObject (groups). parent restricts to the descendants of one object.

scene_treeB

Object hierarchy as nested nodes, depth levels deep (deeper levels show the child count only). Good first look at an unknown scene.

object_getC

Everything about one object: transform, pivot, bounds, mesh/camera/light settings, submeshes with their materials.

object_findB

Objects whose name contains name (case-insensitive), or equals it with exact.

selection_getC

The currently selected objects.

selection_setC

Select exactly these objects.

selection_clearA

Deselect everything.

object_set_visibleA

Show or hide groups, lights, cameras or bake nodes. Refuses submeshes always and meshes unless allow_mesh is true: in bake scenes those flags corrupt bakes or crash Toolbag on load. For bake scenes use baker_set_visible or baker_isolate.

object_set_transformA

Set position, rotation (degrees), scale or pivot (each three numbers) of a transform object; omitted ones stay.

object_renameC

Rename an object.

object_duplicateB

Duplicate an object with its children; optional name for the copy.

object_deleteC

Delete objects from the scene.

object_groupC

Put objects under a new group, optionally named.

object_set_parentA

Re-parent an object; without parent it moves to the scene root.

scene_import_modelA

Import a model file (FBX, OBJ, glTF, USD, ...) into the scene with the scene's import settings. Returns the imported root and the new objects.

scene_exportA

Export the scene; the format follows the extension: .fbx, .obj, .glb/.gltf, .usd/.usda/.usdc/.usdz, .dae. options are exporter flags such as {"materials": false, "triangulate": true, "embedassets": true}.

scene_boundsB

Bounds of the whole scene as [min_xyz, max_xyz] plus the unit scale.

camera_frameA

Frame one object, or the whole scene without ref, in the current camera.

mesh_set_backfacesA

Show back faces (cull back faces off) on all meshes or the given ones, as a two-sided shader would render them. Per object; lost on re-import.

material_listB

All materials with group, number of assigned objects and the shader per slot.

material_getB

One material in full: each slot (albedo, surface, microsurface, reflectivity, transparency, ...) with shader and field values, textures as path and sRGB flag, and the objects it is assigned to.

material_createB

Create a material with Toolbag's default shaders.

material_duplicateC

Duplicate a material; optional name for the copy.

material_deleteB

Delete a material; its objects fall back to the default material.

material_assignB

Assign a material to objects, by default including their children.

material_set_groupB

Move a material into a material group ('' for none).

material_set_subroutineB

Set the shader of a material slot, e.g. ('transparency', 'Cutout'), ('reflectivity', 'Metalness'), ('surface', 'Normals'). Slots: subdivision, displacement, surface, microsurface, albedo, diffusion, transmission, reflectivity, reflection, clearcoat reflection, clearcoat microsurface, clearcoat reflectivity, occlusion, emissive, transparency, texture. Returns the slot's field names.

material_set_fieldA

Set a number, boolean, enum or color field of a material slot (field names from material_get). For texture fields use material_set_texture.

material_set_textureA

Put an image file into a texture field (e.g. slot 'albedo', field 'Albedo Map'; slot 'surface', field 'Normal Map'). The field is cleared first so a changed file is re-read. srgb and mipmaps default to the previous texture's settings. An empty path clears the field.

material_set_cutoutB

Alpha-tested transparency from a mask image: transparency slot to Cutout, 'Use Albedo Alpha' off, channel (0 = R) and the mask as Alpha Map, re-read from disk.

material_importB

Import a material file (.tbmat, MTL, or named texture files).

material_exportB

Export a material to a .tbmat file.

baker_listB

All bake projects with their groups and output path.

baker_getB

One bake project in full: groups with Low (cage offsets, meshes) and High nodes, settings, maps with options, texture sets, UDIM tiles and the expected output files.

baker_createC

Create a new bake project.

baker_add_groupC

Add an empty bake group (with Low and High nodes) to a bake project.

baker_quick_loadA

Load a model through the Quick Loader: objects named '_low' and '_high' pair into one group per stem. A mismatch leaves a group without High and an empty bake, so check the returned groups.

baker_set_settingsB

Set bake project settings: outputPath, outputWidth, outputHeight, outputBits (8, 16, 32), outputSamples, edgePadding ('None', 'Moderate', 'Extreme'), edgePaddingSize, outputSoften, smoothCage, ignoreBackfaces, useHiddenMeshes, ignoreTransforms, fixMirroredTangents, tileMode (0 single, 1 texture sets, 2 UDIM), geometryMode (0 high to low, 1 low to low, 2 UV match).

baker_set_mapsB

Switch maps on or off by suffix ('normals', 'ao', 'height', 'curvature', 'position', 'thickness', 'bentnormals', ...) and set map options, e.g. {"normals": {"flipY": true}, "ao": {"rayCount": 1024, "ignoreGroups": false}}. Returns the enabled maps.

baker_set_cageC

Cage offsets per bake group (all groups when omitted). estimate lets Toolbag estimate first, explicit min/max then override.

baker_set_visibleB

Show or hide bake groups, or their Low and High nodes separately. The safe way to toggle meshes in a bake scene.

baker_isolateC

Show only these bake groups and hide all others.

baker_bakeB

Bake with the project's current settings and write the enabled maps next to outputPath ('_.'). Synchronous, can take minutes.

baker_bake_psdC

Bake all enabled maps into one layered PSD at the output path.

baker_bake_toA

Trial bake of selected maps (default ['normals']) into a separate file, e.g. 'C:/tmp/test.png' gives 'C:/tmp/test_normals.png', at the given size and samples. The project's settings and map switches are restored afterwards; settings are temporary extras such as {"smoothCage": false}.

baker_map_pathB

Toolbag's own output path for a map by display name ('Normals', 'Ambient Occlusion', 'Height'), optionally for a texture set name or UDIM tile ('1001').

baker_load_presetC

Load a saved baker preset by name.

baker_save_presetB

Save the bake project's configuration as a named preset.

baker_set_texture_setB

Enable and size one texture set by index or name (tileMode 1).

baker_set_udim_tileB

Enable and size one UDIM tile by index or name such as '1001' (tileMode 2).

baker_replace_lowA

Swap the geometry of a group's single low mesh for the mesh in a model file (new UVs, fixed topology) while keeping group, cage and material. Save the scene first if you rely on stored cage directions.

baker_skew_previewA

Edge protect: compute skew masks by edge rule and show them as base colour on the low materials (black = averaged cage, white = corrected). Full correction everywhere except bands along UV seams and open borders (seam_px), hard edges (hard_px) and soft edges bending more than bend_deg degrees (bend_px); widths in bake pixels, 0 switches a band off, soft_px adds a falloff. Nothing is written into the scene: check the look, adjust, then baker_skew_apply. baker_skew_clear_preview restores the materials.

baker_skew_clear_previewA

End the skew mask preview: the low materials get their albedo map and colour back.

baker_skew_applyA

Edge protect: write skew masks by edge rule (see baker_skew_preview, same parameters) into the bake groups. The Python API cannot set skew masks, so the scene is saved as a new file, the masks go into that file and Toolbag loads it. path is that new file (never overwritten); default <scene>_skew.tbscene next to the current scene, which then must have been saved once. The original scene file stays untouched.

object_attributesB

Every plain attribute of an object with its current value, type-specific: light, camera (lens, limits, postEffect expanded), sky, fog, shadow catcher, backdrop, mesh. These are the names object_set_attributes takes.

object_set_attributesA

Set attributes of any object by name: {"brightness": 3, "color": [1, 0.9, 0.8]} for a light, {"lens": {"dofStop": 2.8}} or {"lens.dofStop": 2.8} for a camera, {"density": 0.2} for fog, {"opacity": 0.5} for a shadow catcher.

object_createB

Create a scene object by class: LightObject, CameraObject, FogObject, SkyBoxObject, ShadowCatcherObject, BackdropObject, SceneObject (a group), TransformObject, BakerObject; with optional name, transform, parent and attributes set right away.

light_listA

All lights (sky child lights included) with type, brightness, colour, shadows, shape and transform.

light_createA

Create a light: 'omni', 'spot' or 'directional', with optional transform and attributes such as brightness, color [r, g, b], castShadows, width, lengthX, lengthY, spotAngle, useTemperature, temperature (object_attributes lists what this Toolbag build has; 5.02 has no shape or physical units).

sky_getC

The sky: mode, brightness, rotation, background, procedural sun settings and its child lights.

sky_setB

Set sky attributes: brightness, rotation (degrees), mode ('color', 'sky', 'blurred sky', 'ambient sky'), backgroundColor, blur, and for a procedural sky time, day, latitude, longitude, turbidity, sunBrightness.

sky_loadA

Load a sky: a .tbsky file replaces the whole sky, an image (.hdr, .exr, .png, .jpg) becomes the panorama.

sky_saveC

Save the sky as a .tbsky archive.

sky_set_background_imageB

Use an image as the sky's background; an empty path clears it.

sky_compute_proceduralB

Switch the sky to procedural mode (sun by time, day and location) and recompute it.

fog_getB

The scene's fog with its attributes, or exists: false when there is none.

fog_setA

Set fog attributes (color, density, opacity, volumeType 'fit'/'vertical', heightMin, heightMax, falloffMin, falloffMax); creates the fog object when the scene has none.

camera_listA

All cameras with mode, field of view, focal length and which one is active.

camera_getB

One camera in full (the active one by default): transform, mode, fov, focal length, lens (depth of field, distortion, flares, motion blur), limits and postEffect (tone mapping, exposure, contrast, bloom, vignette, grain).

camera_createA

Create a camera with optional transform and attributes; activate makes it the viewport and render camera.

camera_setA

Set camera attributes (the active camera by default): fov, focalLength, mode, {"lens": {"dofMode": 1, "dofStop": 2.8, "dofFocusDistance": 50}}, {"postEffect": {"toneMappingMode": "aces", "exposure": 1.2, "bloomBrightness": 0.1}}, {"limits": {...}}.

camera_set_activeB

Make a camera the active viewport and render camera.

camera_post_effect_fileB

Load a camera post effect preset from a file, or save the current one (save=true).

render_getB

The render object: options (renderer, ray tracing, shadows, occlusion, wireframe, watermark), image and video output settings (outputPath, format, width, height, samples, transparency), and the cameras and passes enabled for export.

render_setB

Change render settings: options ({"renderer": "raytrace", "rayTraceBounces": 4, "shadowQuality": "High"}), images ({"outputPath": "C:/out", "format": "PNG", "width": 1920, "height": 1080, "samples": 256, "transparency": true}), videos (same keys).

render_set_camerasC

Choose which cameras render on render_images and render_videos.

render_set_passesA

Switch render passes on or off by name (render_get lists them).

render_imageB

Render one image with the active camera (or the given one) using the render object's settings; width, height and sampling default to those settings. With path the file is written (format by extension). Can take minutes with ray tracing.

render_imagesB

Render all enabled cameras and passes into the image output folder (render_get: images.outputPath). Returns the files written.

render_videosC

Render the animation into the video output folder (render_get: videos.outputPath). Can take long.

render_export_viewerC

Export a Marmoset Viewer (.mview) archive of the scene.

timeline_getB

Animation timeline: time, frame, total frames, frame rate, selection, speed.

timeline_setA

Set the timeline: time in seconds or frame, total frames, frame rate (resamples keyframes), selection range, playback speed; play=true/false starts or stops playback.

toolbag_quitA

Quit Toolbag. Unsaved changes are lost without a prompt; the plugin answers and Toolbag closes right after.

execute_pythonA

Run Python inside Toolbag with mset imported; only while the user has ticked "Allow Python execution" in the Toolbag MCP window. The namespace persists between calls; assign result to return a value; print() output comes back as log.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
scene_resourceThe current scene: path, counts, bake projects, selection.
materials_resourceAll materials with their shaders.
baker_resourceThe bake projects of the scene; the single one in full, otherwise the list.
cameras_resourceAll cameras and which one is active.
render_resourceRender options, output settings, cameras and passes.

TDQS

B3.2/5.0

Scored across 93 tools

Disambiguation4/5

Tools are organized into clear domain prefixes (scene_, object_, material_, baker_, camera_, sky_, fog_, render_, timeline_), so most selections are obvious. A few genuine overlaps exist: object_create vs light_create/camera_create, object_set_attributes vs camera_set/sky_set, and scene_list_objects vs object_find vs scene_tree; descriptions mostly disambiguate (e.g. object_set_visible explicitly defers to baker_set_visible/baker_isolate for bake scenes), but the create/attribute-set duplication could still cause misselection.

Naming Consistency4/5

The dominant convention is prefix_noun_verb (material_set_texture, baker_set_maps, camera_set_active), applied consistently across domains. Deviations are limited to a handful of bare or legacy names (status, capabilities, execute_python, toolbag_quit), which are readable but break the pattern.

Tool Count2/5

93 tools is far beyond any comfortable agent working set, even for a full 3D DCC application. The breadth (baking, skew masks, sky, fog, render, timeline) justifies many of them, but a large tail of hyper-specific tools (baker_skew_preview/apply/clear_preview, baker_map_path, camera_post_effect_file, baker_set_udim_tile) bloats the surface when execute_python could absorb rare cases.

Completeness5/5

Coverage is exceptional: full lifecycle for scenes, objects, materials, bake projects, cameras, sky, fog, lights, rendering, and timeline, plus presets and export paths. The execute_python escape hatch means there are effectively no dead ends for operations the tool set omits (e.g. material renaming).

Maintenance

ActivityMaintained
ResponsivenessNo issues