Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NUKE_HOSTNoHost for the Nuke addon TCP serverlocalhost
NUKE_PORTNoPort for the Nuke addon TCP server9876

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": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
read_compA

Read the node graph (or a subtree). Returns nodes with type, connections, non-default knob values, and error state.

For large comps (200+ nodes), use summary=True for a compact overview (names and types only, no knobs), or use offset/limit to paginate.

Args: root: read children of this node only (e.g. a Group name). omit for entire script. depth: how many levels deep to recurse into groups. default 999. summary: if True, return only name/type/connections per node, skip knobs. faster for large comps. type: filter to only this node class (e.g. 'Grade', 'Read'). offset: skip this many nodes (for pagination). default 0. limit: max nodes to return. 0 means all. use with offset to page through large comps.

read_node_detailA

Deep inspection of a single node. Returns all non-default knobs, input/output connections, expressions, animation state, and error info. For Groups/Gizmos, also shows internal node structure.

Args: name: node name to inspect.

snapshot_compA

Take a snapshot of the current comp state. Returns a snapshot_id you can pass to diff_comp later to see what changed.

Snapshots are stored server-side (max 5). Use before making changes.

diff_compA

Compare the current comp to a previous snapshot. Shows nodes added, removed, and knobs changed. Call snapshot_comp first.

Args: snapshot_id: ID from a previous snapshot_comp call.

create_nodeB

Create a node and optionally wire it to an existing node.

Args: type: Nuke node class (Grade, Blur, Merge2, Read, Write, etc.) name: optional name. Nuke auto-names if omitted. connect_to: name of a node to connect as input 0. for Merge nodes, connects to B pipe.

delete_nodeA

Delete a node from the script.

Args: name: node to delete. confirm: must be True to actually delete. call with False first to preview.

find_nodesC

Search for nodes by type, name pattern, or error state.

Args: type: filter by node class (e.g. 'Grade', 'Read'). pattern: filter by name substring (case-insensitive). errors_only: if True, only return nodes with errors.

list_nodesA

List all nodes in the script, or children of a Group node.

Args: root: optional Group node name to list children of.

connect_nodesA

Connect two nodes. For Merge nodes, defaults to B pipe (input 1).

Args: from_node: source node (output). to_node: target node (input). input_index: which input on the target. defaults to 0, or 1 for Merge nodes.

auto_layoutB

Auto-arrange the node graph layout.

Args: selected_only: if True, only arrange selected nodes.

modify_nodeA

Rename a node. Checks for expressions that reference this node and optionally updates them to use the new name.

Args: name: current node name. new_name: new name to set. update_expressions: auto-fix expressions referencing the old name. default True.

disconnect_node_inputC

Disconnect a specific input on a node.

Args: node: node name. input_index: which input to disconnect (0-based).

set_node_positionB

Set x/y positions for one or more nodes in the DAG. Use for manual layout control -- position the main pipe vertically and branch side chains to the right.

Args: positions: JSON array of {node, x, y} objects. example: '[{"node":"Grade1","x":0,"y":200},{"node":"Blur1","x":200,"y":200}]'

get_knobC

Read a knob value from a node.

Args: node: node name. knob: knob name (e.g. 'size', 'mix', 'file', 'channels').

set_knobB

Set a knob value on a node.

Args: node: node name. knob: knob name. value: value to set. type depends on the knob.

get_script_infoA

Get current script metadata: path, frame range, fps, format, colorspace, node count.

save_scriptB

Save the script. If path is given, saves as a new file.

Args: path: optional file path for save-as. omit to save in place.

load_scriptB

Open a Nuke script. Replaces current script.

Args: path: .nk file to open. confirm: must be True to proceed. call with False first to preview.

set_frame_rangeB

Set the timeline frame range and/or current frame.

Args: first: first frame number. last: last frame number. current: jump to this frame.

setup_writeA

Create a Write node connected to input_node with production defaults.

A3: typed dispatch -- the addon validates file_type against the allowlist (exr/tiff/png/jpeg/mov/dpx) and rejects any path with a .. traversal component.

Args: input_node: node to connect as input. path: output file path (use #### for frame padding). file_type: exr, tiff, png, jpeg, mov, or dpx. colorspace: output colorspace.

render_framesA

Render frames through a Write node.

By default this returns immediately with a task_id and runs the render in the background; poll tasks_get(task_id) for progress, tasks_cancel to interrupt, or wait for the terminal state notification.

Pass synchronous=True to keep the pre-B2 blocking shape (returns the full RenderResult once the render finishes). That path is wire-compatible with existing callers.

Args: write_node: name of Write node. uses first Write in script if omitted. first_frame: start frame. uses script range if omitted. last_frame: end frame. uses script range if omitted. confirm: must be True to render. call with False to preview. synchronous: block until done and return RenderResult (B2 back-compat). Defaults to False -- use the async Task flow.

setup_precompA

Set up a precomp: creates a Write node for the source, and a Read node that reads the rendered output back in. Downstream nodes get rewired to the Read.

The Write path is auto-generated from the script name and precomp name if not specified.

Args: source_node: node whose output to precomp. name: label for the precomp (used in file path). defaults to source node name. path: explicit output path. auto-generated if omitted.

list_precompsB

Find all precomp Write/Read pairs in the script.

list_channelsB

List all channels/layers available at a node's output, grouped by layer.

Args: node: node name to inspect channels of.

shuffle_channelsC

Create a Shuffle node to move channels between layers.

Args: input_node: source node. from_layer: source layer (e.g. 'diffuse', 'specular', 'depth'). to_layer: target layer. defaults to 'rgba'.

view_nodeA

Set the viewer to display a specific node's output.

Args: node: name of the node to view.

set_viewer_lutA

Switch the viewer's display LUT/colorspace.

Args: lut: LUT or colorspace name (e.g. 'sRGB', 'Cineon', 'None').

setup_mergeB

Merge foreground over background. Auto-connects fg to B pipe.

Args: fg: foreground node name. bg: background node name. operation: merge operation (over, plus, multiply, screen, etc.)

setup_transformC

Create a transform node.

Args: input_node: node to transform. operation: Transform, CornerPin2D, Reformat, or Tracker4.

setup_denoiseC

Create a Denoise node with production defaults.

Args: input_node: node to denoise.

set_expressionA

Set a TCL expression on a knob. The expression is evaluated per-frame.

Common expressions: frame, frame/24.0, sin(frame*0.1), [value other_node.knob]

A regex pre-flight rejects expressions that wrap forbidden Python calls in [python ...] callouts or invoke TCL system/exec/ unlink directly.

Args: node: node name. knob: knob name to set expression on. expression: Nuke TCL expression string.

clear_expressionA

Remove an expression or animation from a knob, leaving it at its current value.

Args: node: node name. knob: knob name to clear.

set_keyframeB

Set a keyframe on a knob at a specific frame. Creates animation if the knob is not already animated.

Args: node: node name. knob: knob name. frame: frame number. value: value at that frame.

list_keyframesB

List all keyframes on a knob. Returns frame/value pairs.

Args: node: node name. knob: knob name to inspect.

create_rotoB

Create a Roto or RotoPaint node connected to the input.

Args: input_node: node to roto on top of. roto_type: Roto or RotoPaint.

list_roto_shapesB

List all shapes and strokes in a Roto or RotoPaint node.

Args: node: name of a Roto or RotoPaint node.

scene_digestA

Compact fingerprint of the script: counts by class, errors, warnings, selection, active viewer, display node, plus an md5 hex[:8] hash for delta comparison.

Stable across no-op turns -- pair with scene_delta to skip re-rendering large response payloads when nothing has changed.

scene_deltaA

Compare current scene state against a previous hash.

If unchanged, returns {"changed": False, "hash": prev_hash} with no graph enumeration leaking into the response. If changed, returns the full digest body with changed=True.

Args: prev_hash: the hash from a previous scene_digest (or scene_delta) call.

tasks_listB

List recent tasks, newest first.

tasks_getB

Fetch a single task by id.

tasks_cancelA

Cancel an in-flight task.

Sets state="cancelled" on the disk record AND signals the addon-side worker (for renders) so it stops between frames. Cancelling an already-terminal task is a no-op -- the response carries the existing state unchanged.

tasks_resumeA

Resume a task that's awaiting input.

TODO(B2c): wired up once a tool actually parks in input_required. Until commit 4 ships an async render and a future commit adds elicitation, every Task either succeeds or fails synchronously, so resume has nothing to drive. Returns a stub status so clients can probe capability without crashing.

list_profilesA

List every skill profile with its description, tool count, and current-loaded state.

Pass the returned name to load_profile to surface the profile's tools at runtime. Profiles already in loaded=True are visible right now.

load_profileA

Surface every tool in profile name. Idempotent -- loading an already-loaded profile is a no-op.

Emits notifications/tools/list_changed after the flip so the client refreshes its tool surface.

Args: name: profile name (call list_profiles for the catalog).

unload_profileA

Disable every tool in profile name. core is locked on -- unloading it would strip the read paths and the load_profile tool itself.

Args: name: profile name to disable.

Prompts

Interactive templates invoked by user choice

NameDescription
audit_acescct_consistency_guideGuides the model through running the ACEScct consistency audit and interpreting findings (Read colorspaces, Write colorspaces, working space, OCIO config).
build_3d_camera_track_projectWalks through a 3D camera track, scene-solve, and projection-onto-card workflow for matchmove or set-extension comp work.
build_aov_relight_pipelineWalks through constructing a Karma EXR AOV reconstruction + relight pipeline from a Read of multi-layer EXR output.
build_copycat_dehazeWalks through training a CopyCat dehaze model from inverse-pair frames (hazy plate + clean reference).
build_deep_holdout_chainWalks through a DeepRead -> DeepRecolor -> DeepHoldout(2) -> DeepMerge -> deep_to_image deep compositing chain.
build_planar_track_clean_plateWalks through a planar track + clean-plate procedural so a single painted patch can be projected onto a tracked surface across the shot.
build_smartvector_paint_propagateWalks through a SmartVector + IDistort paint-propagation chain so a single painted frame can be warped to every frame in the range.
build_stmap_distortion_envelopeWalks through caching a lens-distortion envelope to STMap so downstream comp work happens in a linear, undistorted plate.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 45 tools

Disambiguation4/5

Tools mostly target distinct operations, with clear parameter descriptions. Some overlap exists between read_comp/list_nodes/find_nodes and between snapshot_comp/scene_digest, but descriptions distinguish them well.

Naming Consistency5/5

All tool names use snake_case with predictable verb_noun or noun_verb patterns (list_*, read_*, set_*, setup_*, tasks_*). No mixed conventions.

Tool Count2/5

45 tools is excessive for the domain's core needs, and at least one tool (tasks_resume) is an explicit stub with no current function, indicating some tools don't earn their place.

Completeness4/5

Core CRUD for nodes, knobs, expressions, keyframes, rendering, and precomps is present. Minor gaps exist (e.g., roto shape editing, node enable/disable, grouping), but most workflows are covered.

Maintenance

ActivityInactive
ResponsivenessNo issues