Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SP_MCP_SOCKETNoBridge socket. Set it for both Painter and the server.~/.painter_bridge.sock
SP_MCP_TIMEOUTNoSeconds to wait for Painter.30
SP_MCP_MESH_ROOTSNoFolders project meshes may come from. Separate several folders with ':'.
SP_MCP_EXPORT_ROOTSNoFolders exports may write to. Separate several folders with ':'.
SP_MCP_PROJECT_ROOTSNoFolders .spp files may be saved in. Separate several folders with ':'.
SP_MCP_RESOURCE_ROOTSNoFolders imported resources may come from. Separate several folders with ':'.
SP_MCP_BAKE_MESH_ROOTSNoFolders high-poly and cage meshes may come from. Separate several folders with ':'.
SP_MCP_ALLOW_EXECUTE_PYTHONNoSet to 1 to enable execute_python.

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
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
painter_statusA

Check the connection and report Painter, Python API, and project status.

capture_viewportC

Look at Painter. view="3d" is the model; view="window" includes the whole UI.

capture_turntableB

See every side: orbit the camera, capture each yaw angle, then restore the view.

zoom above 1 moves closer. A negative elevation looks up from below. focus is the [x, y, z] point to orbit, for close-ups of one part; it defaults to the model's center.

capture_channelC

See one flattened channel as a flat texture, for example Roughness or Normal.

close_projectA

Close the open project; refuses unsaved work unless discard_unsaved=true.

export_meshB

Export the project mesh, with any Auto UV result, inside SP_MCP_EXPORT_ROOTS.

get_project_infoA

Return the current project path and texture-set names.

plan_project_creationC

Validate a new project, typed import settings, context switch, and backup.

create_projectC

Back up an optional current project, create a typed project, and verify its file.

get_project_creation_jobB

Read terminal state and file verification for an asynchronous project creation.

save_projectB

Overwrite and verify the current saved project after explicit confirmation.

open_projectB

Open an approved .spp, requiring a backup when the current project is dirty.

get_capabilitiesA

Report runtime-supported channels, blend modes, and version-sensitive features.

audit_projectB

Audit texture sets, channels, layer hygiene, and outdated resources.

inspect_bakingB

Inspect enabled bakers, UV tiles, and mesh-map assignments without starting a bake.

inspect_baking_parametersC

Inspect editable common parameters and one baker's typed property metadata.

configure_bakingC

Transactionally configure Texture Set, UV tile, common, and per-baker settings.

set_baking_mesh_inputsC

Assign sandboxed high-poly/cage meshes and related common baker settings.

set_baking_resource_inputC

Set or clear a Resource-typed common/per-baker input transactionally.

capture_baking_presetC

Capture a portable JSON baking preset without filesystem-backed properties.

apply_baking_presetA

Apply a captured baking preset transactionally after explicit confirmation.

preflight_bakeC

Validate selected Texture Sets, mesh inputs, UV tiles, and expected mesh maps.

start_batch_bakeC

Preflight and start a cancellable multi-Texture-Set bake with result manifests.

start_bakeB

Start an asynchronous mesh-map bake after explicit confirmation.

get_bake_jobB

Return progress and terminal status for the latest or selected bake job.

cancel_bakeB

Request cooperative cancellation of a running bake job.

plan_mesh_reloadB

Validate a mesh reload and preview texture-set and backup impact.

start_mesh_reloadC

Back up and asynchronously reload a mesh after explicit confirmation.

get_mesh_reload_jobB

Return status and texture-set changes for the latest mesh reload job.

list_layersB

List layers with stable UIDs, types, visibility, and optional group children.

find_layersC

Search layers by partial name, exact node type, and visibility.

snapshot_layer_treeC

Capture a detailed layer/effect snapshot with a deterministic SHA-256 digest.

diff_layer_snapshotsB

Compare two layer snapshots by UID and report added, removed, and changed nodes.

get_geometry_maskB

Inspect a layer's Mesh/UVTile geometry mask and available elements.

set_geometry_maskC

Set a geometry mask using mesh names or standard UDIM numbers.

create_fill_layerC

Create a Fill Layer, optionally with sRGB base color [r,g,b].

position is top, or above, below or inside reference_uid.

create_groupC

Create a layer group at the top, or above, below or inside reference_uid.

create_paint_layerC

Create a Paint Layer at the top, or above, below or inside reference_uid.

plan_layer_recipeB

Validate a recipe, resolve channels, and preview backup/mutation scope without editing.

create_layer_recipeB

Create a nested recipe atomically, optionally saving an approved .spp backup first.

insert_smart_materialC

Insert a Smart Material at the top, inside parent_uid, or relative to reference_uid.

apply_smart_maskC

Apply a Smart Mask resource to a layer using transactional mask insertion.

set_fill_base_colorB

Set a Fill Layer's base color using its UID and sRGB [r,g,b] values.

get_fill_projectionB

Inspect a Fill layer's projection mode and common UV transformation.

get_fill_sourcesC

Inspect a Fill layer's material or per-channel color/resource sources.

get_procedural_inputsC

Inspect image inputs on Fill, Fill Effect, Generator, or Filter sources.

set_procedural_inputC

Connect a resource to a procedural image input or reset it to its default.

get_fill_parametersB

Inspect parameters and presets of a Fill, Fill Effect, Generator or Filter.

Use it to tune generators such as edge wear. Effect UIDs come from snapshot_layer_tree.

set_fill_parametersB

Update parameters of a Fill, Fill Effect, Generator or Filter; rolls back on failure.

apply_fill_presetC

Apply a named preset of a Fill, Fill Effect, Generator or Filter source.

list_anchor_pointsC

List Anchor Point effects with owner and Texture Set context.

set_fill_anchor_sourceC

Connect an Anchor Point to one Fill channel or the complete material source.

set_fill_resourceB

Assign a Painter resource to one Fill channel, a whole material or a mask Fill.

A Fill inside a mask has no channels, so leave channel out for one.

set_fill_projectionC

Set Fill, UV, or Triplanar projection with transactional transform updates.

set_fill_projection_advancedC

Configure UV, triplanar, planar, spherical, or cylindrical projection details.

set_fill_channelsC

Set and enable multiple uniform Fill channels, such as Roughness or Metallic.

set_active_channelsC

Replace a Fill or Paint layer's active channel set by UID.

set_layer_maskC

Add/update or remove a layer mask; backgrounds are reported by get_capabilities.

insert_mask_effectC

Insert Fill, Paint, Generator, Filter, Levels, Anchor, or Smart Mask into a mask.

insert_content_effectC

Insert Fill, Paint, Generator, Filter, Levels or Anchor into a layer's content.

set_levelsC

Tune a Levels effect, for example to push a mask's contrast.

channel picks what a content Levels affects, such as BaseColor or Roughness.

rename_layerC

Rename a layer or group by UID.

set_layer_propertiesC

Set visibility, opacity, or blend mode; channel defaults to BaseColor.

select_layersC

Select one or more layers in Painter by UID.

list_export_presetsA

List built-in and shelf export presets without exporting files.

inspect_export_presetB

Resolve an export preset and preview its map names without writing files.

list_export_profilesA

List curated engine export profiles and whether their Painter presets are available.

plan_texture_exportB

Validate an export and list exact output files without writing them.

export_texturesB

Export textures inside SP_MCP_EXPORT_ROOTS and verify every output file.

plan_profile_exportB

Preview an engine-profile texture export without writing files.

export_with_profileC

Run a curated export profile inside SP_MCP_EXPORT_ROOTS and verify outputs.

import_project_resourceC

Import and verify a sandboxed resource inside the open Painter project.

list_shelvesA

List Painter shelves with paths, write capability, and crawling state.

import_shelf_resourceC

Import and verify a safe resource in an editable shelf or the user shelf.

start_shelf_refreshC

Start event-observed discovery for one Painter shelf after confirmation.

get_shelf_refresh_jobB

Read persistent state for the latest or selected shelf refresh job.

import_session_resourceC

Import and verify a sandboxed resource for the current Painter session.

list_project_resourcesA

List resources referenced by the open project.

search_resourcesB

Search Painter resources and return identifiers, type, category, and usages.

query uses Painter's shelf syntax: words such as "rust", or filters such as "u:generator", "u:smartmaterial rust", "u:basematerial" or "p:starter_assets". Underscores in a resource name don't match; search one word of it.

find_outdated_resourcesA

Plan project-resource replacements without modifying the project.

replace_outdated_resourcesA

Atomically replace all outdated resources after explicit confirm=true.

save_project_copyB

Save a verified .spp copy inside SP_MCP_PROJECT_ROOTS without relocating the project.

export_smart_materialC

Export a group as a verified Smart Material inside SP_MCP_EXPORT_ROOTS.

export_smart_maskC

Export a layer mask as a verified Smart Mask inside SP_MCP_EXPORT_ROOTS.

delete_layerB

Delete a layer or group by UID. This modifies the open project.

execute_pythonA

Execute raw Painter Python only when SP_MCP_ALLOW_EXECUTE_PYTHON=1.

Variables survive between calls. Assign to result to return a value; printed text comes back as output.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.7/5.0

Scored across 86 tools

Disambiguation3/5

The domain is genuinely large, and most tools state a distinct target (e.g., set_fill_base_color vs set_fill_channels vs set_fill_parameters). However, several clusters overlap heavily — three capture_* tools, set_fill_projection vs set_fill_projection_advanced, insert_content_effect vs insert_mask_effect vs insert_smart_material, and apply_smart_mask vs set_layer_mask — forcing an agent to read long descriptions to choose correctly.

Naming Consistency4/5

Nearly everything follows a snake_case verb_noun pattern (list_*, get_*, set_*, create_*, plan_*, start_*_job, get_*_job), which is predictable and readable. Minor deviations like painter_status (noun-first) and the mix of plan/start/get_job job-lifecycle verbs are the only friction.

Tool Count1/5

86 tools is far beyond what an agent can reliably navigate in one surface; the plan/start/get_job triples alone multiply the tool count considerably. This is an extreme mismatch for a single server, even given the breadth of Substance Painter.

Completeness4/5

Coverage is unusually thorough: project lifecycle, layers, masks, fills/generators, baking, mesh reload, export/import, resources, and job polling are all represented with verification and rollback. Gaps like undo/redo, texture-set creation, and resource deletion are minor workarounds rather than dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues