Oink

MCP and assistant tools

The 24 tools agents use to read and edit a comp.

raw .md

Oink runs an MCP server inside the app, so AI agents (Claude Code, Codex, Cursor...) and the built-in Assistant panel can read and edit the open comp. read tools never change the comp; edit tools ask for your approval in the app and each call is one undo step.

Connection details (port, config file) are in MCP and the assistant.

ToolKindWhat it does
get_graphreadThe node graph: every node (name, type, disabled, inputs and what feeds them, knobs changed from their defaults), the pipes, frame range and current frame.
inspect_nodereadEverything about one node: all knob values, inputs / outputs and connections, animation curves and expressions (with their errors), recent evaluation errors.
list_node_typesreadCreatable node types.
render_framereadRender a node's image at a frame and return a small preview PNG (display-referred, sRGB view) plus its format, bbox, layers and per-channel stats of the full-resolution float pixels.
pixel_statsreadPer-channel min / max / mean and NaN / inf counts of a node's float pixels at a frame, optionally inside region [x, y, r, t] (Nuke pixels, y up), plus the pixel value at point [x, y].
recent_errorsreadRecent evaluation errors and warnings (node failures, missing files, expression errors).
export_nkreadNuke script (.nk) text of the whole comp, or of the named nodes (clipboard form).
search_docsreadSearch the user documentation (node reference, knobs, shortcuts, guides) of the installed version.
get_docreadOne documentation page as Markdown.
shot_reportreadPrep Show report (render.sh --prep-show ...
undo_historyreadUndo / redo history (names of the steps, newest last).
set_framereadMove the current frame (the viewer and timeline follow).
create_nodeeditCreate a node.
delete_nodeeditDelete a node (its pipes go with it).
connecteditConnect from_node's output to to_node's input (input = name or index; default the first free input).
disconnecteditDisconnect an input of a node (input name or index, default all inputs).
set_knobseditSet knob values on a node: {knob: value}.
set_keyeditSet an animation key on a knob at a frame (value: number, or list for all channels; index = one channel).
set_expressioneditSet (or remove with '') a Nuke-style expression on a knob, e.g.
render_writeeditRender Write node(s) to disk over frames [first, last] (default: every enabled Write, the comp's frame range).
import_nkeditImport a Nuke script (.nk file path or script text).
undoeditUndo the last change (Edit > Undo).
redoeditRedo (Edit > Redo).
apply_changeseditApply several edits as ONE step (one approval, one undo): ops = [{tool, args}] with tool one of create_node, delete_node, connect, disconnect, set_knobs, set_key, set_expression.

get_graph

The node graph: every node (name, type, disabled, inputs and what feeds them, knobs changed from their defaults), the pipes, frame range and current frame. A very large comp comes back in pages: if next_offset is present call again with offset=next_offset (total = node count).

ArgumentTypeRequiredDescription
offsetintegerfirst node to return (default 0)
limitintegermax nodes to return (default: as many as fit in ~40k characters)

inspect_node

Everything about one node: all knob values, inputs / outputs and connections, animation curves and expressions (with their errors), recent evaluation errors.

ArgumentTypeRequiredDescription
nodestringyes

list_node_types

Creatable node types. With type: that type's knobs (name, type, default, range, enum items).

ArgumentTypeRequiredDescription
querystringfilter by name/category
typestringnode type (e.g. Blur or OC_N_blur) to list knobs of

render_frame

Render a node's image at a frame and return a small preview PNG (display-referred, sRGB view) plus its format, bbox, layers and per-channel stats of the full-resolution float pixels.

ArgumentTypeRequiredDescription
nodestringyes
framenumber
max_sizeinteger
layerstring

pixel_stats

Per-channel min / max / mean and NaN / inf counts of a node's float pixels at a frame, optionally inside region [x, y, r, t] (Nuke pixels, y up), plus the pixel value at point [x, y].

ArgumentTypeRequiredDescription
nodestringyes
framenumber
layerstring
regionarray
pointarray

recent_errors

Recent evaluation errors and warnings (node failures, missing files, expression errors).

ArgumentTypeRequiredDescription
nodestringonly messages mentioning this node

export_nk

Nuke script (.nk) text of the whole comp, or of the named nodes (clipboard form).

ArgumentTypeRequiredDescription
nodesarray

search_docs

Search the user documentation (node reference, knobs, shortcuts, guides) of the installed version. Returns matching pages [{path, title, snippet}]; read one with get_doc.

ArgumentTypeRequiredDescription
querystringyeswords to look for, e.g. 'grade gain' or 'roto feather'
limitintegermax results (default 8)

get_doc

One documentation page as Markdown. path as returned by search_docs ('nodes/grade', '/docs/nodes/grade' or just a node name like 'grade').

ArgumentTypeRequiredDescription
pathstringyes

shot_report

Prep Show report (render.sh --prep-show ... --out DIR): without shot, the show summary (shots with one-line findings, clusters with their key shots, hardest shots, people across the show); with shot, that shot's report: hidden cuts, bad frames, grain, camera move, people, faces, markers, lens estimate, exposure, motion blur, focus, and the proposed prep nodes (proposals, never applied).

ArgumentTypeRequiredDescription
folderstringyesthe Prep Show output folder (holds prep_show.json)
shotstring

undo_history

Undo / redo history (names of the steps, newest last).

No arguments.

set_frame

Move the current frame (the viewer and timeline follow). Does not change the comp.

ArgumentTypeRequiredDescription
frameintegeryes

create_node

Create a node. type: node type or class name (Blur, Grade, Merge, Read, Viewer, OC_N_blur...). inputs: node names in input order (or {input name: node}). knobs: {knob: value} (names from list_node_types(type=...)). Placed under its first input unless x/y given. Returns the node's name.

ArgumentTypeRequiredDescription
typestringyes
namestring
inputsarray or object
knobsobject
xnumber
ynumber

delete_node

Delete a node (its pipes go with it).

ArgumentTypeRequiredDescription
nodestringyes

connect

Connect from_node's output to to_node's input (input = name or index; default the first free input). Replaces what was connected there.

ArgumentTypeRequiredDescription
from_nodestringyes
to_nodestringyes
inputstring,integer
outputstring,integer

disconnect

Disconnect an input of a node (input name or index, default all inputs).

ArgumentTypeRequiredDescription
nodestringyes
inputstring,integer

set_knobs

Set knob values on a node: {knob: value}. Colours / vectors take a list or one number (broadcast); enums take the item name; 'disable' via knob 'mute'; 'name' renames.

ArgumentTypeRequiredDescription
nodestringyes
knobsobjectyes

set_key

Set an animation key on a knob at a frame (value: number, or list for all channels; index = one channel).

ArgumentTypeRequiredDescription
nodestringyes
knobstringyes
framenumberyes
valueyes
indexinteger
interpstring

set_expression

Set (or remove with '') a Nuke-style expression on a knob, e.g. 'frame/10', 'Blur1.size * 2', 'sin(frame)'; index = one channel.

ArgumentTypeRequiredDescription
nodestringyes
knobstringyes
exprstringyes
indexinteger

render_write

Render Write node(s) to disk over frames [first, last] (default: every enabled Write, the comp's frame range). Returns the files written.

ArgumentTypeRequiredDescription
write_nodestring
framesarray

import_nk

Import a Nuke script (.nk file path or script text). Adds the nodes to the comp (replace=true replaces the whole comp).

ArgumentTypeRequiredDescription
pathstring
textstring
replaceboolean

undo

Undo the last change (Edit > Undo).

No arguments.

redo

Redo (Edit > Redo).

No arguments.

apply_changes

Apply several edits as ONE step (one approval, one undo): ops = [{tool, args}] with tool one of create_node, delete_node, connect, disconnect, set_knobs, set_key, set_expression. All or nothing: a failing op takes the earlier ones back.

ArgumentTypeRequiredDescription
opsarrayyes
summarystring

On this page