TDPilot
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TD_MCP_HOST | No | Host for the MCP server (supports hostnames like desktop-3lurf0p.tail88651a.ts.net) | 127.0.0.1 |
| TD_MCP_PORT | No | Port for the MCP server | 9981 |
| TD_MCP_SCHEME | No | Scheme for the MCP server (http or https) | http |
| TD_MCP_WS_PORT | No | WebSocket port for the MCP server | 9982 |
| TD_MCP_EXEC_MODE | No | Execution mode for Python exec (off, restricted, standard, full) | restricted |
| TD_MCP_HTTP_PORT | No | HTTP port for the MCP server | 8765 |
| TD_MCP_TRANSPORT | No | Transport mode for the MCP server (stdio or streamable_http) | stdio |
| TDPILOT_MEMORY_DIR | No | Override default ~/.tdpilot/memory/ path | |
| TDPILOT_PROJECT_NAME | No | Project name for per-project technique memory | |
| TD_MCP_STREAM_MAX_FPS | No | Maximum frames per second for streaming | 15.0 |
| TD_MCP_CAPTURE_QUALITY | No | Capture quality for screenshots (0-1) | 0.3 |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| td_tool_batchA | Dispatch up to 8 tool calls in one model roundtrip. Each sub-call's result is returned in a structured array — per-call failures don't abort siblings. Use this for read-only sweeps ("inspect 5 things at once") to save model-to-server-to-model latency. Hard constraints:
Returns: {"ok": True, "count": int, "results": [ {"tool": str, "ok": bool, "result": dict|None, "error": str|None, "elapsed_ms": int}, ... ]} |
| td_patch_planA | (Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Compatibility/expert surface for typed PatchPlan construction. For new concept-to-network TouchDesigner builds, prefer td_brain_plan followed by td_brain_execute. |
| td_patch_previewA | (Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Read-only PatchPlan preview for compatibility/expert workflows. For new visual builds, prefer td_brain_plan because it carries concept, corpus, and validation context. |
| td_patch_applyA | (Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Destructive compatibility/expert PatchPlan executor. Prefer td_brain_execute for BrainPlans because it is the default validated transaction path for TDPilot-authored builds. |
| td_patch_validateA | (Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Read-only validation for patch compatibility workflows. BrainPlan workflows should use td_brain_plan and td_brain_execute so validation is tied to the authored plan. |
| td_patch_variationsA | (Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Generate PatchPlan variants for compatibility/expert workflows. For new creative builds, start with td_brain_plan so variants remain grounded in a BrainPlan. |
| td_brain_planA | Use this when a request is pattern-shaped with an exact validated topology or technique composition. It returns a non-mutating concept graph, typed patch plan, and server-derived intent coverage; execute only when coverage is complete. For artistic, multi-domain, spatial, camera/depth/fog, or implicit-architecture requests, start directly with td_brain_ground → td_brain_propose. |
| td_brain_groundA | Use this when the request is artistic, multi-domain, spatial, or implicit-architecture requests, and whenever td_brain_plan returns blocked: it returns a read-only grounding pack (task features, corpus evidence, candidate operators, parameter contracts, operator availability, live state, exemplars, and the draft authoring contract) so you can write a draft for td_brain_propose. Do not use it for trivial single-node edits. |
| td_brain_proposeA | Use this when you have authored a draft candidate graph from a td_brain_ground grounding pack and need TDPilot to validate it into an executable BrainPlan. It is read-only and never mutates TouchDesigner: accepted drafts are compiled, gated by parameter semantics, and cached server-side so td_brain_execute(plan_id=...) can run them immediately; rejected drafts return machine-readable rejections to fix and retry. |
| td_brain_executeA | DEFAULT apply path for a BrainPlan: use this when you already have a BrainPlan from td_brain_plan (or a draft from td_brain_propose) and need TDPilot to apply it transactionally with validation, rollback, and optional local learning. Prefer the lower-level td_transaction_apply only when you hold a ready PatchPlan/BrainPlan and want to drive raw transaction controls yourself (no grounding, no learning). Do not use the legacy td_plan_patch / td_patch_* pipeline for new builds. |
| td_transaction_applyA | Low-level executor: use this when you already hold a ready PatchPlan or BrainPlan and want to drive raw preflight, snapshot, validation, dry-run, max-op, and rollback controls yourself. For the normal BrainPlan build flow prefer td_brain_execute, which wraps this layer and adds grounding-aware concept profiles and optional local learning. Do not use the legacy td_plan_patch / td_patch_* pipeline for new builds. |
| td_cockpit_renderA | Use this when you already have BrainPlan or transaction data and want to render the optional local cockpit UI. This is read-only presentation; call td_brain_plan or td_brain_execute first for authoritative data. |
| td_get_contentA | Read the text or table content of a DAT node. |
| td_set_contentA | Write text or table content into a DAT node (overwrites existing). |
| td_custom_parametersA | Create or update a custom parameter page on a COMP. |
| td_exec_pythonA | Execute Python code inside TouchDesigner. |
| td_screenshotA | Capture a TOP frame as base64 inline, or to disk via Use this for a quick single-frame visual: with |
| td_chop_dataA | Read CHOP channel data (values/samples). |
| td_geometry_dataA | Read SOP/POP geometry data (points/prims). |
| td_pop_inspectB | Read structured POP metadata and attribute samples. |
| td_cooking_infoB | Get cooking/performance info for a subtree. |
| td_search_nodesA | Search nodes across a subtree. Legacy scopes ('name'/'type'/'family'/'all') hit the existing TD-side
|
| td_get_errorsA | Get errors + warnings for a node (optionally recursive). |
| td_subscribeB | Subscribe to runtime TD events for a node. |
| td_unsubscribeA | Remove a runtime-event subscription for a node path. |
| td_get_eventsA | Read recent runtime event history from the server-side event buffer. |
| td_get_nodesB | List the child operators (nodes) directly under a network path. |
| td_get_node_detailA | Get detailed info about a node (type, errors, warnings, parameters). The parameters dict is capped at param_limit entries (default 50, hard ceiling 200) — full COMP serialization can blow past 80 KB. Use td_get_params with name/page filters when you need the rest. When |
| td_get_paramsB | Get parameter values and metadata for a node. |
| td_set_paramsA | Set node parameters (static values or live expressions). Parameter-semantics checks are advisory here by default (param_semantics_policy= 'warn'): findings are attached but the write proceeds, since some out-of-range values are legitimate in TD (e.g. extending a soft UI range). Use param_semantics_policy='block', or the brain/transaction path which gates automatically, when you want invalid bindings to stop the write. |
| td_create_nodeA | Create a new TouchDesigner operator of a given type under a parent path. |
| td_delete_nodeB | Delete a node by its absolute path. v1.4.6 Bug A PoC: explicit-args signature instead of the old
|
| td_copy_nodeB | Copy/duplicate an existing node (with its parameters) to a new node. |
| td_rename_nodeA | Rename a node to a new name within its parent network. |
| td_connect_nodesB | Connect two nodes (source output → target input). |
| td_disconnectB | Disconnect a node's input or output connector. |
| td_get_connectionsB | Get upstream/downstream connections for a node. |
| td_get_hintsA | Return concise, source-cited hints for a topic, op_type, or intent. Sources include hint packs shipped under The response shape: |
| td_get_infoA | Get TouchDesigner project info: version, build, project name, OS. Returns a JSON envelope. |
| td_list_familiesA | List available operator families (TOP, CHOP, SOP, DAT, COMP, MAT, POP). Returns a JSON envelope. |
| td_get_capabilitiesA | Detect MCP client capabilities plus server/component versions and runtime config. Returns a JSON envelope. |
| td_get_server_metricsA | Get MCP server runtime metrics: telemetry, events, streams, safety, snapshots, jobs. Returns a JSON envelope. |
| td_search_official_docsB | Search the knowledge corpus for operators, palette, releases, snippets, or articles. |
| td_get_operator_docC | Get full documentation card for an operator type or a specific node. |
| td_get_param_helpB | Get help for a specific parameter: live metadata + knowledge card entry + current value. |
| td_lookup_snippetsA | Search for OP Snippets by keyword and optional family. |
| td_lookup_palette_componentA | Look up a palette component by name or search by query. |
| td_get_release_deltaA | Get release notes for a specific build (default: current). |
| td_get_build_compatibilityB | Check if an operator type is compatible with a specific build. |
| td_search_popx_docsA | Search POPx operator documentation — GPU particles, falloffs, simulations. |
| td_get_popx_operatorA | Get full documentation for a POPx operator (e.g. 'Particle SIM', 'Shape Falloff'). |
| td_describe_surfaceA | Describe the MCP server surface: tool count, resource count, capabilities, version. |
| td_knowledge_saveA | Persist a free-form markdown knowledge entry (prose/notes/essays). Returns the entry id. The body is stored at ~/.tdpilot/knowledge//entries/.md and the metadata in index.json. Local-only, never pushed anywhere. Prefer td_memory_save (with td_memory_learn) when you want to capture a structured, replayable technique recipe rather than free-form prose. |
| td_knowledge_recallA | Search the free-form markdown knowledge store. Returns summaries (no bodies). Use this for prose reference content — notes, essays, prose-with-math saved
via td_knowledge_save. Use |
| td_knowledge_getA | Fetch the full markdown body + metadata for one entry. |
| td_knowledge_listA | List free-form markdown knowledge-entry summaries, newest first. Prefer td_memory_list for the structured, replayable technique library. |
| td_create_macroC | Instantiate a legacy scaffold; feedback/audio macros are not complete visuals. |
| td_list_macrosA | List all available macro templates (built-in plus user templates). Returns a JSON envelope. |
| td_get_macro_paramsC | Inspect parameters plus truthful capability, I/O, limitations, and completion status. |
| td_memory_learnA | Analyze a network subtree and extract a reusable technique recipe. Auto-detects complexity:
Returns the technique dict — pass it to td_memory_save to persist. |
| td_memory_saveA | Save a structured, replayable technique to the project or global library. Use the output of td_memory_learn as the technique input, or construct a technique dict manually. Prefer td_knowledge_save when you want to capture free-form markdown prose/notes rather than a replayable network recipe. |
| td_memory_recallA | Search the structured, replayable technique library by text query and/or tags. Returns summaries (not full recipes). Use td_memory_replay to rebuild a found technique as live nodes. Prefer td_knowledge_recall when you want free-form markdown notes/essays (prose reference content) rather than replayable recipes. |
| td_memory_replayA | Rebuild a saved technique in a new location in the TD project. Creates nodes, sets parameters and expressions, wires connections. Only works for techniques with a full recipe (small/medium complexity). |
| td_memory_favoriteA | Mark a technique as favorite and/or rate it (0-5). |
| td_memory_promoteA | Copy a project technique to the global library so it's available across all projects. |
| td_memory_exportA | Export the technique library as a portable JSON object for sharing or backup. |
| td_memory_importB | Import techniques from an exported library (from td_memory_export). |
| td_memory_preferencesB | Get, set, list, or delete user preferences. Preferences store things like: preferred color palettes, default resolutions, favorite operator types, naming conventions, etc. |
| td_memory_listA | List saved (structured, replayable) techniques, filterable by scope, tags, and favorites. Prefer td_knowledge_list for the free-form markdown notes/essays store. |
| td_get_activity_logA | Recent tool-call activity from this MCP server's ring buffer. Returns a JSON array of entries newest-first, each with Pairs with the in-TD |
| td_self_updateA | Check for and optionally install a newer TDPilot release from GitHub. Default behavior ( Releases v1.6.9 through v2.0.3 shipped without the Network-only — does not touch TouchDesigner. Safe to run when TD is closed. |
| td_sync_statusB | Report whether the local server, TD component, packages, and public surfaces are in sync. |
| td_sync_diagnoseA | Strict version/auth sync diagnostic without exposing secret material. |
| td_component_notesA | Per-COMP markdown notes — what this subnet does, why it's wired this way,
gotchas, TODOs. External JSON storage by default; |
| td_optimize_visualC | Autonomous visual goal optimization via bounded parameter search. |
| td_describe_dynamicsC | Asynchronous temporal dynamics observation (frame, cooking, events). |
| td_plan_patchA | (Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Legacy compatibility planner returning the pre-v1.5 patch dict shape. For new concept-to-network TouchDesigner work, prefer td_brain_plan followed by td_brain_execute. |
| td_preflight_patchA | (Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Read-only validation for legacy td_plan_patch dicts. For new TDPilot-authored builds, use the BrainPlan path: td_brain_plan then td_brain_execute. |
| td_validate_recipeA | (Legacy — prefer td_brain_plan → td_brain_execute; slated for removal in v3.0.) Read-only recipe compatibility check. Use td_brain_plan for new grounded visual-programming requests that should become a BrainPlan. |
| td_audit_projectA | Read-only project audit. Pair with td_brain_plan for new build/debug requests that need plan-aware changes afterward. |
| td_recommend_official_componentA | Recommend official palette or built-in operator components for a given goal. |
| td_find_official_exampleB | Search for official examples and snippets matching a query. |
| td_explain_better_wayB | Suggest better official alternatives for a given intent, with gotcha warnings. |
| td_timelineA | Read current timeline state: frame, seconds, FPS, playing. Returns a JSON envelope. |
| td_timeline_setA | Control timeline playback: play/pause, jump to frame, set FPS. |
| td_project_lifecycleC | Save/load/undo/redo project lifecycle operations. |
| td_pulse_paramA | Pulse a pulse-type parameter (e.g. a button par). |
| td_python_helpB | Get Python help documentation for a TD class/module. |
| td_python_classesA | List available Python classes in the TD runtime. Returns a JSON envelope. |
| td_set_param_boundsB | Set parameter safety bounds with enforcement mode. |
| td_clear_param_boundsB | Clear parameter bounds for specific paths, or all bounds if paths is None. |
| td_detect_instabilityB | Detect instability signals: FPS, heavy cookers, critical errors. |
| td_emergency_stabilizeA | Emergency stabilization: pause timeline, clamp safety, capture baseline snapshot. |
| td_snapshot_sceneB | Capture a scene snapshot (structure + params; optionally visual). |
| td_list_snapshotsA | List saved scene snapshots (newest first). |
| td_diff_snapshotsA | Diff two snapshots, or a snapshot against live state. |
| td_restore_snapshotA | Restore parameter values from a previously saved snapshot. This tool replays the parameter values captured in the snapshot back onto the live TouchDesigner network. It restores parameter values only — it does not add, remove, or rewire nodes. For structural rollback (topology changes such as added/deleted nodes or connection changes) use TouchDesigner's native Ctrl+Z undo stack instead. Use |
| td_get_state_vectorB | Aggregated scene state vector (cached for _tr.TD_STATE_VECTOR_TTL seconds). |
| td_get_timescale_stateA | Read beat/phrase-derived timeline state (bars, beats, phrase position). |
| td_get_focusA | Return where the user currently is in TouchDesigner: active network pane, selection, project metadata, timeline state. Reduces the cold-start tax of needing to ask the user 'what path are you working in?' before every patch. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| td_brain_build | Route, ground, review, execute, and validate a complete TouchDesigner network build. |
| td_brain_debug | Inspect and debug a TouchDesigner network with brain planning, errors, cook stats, and hints. |
| td_brain_validate | Run structural, cook, error, and cheap visual validation for a recently built network. |
| td_snapshot_before_edit | Create a rollback point before risky TouchDesigner edits. |
| td_recover_network | Recover a broken TouchDesigner network using errors, undo, snapshots, and validation. |
| td_learn_validated_technique | Capture a validated TouchDesigner network as reusable local memory. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| td_timeline_state | |
| td_project_state | |
| td_activity_recent | |
| tdpilot_cockpit | Render-only MCP Apps cockpit for BrainPlan, transaction, validation, and rollback state. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dreamrec/TDPilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server