Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add dcc-mcp/dcc-mcp-substance3d-designer --skill designer-sessiongit clone --depth 1 https://github.com/dcc-mcp/dcc-mcp-substance3d-designerWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dcc-mcp/dcc-mcp-substance3d-designer/designer-session)<a href="https://agentmods.dev/skills/dcc-mcp/dcc-mcp-substance3d-designer/designer-session"><img src="https://agentmods.dev/badge/skills/dcc-mcp/dcc-mcp-substance3d-designer/designer-session/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dcc-mcp/dcc-mcp-substance3d-designer/designer-session"><img src="https://agentmods.dev/badge/skills/dcc-mcp/dcc-mcp-substance3d-designer/designer-session.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00054 | $0.01469 |
| Opus 5.5 | $0.00022 | $0.00588 |
| Sonnet 5.5 | $0.00011 | $0.00294 |
| Haiku 4.5 | $0.00005 | $0.00147 |
Grade A, and why
designer-session scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 22d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 113 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Designer Session
Read the active Designer session and graph before mutating it. The public tools
create built-in sbs:: nodes or explicit open-package resource instances, address native node and
property identifiers, and accept an allowlisted set of scalar and vector value
types. They do not expose an eval, script, shell, or generic action surface.
Use export_graph_state after each authoring sequence to verify node count,
type URLs, positions, parameters, topology, and output usages. A typical graph
sequence is create_graph → create_node → connect_nodes →
set_parameter → add_output/set_output_usage →
save_package_as → export_graph_state.
Package tools use Designer's package manager. Bitmap and SVG imports validate
the declared resource kind and use linked resources unless embed=true is
explicitly requested. export_sbsar uses Designer's official SBSAR exporter
and requires a fresh, nonempty artifact. export_maps compiles the current package
to SBSAR in a new run directory, then invokes only the
official sbsrender executable discovered by the host environment and always
requires explicit format, bit depth, and color-space settings; it fails closed
when that executable is unavailable.
expose_parameter binds a writable constant input through the public graph-input
and function-graph APIs. The SDK must advertise the required variable reader and
a unique string input; unsupported types return EXPOSE_API_UNAVAILABLE or
EXPOSE_TYPE_UNSUPPORTED. Use set_graph_parameter to edit the exposed value.
Host API calls remain on the
Designer main thread through the adapter's Core execution bridge.
Use get_gradient_keys and set_gradient_keys for the native gradientrgba
input of sbs::compositing::gradient nodes. Both require the observed graph UID.
The setter replaces 2..64 strictly ordered keys, with position, RGBA channels,
and midpoint in 0..1 (midpoint defaults to 0.5). It rejects other node/input types,
connected or function-driven inputs, and nonfinite values before mutation.
Results contain the actual native float values, which may have float32 rounding.
Reads preserve native pin order, including stacked pins with equal positions.
Writes require strictly increasing positions after native float32 conversion.
Readback failure restores the prior gradient. These tools do not change color
mode, interpolation mode, other node parameters, or graph connections.
Start with list_nodes and list_node_types, then describe_node or
describe_node_type to inspect supported parameter and port types. Reuse returned
native IDs; create_node.node_id sets a display label, not the SDK handle.
Pass the observed graph_uid as expected_graph_uid on supported mutations.
Use validate_connection before connecting and disconnect_nodes for exact-edge
removal. Open package resources can be inspected, selected or instanced through
list_resources, select_graph and instance_resource; create_subgraph creates
a same-package composition graph. Recursive instances are rejected.
inspect_graph_session reports package ownership/dirty state, graph inputs, node
connections/function bindings and the last application interop error. This is not
a per-node compiler log.
evaluate_graph checks node and static resolution budgets and output texture metadata.
Compute remains synchronous with no hard cancellation deadline. Exported file
headers verify dimensions and actual bit depth; hashes prove fresh bytes, not
visual material accuracy. export_native_maps preserves native texture precision
without requiring SAT. Select the named graph output node and its returned port
when Designer releases an intermediate texture after computation. Missing texture
errors identify the requested name, node and port. Native export checks all selected
textures and stages verified files before publishing the destination; a failed
export leaves that destination available for retry. Each file receipt includes its
native pixel format and source node/port. SAT export owns the renderer process tree for timeout cleanup.
Save before closing a modified package; opening an already-open package preserves
its in-memory edits. Use a new path to export SBSAR or save another package.
What ships with it
44 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- scripts/add_output.py 456 B runs code
- scripts/close_package.py 383 B runs code
- scripts/connect_nodes.py 671 B runs code
- scripts/create_graph.py 445 B runs code
- scripts/create_imported_pbr_material.py 7.9 KB runs code
- scripts/create_node.py 591 B runs code
- scripts/create_procedural_material.py 8.5 KB runs code
- scripts/create_resource_node.py 2.6 KB runs code
- scripts/create_subgraph.py 593 B runs code
- scripts/delete_node.py 469 B runs code
- scripts/describe_node_type.py 506 B runs code
- scripts/describe_node.py 584 B runs code
- scripts/disconnect_nodes.py 718 B runs code
- scripts/evaluate_graph.py 727 B runs code
- scripts/export_graph_state.py 6.3 KB runs code
- scripts/export_maps.py 764 B runs code
- scripts/export_native_maps.py 536 B runs code
- scripts/export_sbsar.py 409 B runs code
- scripts/expose_parameter.py 558 B runs code
- scripts/get_gradient_keys.py 472 B runs code
- scripts/get_graph_view_node_bounds.py 510 B runs code
- scripts/get_parameter.py 448 B runs code
- scripts/import_resource.py 474 B runs code
- scripts/inspect_graph_session.py 439 B runs code
- scripts/inspect_session.py 1.7 KB runs code
- scripts/instance_resource.py 642 B runs code
- scripts/list_graph_views.py 364 B runs code
- scripts/list_node_types.py 525 B runs code
- scripts/list_nodes.py 479 B runs code
- scripts/list_packages.py 933 B runs code
- scripts/list_resources.py 578 B runs code
- scripts/new_package.py 369 B runs code
- scripts/open_package.py 387 B runs code
- scripts/render_graph_maps.py 3.4 KB runs code
- scripts/save_package_as.py 469 B runs code
- scripts/save_package.py 379 B runs code
- scripts/select_graph.py 1.5 KB runs code
- scripts/set_gradient_keys.py 536 B runs code
- scripts/set_graph_parameter.py 468 B runs code
- scripts/set_node_position.py 449 B runs code
- scripts/set_output_usage.py 495 B runs code
- scripts/set_parameter.py 589 B runs code
- scripts/validate_connection.py 748 B runs code
- tools.yaml 44 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 22d ago Changed · +28 lines · +2 tokens per session 1813efa9e59e
- 1mo ago Changed 8c5e6cd26874
- 1mo ago Changed 78cbd3f1737d
- 1mo ago Changed · +35 lines c9b17ca9980f
- 1mo ago First seen · 50 lines · 52 tokens per session scan A ec42d5019278
designer-session is a skill published in the GitHub repository dcc-mcp/dcc-mcp-substance3d-designer (3 stars, last pushed yesterday), licensed MIT. It adds 54 tokens to every session and 1,469 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
painter-project
Host skill - inspect and author the current Substance 3D Painter project. Use when creating or checking projects, building uniform or texture-driven PBR layers, masks and generators, baking mesh maps, importing resources, or exporting. Not for arbitrary JavaScript execution.
painter-lighting
Inspect and control Substance 3D Painter scene lighting. Painter has no light objects, so lighting is the environment map and its exposure and rotation. Use when setting up an HDRI, matching a look-dev environment, or reading the current lighting configuration. Not for lamps, shadows, or light rigs.
painter-material
Inspect and author the channel-level material surface of a Substance 3D Painter layer stack. Use when reading which channels a stack carries, enabling or disabling the channels a layer contributes, or setting uniform channel values. Not for creating layers, importing textures, or painting strokes.
painter-compositing
Inspect and control how a Substance 3D Painter layer composites with the layers beneath it - visibility, opacity, blending mode, and mask state. Use when stacking layers non-destructively or tuning how one layer combines with another. Not for creating or deleting layers, and not for painting strokes.
painter-diagnostics
Read-only readiness diagnostics for a running Substance 3D Painter adapter.
photoshop-layers
Adobe Photoshop layer operations — create, delete, reorder, duplicate, rename, set opacity/visibility, fill, blend modes.