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.

system_infoA

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

node_createA

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.

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.

node_getC

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

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

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.

node_renameC

Rename a node.

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

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

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).

node_errorsB

Errors/warnings for a node, optionally including children.

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

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

node_set_flagsA

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.

par_getC

Read parameter values, optionally filtered by glob.

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

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

par_setB

Set one or more parameter values on an operator.

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

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

par_get_allB

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

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

par_infoB

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

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

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

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.

par_pulseC

Pulse a momentary parameter.

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

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

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).

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.

conn_getB

Read all input/output connections of a node.

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

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).

connection_deleteC

Alias of conn.delete.

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

inputIndex (int | None): Disconnect this input.

outputIndex (int | None): Disconnect this output.

connection_getD

Alias of conn.get.

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

data_chopB

Read CHOP channel values (uniformly downsampled).

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

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

data_topD

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).

data_sopC

SOP point count/positions and bounds.

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

data_datB

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.

data_dat_writeB

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.

script_class_listA

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

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

script_class_detailC

Methods/properties/docstring for a td class.

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

script_module_helpC

help() output for a td name.

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

timeline_getB

Current timeline / playback state.

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.

timeline_playA

Start timeline playback.

timeline_pauseA

Pause timeline playback.

render_screenshotB

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.

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).

project_infoB

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

project_snapshotB

Save a timestamped, collision-free backup .toe.

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

project_versionsB

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

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

measure_gpuA

GPU util/VRAM + whether TD is really rendering. The 'looks healthy but isn't' detector.

require_render (bool | None): Error if TD is not rendering (default true).

measure_chainA

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

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

measure_fpsD

FPS, realtime flag, cook rate, throttle queue.

measure_verifyB

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).

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).

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).

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.

measure_cooktimesB

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.

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).

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').

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.

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).

layout_set_positionC

Set network-editor position of one or more nodes.

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

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).

bridge_statusB

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

bridge_stateC

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

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).

bridge_snapshotA

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

bridge_snapshotsA

List existing backups, newest-first.

bridge_restoreB

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.

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).

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.

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.

bridge_router_versionA

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

bridge_sendD

Raw bridge send: op + payload (eval/python/...). For power users only.

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

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

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

C2.6/5.0

Scored across 64 tools

Disambiguation2/5

Several tool clusters have unclear boundaries: conn_* tools have exact connection_* aliases, system_ping/bridge_status/bridge_state/measure_verify all report health-ish state, and project_snapshot/bridge_snapshot/bridge_snapshots overlap heavily. Descriptions are detailed, but an agent can easily select the wrong health or backup tool.

Naming Consistency4/5

Nearly all tools follow a predictable snake_case domain-prefix + action pattern (node_create, par_set, timeline_play, bridge_restore), which makes the surface navigable. The main inconsistencies are the connection_* alias duplicates, batch_execute being verb-first, and data_chop/top/sop using family names rather than actions.

Tool Count2/5

64 tools is far above the typical well-scoped MCP surface, and the set includes duplicate aliases plus raw escape-hatch methods that inflate the count. The broad TouchDesigner domain justifies many distinct operations, but the surface would be cleaner and more usable at roughly half this size.

Completeness3/5

The server covers node, parameter, connection, data, script, timeline, render, project, measure, and bridge operations, so most workflows are supported. However, there are notable gaps: no node_delete/destroy tool, no dedicated script execution except the raw bridge_send, and backup functionality is split across overlapping snapshot tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues