Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TOUCHBRIDGE_DIRNoPath to the bridge folder used by the touchbridge MCP server. Defaults to ~/.touchbridge/bridge.~/.touchbridge/bridge

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
system_pingA

Liveness canary. Returns pong + TD frame.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

system_infoA

TD version, cook rate, realtime flag and the full registered method list.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_createB

Create an operator in a parent COMP (e.g. 'noiseCHOP'). Auto-placed to the right of siblings.

parentPath (<class 'str'>): Full path of the parent COMP.

type (<class 'str'>): Operator type string (e.g. 'noiseCHOP').

name (str | None): Desired name; TD assigns one if omitted.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_listA

List children of a container, optionally filtered by family.

path (str | None): Parent container path (default '/').

family (str | None): Filter by operator family (CHOP/TOP/...).

depth (int | None): Recursion depth; 1 = direct children.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_getA

Full metadata for one operator (params, connections, position).

path (<class 'str'>): Full path of the operator.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_copyA

Copy a node into a destination parent.

sourcePath (<class 'str'>): Path of the operator to copy.

destParentPath (<class 'str'>): Destination parent COMP path.

name (str | None): Name for the copy; TD assigns if omitted.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_renameA

Rename a node.

path (<class 'str'>): Full path of the operator.

name (<class 'str'>): New name for the operator.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_findA

Search for nodes matching name/type/family, recursively.

path (str | None): Root container to search (default '/').

name (str | None): Case-insensitive substring on node name.

type (str | None): Exact operator type (case-insensitive).

family (str | None): 'CHOP'/'TOP'/'DAT'/'SOP'/...

depth (int | None): Max recursion depth (default 5).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_errorsA

Errors/warnings for a node, optionally including children.

path (<class 'str'>): Full path of the operator.

includeChildren (bool | None): Also collect child errors.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_set_flagsB

Set display / render / bypass flags on a node.

path (<class 'str'>): Full path of the operator.

display (bool | None): Set display flag.

render (bool | None): Set render flag.

bypass (bool | None): Set bypass flag.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

par_getA

Read parameter values, optionally filtered by glob.

path (<class 'str'>): Operator path.

pattern (str | None): Glob like 't[xyz]'; None = all.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

par_setA

Set one or more parameter values on an operator.

path (<class 'str'>): Operator path.

values (dict[str, typing.Any]): Mapping of parameter name -> value.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

par_get_allA

Full metadata (mode, bounds, menu names) for every par.

path (<class 'str'>): Operator path.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

par_infoA

Metadata for named parameters (or all if names omitted).

path (<class 'str'>): Operator path.

names (list[str]): Parameter names; None = all.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

par_set_expressionC

Put a parameter into expression mode.

path (<class 'str'>): Operator path.

name (<class 'str'>): Parameter name.

expression (<class 'str'>): Python expression string.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

par_pulseA

Pulse a momentary parameter.

path (<class 'str'>): Operator path.

name (<class 'str'>): Parameter name.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

conn_createA

Wire two ops together (output -> input).

fromPath (<class 'str'>): Source operator path.

toPath (<class 'str'>): Destination operator path.

fromOutput (int | None): Source output index (default 0).

toInput (int | None): Destination input index (default 0).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

conn_deleteB

Disconnect an input and/or output of a node.

path (<class 'str'>): Operator path.

inputIndex (int | None): Disconnect this input.

outputIndex (int | None): Disconnect this output.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

conn_getA

Read all input/output connections of a node.

path (<class 'str'>): Operator path.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

connection_createB

Alias of conn.create (kept for MCP-side compat).

fromPath (<class 'str'>): Source operator path.

toPath (<class 'str'>): Destination operator path.

fromOutput (int | None): Source output index (default 0).

toInput (int | None): Destination input index (default 0).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

connection_deleteB

Alias of conn.delete.

path (<class 'str'>): Operator path.

inputIndex (int | None): Disconnect this input.

outputIndex (int | None): Disconnect this output.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

connection_getD

Alias of conn.get.

path (<class 'str'>): Operator path.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

data_chopA

Read CHOP channel values (uniformly downsampled).

path (<class 'str'>): CHOP operator path.

max_samples (int | None): Max samples per channel (default 1024).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

data_topA

TOP resolution, optionally base64 PNG pixel capture.

path (<class 'str'>): TOP operator path.

pixels (bool | None): Capture pixels as base64 PNG.

max_width (int | None): Downscale if wider (default 512).

max_height (int | None): Downscale if taller (default 512).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

data_sopA

SOP point count/positions and bounds.

path (<class 'str'>): SOP operator path.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

data_datA

Read text or table DAT content.

path (<class 'str'>): DAT operator path.

row_start (int | None): First table row (default 0).

row_end (int | None): Last table row, exclusive.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

data_dat_writeA

Write text / append a row / clear a DAT.

path (<class 'str'>): DAT operator path.

text (str | None): Replace full text content.

appendRow (list[typing.Any]): Append a row to a table DAT.

clear (bool | None): Clear before writing.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

script_class_listA

List names in the td module (optional substring filter).

pattern (str | None): Case-insensitive substring.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

script_class_detailA

Methods/properties/docstring for a td class.

name (<class 'str'>): Class or attribute name.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

script_module_helpA

help() output for a td name.

name (<class 'str'>): Name to look up.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

timeline_getB

Current timeline / playback state.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

timeline_setA

Set cookRate, realTime and/or jump to a frame.

cookRate (float | None): Desired cook rate (fps).

realTime (bool | None): Enable/disable real-time playback.

frame (int | None): Jump to this absolute frame.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

timeline_playA

Start timeline playback.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

timeline_pauseB

Pause timeline playback.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

render_screenshotA

Save a TOP's current frame to a PNG file.

path (<class 'str'>): TOP operator path.

save_path (str | None): Output PNG path; tempfile if omitted.

overwrite (bool | None): Replace an existing save_path (default false; .toe/.tox never).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

render_exportB

Export a TOP frame to a file (extension picks format).

path (<class 'str'>): TOP operator path.

save_path (<class 'str'>): Output path (.png/.jpg/.exr...).

quality (int | None): JPEG quality 0-100 (default 90).

overwrite (bool | None): Replace an existing file (default false; .toe/.tox never).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

project_infoA

Project + app metadata (name, folder, version, cook rate).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

project_snapshotA

Save a timestamped, collision-free backup .toe.

dest (str | None): Backup folder; 'snapshots/' next to the project.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

project_versionsA

List saved .toe versions in the project folder, newest-first.

folder (str | None): Folder to scan (default project folder).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

measure_gpuA

GPU util/VRAM (NVIDIA, measured host-side so TD never blocks) + whether TD is really rendering. The 'looks healthy but isn't' detector.

require_render (bool | None): Error instead of returning empty stats when TD is not rendering and no GPU numbers are available (default false).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

measure_chainA

Per-device topology: Bypass/Src/Srcpath truth + chain orphan detection for chained COMPs.

path (str | None): Root container to scan (default '/').

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

measure_fpsC

FPS, realtime flag, cook rate, throttle queue.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

measure_verifyA

Round-trip canary over the file bridge: rtt_ms + a live TD value (absTime.seconds by default).

expr (str | None): Expression to eval (default absTime.seconds).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_errors_deepA

Walk a whole subtree; report every node with cook errors, warnings, parameter-expression errors or script errors. Only nodes with a problem are returned.

path (str | None): Root of the walk (default '/project1').

max_depth (int | None): Recursion limit (default 32).

max_nodes (int | None): Visit cap (default 5000).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_clear_script_errorsA

Clear a node's accumulated script-error log, force a cook, re-read. recurring: true is proof of a LIVE problem; a one-off hit was stale.

path (<class 'str'>): Operator path.

force_cook (bool | None): cook(force=True) after clearing (default true).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

node_snapshotA

Complete parameter state (value/mode/expr/evalError) + flags, optionally written to a JSON file (never overwrites). Diff two snapshots around a risky edit.

path (<class 'str'>): Operator path.

out (str | None): JSON file under the project folder.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

measure_cooktimesA

Per-operator cook cost (ms) sorted most-expensive first: which device is eating the frame.

paths (list[str]): Operator paths to measure.

path (str | None): Parent whose children are measured.

top (int | None): Return only the N most expensive.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

data_pixel_sampleA

Luma statistics of a TOP (mean/min/max/std) with dark / solid / clipped flags. The 'is the output actually black?' verifier.

path (<class 'str'>): TOP operator path.

grid (int | None): Samples per axis (default 16).

numpy (bool | None): Full-frame read via numpyArray().

dark_below (float | None): Mean luma below this = dark (0.02).

solid_std (float | None): Std below this = solid (0.005).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

project_import_toxA

Load a .tox into a parent COMP. Path must be under the project folder or $TOUCHBRIDGE_TOX_ROOTS; .toe refused.

path (<class 'str'>): The .tox file.

parentPath (str | None): COMP to load into (default '/project1').

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

project_export_toxA

Save a COMP to a .tox. Never a .toe; never overwrites unless overwrite=true.

path (<class 'str'>): COMP operator path.

out (<class 'str'>): Destination .tox under the project folder.

overwrite (bool | None): Allow replacing an existing file.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

batch_executeA

Run a list of router requests in ONE bridge round trip (transport batching, not a rollback transaction: failures are reported per item).

ops (list[typing.Any]): [{method, params}, ...] — the ops to run.

abort_on_error (bool | None): Stop at the first failure (default false).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

layout_set_positionA

Set network-editor position of one or more nodes.

nodes (list[typing.Any]): [{path, x, y}, ...].

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

layout_alignA

Distribute nodes along a horizontal or vertical axis.

paths (list[str]): Ordered operator paths.

axis (str | None): 'horizontal' (default) or 'vertical'.

start_x (float | None): X of the first node.

start_y (float | None): Y of the first node.

spacing (float | None): Gap between centres (default 200).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_statusA

Bridge heartbeat state: alive, age (s), project, build.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_stateB

TD three-state probe: ok | starting | down | off.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_modeA

Current bridge mode: prep (normal editing) or show (live performance lock: reads + allowlisted params only), with the allowlist and since-when.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_set_modeA

Enter SHOW mode (lock the bridge for a live performance: reads and the allowlisted parameters only; enforced inside TD for every client) or return to PREP. Leaving show mode needs confirm='END SHOW' TYPED BY THE HUMAN OPERATOR: never supply it on your own initiative.

mode (<class 'str'>): 'show' or 'prep'.

allow (list[str]): Entering show: params that may still change, as '/path:ParName' globs (e.g. '/project1/master:Opacity', '/project1/fx*:Mix').

confirm (str | None): Leaving show: the exact phrase END SHOW, from the operator.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_healthA

Show health in one call: bridge alive / TD frozen / TD gone, REAL fps vs cook rate, frame time vs budget, dropped frames, GPU memory/temp (TD's Perform CHOP), mode, and optionally whether an output TOP is black or solid.

output (str | None): TOP path of the show output to check for black/solid.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_save_incrementA

SAFE save: write the next numbered Show.<N+1>.toe and structurally refuse to overwrite an existing file. The preferred way to persist bridge edits.

timeout (float | None): Seconds to wait (default 45).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_snapshotA

Copy the current show .toe to a timestamped backup (never overwrites anything).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_snapshotsA

List existing backups, newest-first.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_restoreA

Restore a backup into the show folder as a NEW restored..toe sibling (never overwrites the live file).

backup (<class 'str'>): Absolute path to a backup .toe.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_ensure_aliveA

Open the show in TD (if needed) and wait for the bridge heartbeat. Returns alive status.

timeout (float | None): Max seconds to wait (default 45).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_open_showA

Launch the resolved show .toe in TouchDesigner (refuses if TD is already running unless force).

force (bool | None): Launch even if TD is running.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_router_callA

Raw router call for ANY router method (escape hatch; prefer the typed tools). Destructive methods stay gated by safe mode.

method (<class 'str'>): Router method name (e.g. 'node.get').

params (dict[str, typing.Any]): Method parameters as a dict.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_router_versionA

Router surface version + method count (capability negotiation; soft-warn on mismatch, never hard-lock).

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

bridge_sendA

Raw bridge send: op + payload. In safe mode only catalogued non-destructive router methods pass; the raw python/eval opcodes need --allow-destructive.

op (<class 'str'>): Bridge opcode (eval, python, ...).

payload (dict[str, typing.Any]): Payload dict.

detail (str | None): full (default) | summary (long lists cut to 25 + count) | minimal (top-level scalars only).

response_format (str | None): yaml (default, token-cheap) | json.

Prompts

Interactive templates invoked by user choice

NameDescription
diagnose_dark_output
wire_feedback_safely
save_before_editing

Resources

Contextual data attached and managed by the client

NameDescription
ProjectResolved show .toe, family name, and bridge liveness.
Project versionsSaved .toe versions (newest-first) in the project folder.
SnapshotsTimestamped touchbridge backups, newest-first.

TDQS

B3/5.0

Scored across 67 tools

Disambiguation3/5

There are several pairs of tools with overlapping purposes: node_get vs node_snapshot (both read node state), par_get vs par_info vs par_get_all (all read parameter info), and the connection_* aliases duplicate conn_* tools. However, many tools have distinct purposes (node_create vs node_copy vs node_rename). The presence of aliases and similar read endpoints creates some ambiguity.

Naming Consistency3/5

The naming is mostly consistent with verb_noun pattern (e.g., node_get, par_set, data_chop), but there are deviations: some tools use 'get' (node_get) while others use 'list' (node_list), and the use of 'connection_*' aliases alongside 'conn_*' breaks consistency. Also, 'par_get_all' versus 'par_info' are not clearly differentiated by name.

Tool Count2/5

With 57 tools, this is far beyond the typical 3-15 range and even exceeds the 25+ threshold. The server covers a broad domain (TouchDesigner automation), but many tools are highly specialized (e.g., measure_chain, data_pixel_sample) and could be consolidated. The count feels overwhelming and undermines usability.

Completeness4/5

The tool surface is quite comprehensive: it covers node CRUD (create, copy, rename, delete? no delete but set_flags), parameter operations (get, set, expression, pulse), connections, data reading for all families, timeline control, rendering, project save/restore, and performance measurement. Minor gaps include no explicit node delete or connection listing beyond conn_get, but the breadth is strong.

Maintenance

ActivityMaintained
ResponsivenessNo issues