Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_td_statusA

Check if TouchDesigner is running and Envoy is reachable. Returns connection state, crash detection, process liveness, and project config. Works even when TD is down. envoy_unresponsive / main_thread_stalled flag a TouchDesigner that is alive but frozen.

launch_tdA

Launch TouchDesigner with this session's pinned instance's .toe (unpinned: the registry default's). Use to start TD for the first time or restart after a crash. Waits for Envoy to become reachable before returning.

restart_tdA

Quit this session's pinned TouchDesigner gracefully and relaunch its .toe (unpinned: the registry default's). Other TD instances are never touched. Waits for the process to exit before relaunching. Use when TD is running but needs a fresh start.

switch_instanceA

Switch THIS session's TouchDesigner instance or list all registered instances. Omit the instance parameter to list available instances with their status. Provide an instance name (toe basename) to re-pin this session's bridge to that instance -- other sessions' routing is untouched unless all_sessions=true.

list_dialogsA

List the modal dialogs a TouchDesigner instance currently shows (ui.messageBox, missing-file and save-changes prompts, the license box, file pickers). Runs on the bridge, so it works while TD's main thread is blocked by the dialog and every Envoy tool is timing out. TD draws its own dialogs, so their text is not readable through the OS: pass screenshot=true to save a PNG of each one and Read it. Returns blocked=true when a dialog is up.

dismiss_dialogA

Dismiss a modal dialog that is blocking a TouchDesigner instance, then verify it is gone. Default action=auto runs the ladder close (WM_CLOSE) -> escape -> enter until the window disappears; the main TouchDesigner window is never a target. Use list_dialogs (with screenshot=true) first so you know what you are dismissing: close/escape decline a question, enter accepts its default.

get_convoy_statusA

Report this machine's Convoy host presence and, when it is running, its realm, peer, queue, and identity status. This is a host-only read and never wakes TouchDesigner. Explicit convoy_* tools use this host for remote routing; ordinary Envoy tools remain local until convoy_select_node explicitly pins this session to a Convoy node.

convoy_select_nodeA

Pin this MCP session's ordinary Envoy tool calls to one exact Convoy node. The selection survives peer dropouts and never falls back to local TouchDesigner. Call with no arguments to inspect the selection, or clear=true to restore direct local routing.

convoy_owletteB

Use Convoy's optional, host-private consumer of Owlette's published API for site/machine inventory, online detail, and command status. Command submission requires a separate local host opt-in and an idempotency key. Owlette is not the Convoy LAN transport and mcp_tool_call is always refused here.

convoy_list_nodesA

List the local and reachable remote Embody nodes known to this machine's Convoy host. Returns stable host/node/runtime identities, connection state, address, and version metadata. Local nodes carry a capabilities field (td_python, full_shell); remote nodes deliberately do not -- absent means unknown, never allowed.

convoy_update_embodyA

Self-update Embody on Convoy nodes to the latest GitHub release -- one node or the whole fleet -- without the TD Python grant. Dispatches the bounded update_embody operation (sha256-pinned manifest, downgrade-refusing) as a durable job per node and returns the handles; poll convoy_get_job. Nodes must run Embody >= 6.0.257 to serve the operation.

convoy_list_controllersA

List live controller sessions, selected targets, leases, and active work across reachable Convoy hosts. Read-only and never wakes TouchDesigner.

convoy_pingB

Measure Convoy reachability to one explicit node through the host-native ping operation. It reports the node's known online state without starting or waking TouchDesigner.

convoy_start_nodeB

Start one exact, previously registered offline TouchDesigner node from its host-pinned launch profile. No executable, path, argv, or environment is accepted from the caller.

convoy_restart_nodeB

Restart one exact running TouchDesigner node. The default require_clean policy refuses dirty, unsaved, or unverifiable state; save_then_restart explicitly saves first. Destructive restart policies are not exposed by this build.

convoy_callC

Relay one Envoy operation to an explicit Embody node. The target is always identified by host_id and node_id; Convoy never silently falls back to a local TouchDesigner instance.

convoy_batchA

Run one ordered Envoy batch on each explicit Convoy target. Targets execute independently and may run concurrently; the result preserves input order and reports partial success. This does not promise distributed atomicity or rollback.

convoy_get_jobB

Read a previously relayed Convoy delivery from its owning peer. Use the target_host_id, convoy_id, and delivery_id returned by convoy_call.

convoy_ack_jobA

Acknowledge that this controller has safely observed one terminal Convoy delivery. This idempotent call lets the target release protected result artifacts and eventually reap the job. Verified artifact downloads and successful artifact saves acknowledge automatically; use this tool for other terminal results or to retry an indeterminate acknowledgement.

convoy_get_artifactA

Materialize one private Convoy artifact from its owning host onto this client machine. Images are returned as MCP image content; other files are verified and returned as a local temporary path. Use the artifact reference returned by a Convoy job rather than copying a remote filesystem path.

convoy_save_artifactB

Verify one Convoy artifact and explicitly save it in this bridge project's .embody/convoy/artifacts directory. The project is derived from this Envoy bridge's own configuration; remote paths and caller-selected project roots are never used. Existing files are preserved unless overwrite is true.

convoy_cancel_jobA

Request cancellation from the exact host that owns a durable delivery. Queued work cancels definitively; an active host subprocess receives best-effort process-tree cancellation. TouchDesigner work already past its host boundary is reported as non-cancellable, never simulated. Cancellation never wakes TouchDesigner.

convoy_forget_nodeA

Delete a stale node row (the row a renamed, moved, or deleted project left behind). Without host_id it acts on THIS machine's Convoy host app; with host_id (the owning host from convoy_list_nodes) the request is relayed to that host over its live session and its rules decide. Refuses while the node still has a delivery that has not FINISHED, and names the blocking delivery ids so they can be cancelled; a finished result never holds a row, because results are fetched by delivery id and outlive it; an online row is never forgotten. Rows unseen for a week are evicted automatically; this is the immediate manual path. The Convoy page's Forget Offline Nodes... button is the in-TD bulk equivalent, fleet-wide, with an enumerating confirmation.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 23 tools

Disambiguation4/5

Most tools have clearly distinct purposes, with detailed descriptions clarifying local vs Convoy-remote targets and lifecycle steps. A few pairs like convoy_get_job/convoy_get_artifact and launch_td/convoy_start_node could be confused, but the descriptions provide strong differentiation.

Naming Consistency4/5

Naming is predominantly consistent snake_case with a convoy_ prefix namespace for Convoy tools and verb_noun for local TouchDesigner tools. Minor deviation: get_convoy_status reverses the pattern (should be convoy_get_status), and suffixes vary between _td and _node for similar actions.

Tool Count3/5

23 tools is on the heavy side for this domain; while each tool appears to have a purpose, the set feels large and could be streamlined. The count falls in the borderline 16-25 range that feels heavy per the rubric.

Completeness3/5

The set covers Convoy orchestration (jobs, artifacts, nodes, controllers) and local TouchDesigner lifecycle (launch, restart, dialogs, status) fairly well. Notable gaps include no way to execute arbitrary Envoy operations locally and no plain stop/quit for TouchDesigner, which limits content-control workflows.

Maintenance

ActivityActive
ResponsivenessResponsive