# tdmcp — TouchDesigner MCP server MCP server

Agent View of the PolicyLayer registry record for tdmcp — TouchDesigner MCP server: identity, probed posture, risk grade, and all 334 tools classified. HTML page: https://policylayer.com/tools/io-github-pantani-tdmcp

## Facts

- Server id: `@dpantani/tdmcp`
- Install: `npx -y @dpantani/tdmcp`
- Homepage: https://github.com/Pantani/tdmcp
- Registry record: grade F, identity unverified
- Lifecycle: active
- Rate-limited: no
- Tools: 334
- Tool categories present: Destructive, Execute, Read, Write
- Tags: io github pantani tdmcp, admin, automation
- Record last modified: 2026-06-28T19:38:09.930Z

## Tools (334)

| Tool | Category | Risk | Record |
| --- | --- | --- | --- |
| `delete_td_node` | Destructive | Critical | https://policylayer.com/tools/io-github-pantani-tdmcp/delete-td-node.md |
| `manage_checkpoint` | Destructive | Critical | https://policylayer.com/tools/io-github-pantani-tdmcp/manage-checkpoint.md |
| `refresh_asset_previews` | Destructive | Critical | https://policylayer.com/tools/io-github-pantani-tdmcp/refresh-asset-previews.md |
| `repair_network` | Destructive | Critical | https://policylayer.com/tools/io-github-pantani-tdmcp/repair-network.md |
| `apply_glsl_top_mapping` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/apply-glsl-top-mapping.md |
| `audio_fingerprint_to_visual` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/audio-fingerprint-to-visual.md |
| `auto_repair_loop` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/auto-repair-loop.md |
| `batch_operations` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/batch-operations.md |
| `build_chop_chain` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/build-chop-chain.md |
| `build_pop_chain` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/build-pop-chain.md |
| `build_sop_geometry` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/build-sop-geometry.md |
| `connect_daydream_cloud` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/connect-daydream-cloud.md |
| `control_timeline_transport` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/control-timeline-transport.md |
| `create_ai_mirror` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-ai-mirror.md |
| `create_body_bubbles` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-body-bubbles.md |
| `create_cue_sequencer` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-cue-sequencer.md |
| `create_depth_pop_field` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-depth-pop-field.md |
| `create_energy_structure` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-energy-structure.md |
| `create_engine_comp` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-engine-comp.md |
| `create_gpu_particle_field` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-gpu-particle-field.md |
| `create_growth_system` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-growth-system.md |
| `create_interactive_projection_mapping` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-interactive-projection-mapping.md |
| `create_led_mapper` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-led-mapper.md |
| `create_llm_chain` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-llm-chain.md |
| `create_panic` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-panic.md |
| `create_particle_flock` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-particle-flock.md |
| `create_phrase_locked_cue_engine` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-phrase-locked-cue-engine.md |
| `create_sdf_field` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-sdf-field.md |
| `create_set_navigator` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-set-navigator.md |
| `create_setlist_runner` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-setlist-runner.md |
| `create_shader_park` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-shader-park.md |
| `create_show_failover` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-show-failover.md |
| `create_sidechain_pump` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-sidechain-pump.md |
| `create_simulation` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-simulation.md |
| `create_text_crawl` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-text-crawl.md |
| `create_visual_system` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/create-visual-system.md |
| `detect_pitch` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/detect-pitch.md |
| `drive_streamdiffusion` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/drive-streamdiffusion.md |
| `elicit_missing_args` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/elicit-missing-args.md |
| `enhance_build` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/enhance-build.md |
| `exec_node_method` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/exec-node-method.md |
| `execute_python_script` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/execute-python-script.md |
| `image_to_particles` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/image-to-particles.md |
| `import_shadertoy` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/import-shadertoy.md |
| `install_library_package` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/install-library-package.md |
| `moodboard_to_system` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/moodboard-to-system.md |
| `optimize_performance` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/optimize-performance.md |
| `rebuild_network` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/rebuild-network.md |
| `reload_bridge` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/reload-bridge.md |
| `run_macro_script` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/run-macro-script.md |
| `set_perform_mode` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/set-perform-mode.md |
| `setup_body_tracking` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/setup-body-tracking.md |
| `setup_face_tracking` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/setup-face-tracking.md |
| `setup_hand_tracking` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/setup-hand-tracking.md |
| `setup_segmentation` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/setup-segmentation.md |
| `setup_tdableton` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/setup-tdableton.md |
| `tutorial_companion_pack` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/tutorial-companion-pack.md |
| `vault_repo_sync` | Execute | High | https://policylayer.com/tools/io-github-pantani-tdmcp/vault-repo-sync.md |
| `analyze_project` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/analyze-project.md |
| `apply_creative_card` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/apply-creative-card.md |
| `apply_shader_from_vault` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/apply-shader-from-vault.md |
| `browse_library` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/browse-library.md |
| `browse_vault_library` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/browse-vault-library.md |
| `caption_top` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/caption-top.md |
| `checksum_and_verify_pack` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/checksum-and-verify-pack.md |
| `compact_graph_digest` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/compact-graph-digest.md |
| `compare_operator_docs` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/compare-operator-docs.md |
| `compare_td_nodes` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/compare-td-nodes.md |
| `component_link_health` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/component-link-health.md |
| `copilot_vision` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/copilot-vision.md |
| `detect_onsets` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/detect-onsets.md |
| `detect_tempo` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/detect-tempo.md |
| `diagnose_hardware_environment` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/diagnose-hardware-environment.md |
| `diagnose_tdableton_mapper` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/diagnose-tdableton-mapper.md |
| `diff_library_assets` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/diff-library-assets.md |
| `diff_snapshots` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/diff-snapshots.md |
| `document_network` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/document-network.md |
| `draft_recipe_from_operator_chain` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/draft-recipe-from-operator-chain.md |
| `draft_recipe_from_technique` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/draft-recipe-from-technique.md |
| `draft_recipe_from_tutorial` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/draft-recipe-from-tutorial.md |
| `export_network_to_vault` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/export-network-to-vault.md |
| `extract_audio_features` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/extract-audio-features.md |
| `extract_palette` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/extract-palette.md |
| `find_td_nodes` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/find-td-nodes.md |
| `generate_from_moodboard` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/generate-from-moodboard.md |
| `generate_readme` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/generate-readme.md |
| `get_bridge_logs` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-bridge-logs.md |
| `get_inline_preview` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-inline-preview.md |
| `get_module_help` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-module-help.md |
| `get_node_state_runtime` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-node-state-runtime.md |
| `get_operator_workflow_guide` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-operator-workflow-guide.md |
| `get_preview` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-preview.md |
| `get_td_class_details` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-td-class-details.md |
| `get_td_classes` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-td-classes.md |
| `get_td_node_errors` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-td-node-errors.md |
| `get_td_node_flags` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-td-node-flags.md |
| `get_td_node_parameters` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-td-node-parameters.md |
| `get_td_nodes` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-td-nodes.md |
| `get_td_performance` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-td-performance.md |
| `get_td_topology` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-td-topology.md |
| `get_technique_detail` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-technique-detail.md |
| `get_tutorial` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/get-tutorial.md |
| `import_setlist` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/import-setlist.md |
| `inspect_component_manifest` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/inspect-component-manifest.md |
| `inspect_gpu_and_displays` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/inspect-gpu-and-displays.md |
| `inspect_op_extensions_storage` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/inspect-op-extensions-storage.md |
| `learn_conventions` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/learn-conventions.md |
| `learn_from_my_corpus` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/learn-from-my-corpus.md |
| `library_lineage_graph` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/library-lineage-graph.md |
| `lint_recipe_library` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/lint-recipe-library.md |
| `list_recipes` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/list-recipes.md |
| `load_session_profile` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/load-session-profile.md |
| `plan_td_version_migration` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/plan-td-version-migration.md |
| `plan_visual` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/plan-visual.md |
| `profile_cook_cost` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/profile-cook-cost.md |
| `read_parameter_modes` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/read-parameter-modes.md |
| `recall_similar_work` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/recall-similar-work.md |
| `scaffold_recipe_from_network` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/scaffold-recipe-from-network.md |
| `score_build` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/score-build.md |
| `search_operators` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/search-operators.md |
| `search_python_api` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/search-python-api.md |
| `search_touchdesigner_knowledge` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/search-touchdesigner-knowledge.md |
| `serialize_network` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/serialize-network.md |
| `snapshot_td_graph` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/snapshot-td-graph.md |
| `suggest_operator_chain` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/suggest-operator-chain.md |
| `summarize_td_errors` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/summarize-td-errors.md |
| `validate_library_asset` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/validate-library-asset.md |
| `validate_operator_chain` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/validate-operator-chain.md |
| `watch_node` | Read | Low | https://policylayer.com/tools/io-github-pantani-tdmcp/watch-node.md |
| `add_custom_parameters` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/add-custom-parameters.md |
| `animate_parameter` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/animate-parameter.md |
| `apply_lut` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/apply-lut.md |
| `apply_post_processing` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/apply-post-processing.md |
| `apply_recipe` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/apply-recipe.md |
| `arrange_network` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/arrange-network.md |
| `attach_docs_as_assets` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/attach-docs-as-assets.md |
| `author_script_operator` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/author-script-operator.md |
| `auto_tag_library_asset` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/auto-tag-library-asset.md |
| `bind_audio_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/bind-audio-reactive.md |
| `bind_to_channel` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/bind-to-channel.md |
| `bind_vault_text` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/bind-vault-text.md |
| `capture_to_vault` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/capture-to-vault.md |
| `collect_project_assets` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/collect-project-assets.md |
| `component_changelog_trail` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/component-changelog-trail.md |
| `compose_cue_list` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/compose-cue-list.md |
| `connect_comfyui` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/connect-comfyui.md |
| `connect_nodes` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/connect-nodes.md |
| `create_3d_audio_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-3d-audio-reactive.md |
| `create_3d_scene` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-3d-scene.md |
| `create_ascii_render` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-ascii-render.md |
| `create_audio_glsl_uniforms` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-audio-glsl-uniforms.md |
| `create_audio_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-audio-reactive.md |
| `create_auto_montage` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-auto-montage.md |
| `create_automation_lane` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-automation-lane.md |
| `create_autopilot` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-autopilot.md |
| `create_band_router` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-band-router.md |
| `create_beat_grid_sequencer` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-beat-grid-sequencer.md |
| `create_blob_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-blob-reactive.md |
| `create_body_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-body-reactive.md |
| `create_capture_loop` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-capture-loop.md |
| `create_chop_recorder` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-chop-recorder.md |
| `create_chroma_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-chroma-reactive.md |
| `create_chrome_blobs` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-chrome-blobs.md |
| `create_clip_launcher` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-clip-launcher.md |
| `create_color_grade` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-color-grade.md |
| `create_color_wheels` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-color-wheels.md |
| `create_container` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-container.md |
| `create_control_panel` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-control-panel.md |
| `create_control_surface` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-control-surface.md |
| `create_cubemap_dome` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-cubemap-dome.md |
| `create_data_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-data-reactive.md |
| `create_data_source` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-data-source.md |
| `create_data_source_http_ws` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-data-source-http-ws.md |
| `create_data_visualization` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-data-visualization.md |
| `create_datamosh` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-datamosh.md |
| `create_decks` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-decks.md |
| `create_depth_displacement` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-depth-displacement.md |
| `create_depth_from_2d` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-depth-from-2d.md |
| `create_depth_silhouette` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-depth-silhouette.md |
| `create_displacement_warp` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-displacement-warp.md |
| `create_dither` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-dither.md |
| `create_dmx_fixture_pipeline` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-dmx-fixture-pipeline.md |
| `create_dome_output` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-dome-output.md |
| `create_envelope_follower` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-envelope-follower.md |
| `create_euclidean_sequencer` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-euclidean-sequencer.md |
| `create_external_io` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-external-io.md |
| `create_facade_mapping` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-facade-mapping.md |
| `create_feedback_network` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-feedback-network.md |
| `create_feedback_tunnel` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-feedback-tunnel.md |
| `create_flow_abstraction` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-flow-abstraction.md |
| `create_fluid_sim` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-fluid-sim.md |
| `create_gaussian_splat_scene` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-gaussian-splat-scene.md |
| `create_generative_art` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-generative-art.md |
| `create_generative_audio` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-generative-audio.md |
| `create_glitch` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-glitch.md |
| `create_glsl_material` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-glsl-material.md |
| `create_glsl_shader` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-glsl-shader.md |
| `create_halftone` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-halftone.md |
| `create_hand_ableton_mapper` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-hand-ableton-mapper.md |
| `create_hand_gesture_bus` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-hand-gesture-bus.md |
| `create_hand_hologram` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-hand-hologram.md |
| `create_histogram_scope` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-histogram-scope.md |
| `create_jfa_voronoi` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-jfa-voronoi.md |
| `create_kaleidoscope` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-kaleidoscope.md |
| `create_keyer` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-keyer.md |
| `create_keyframe_animation` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-keyframe-animation.md |
| `create_kinect_wall_harp` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-kinect-wall-harp.md |
| `create_kinetic_text` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-kinetic-text.md |
| `create_layer_mixer` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-layer-mixer.md |
| `create_layer_stack` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-layer-stack.md |
| `create_live_source` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-live-source.md |
| `create_look_bank` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-look-bank.md |
| `create_macro` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-macro.md |
| `create_media_bin` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-media-bin.md |
| `create_mesh_warp` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-mesh-warp.md |
| `create_midi_map` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-midi-map.md |
| `create_midi_note_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-midi-note-reactive.md |
| `create_modulators` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-modulators.md |
| `create_motion_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-motion-reactive.md |
| `create_multi_output` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-multi-output.md |
| `create_node_chain` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-node-chain.md |
| `create_npr_filter` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-npr-filter.md |
| `create_optical_flow` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-optical-flow.md |
| `create_palette` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-palette.md |
| `create_particle_system` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-particle-system.md |
| `create_pbr_scene` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pbr-scene.md |
| `create_phone_gesture` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-phone-gesture.md |
| `create_phone_remote` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-phone-remote.md |
| `create_pixel_sort` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pixel-sort.md |
| `create_point_cloud` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-point-cloud.md |
| `create_pop_field` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pop-field.md |
| `create_pop_geometry` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pop-geometry.md |
| `create_pop_growth` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pop-growth.md |
| `create_pop_lines_pointcloud` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pop-lines-pointcloud.md |
| `create_pop_particle_system` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pop-particle-system.md |
| `create_pose_controlnet_driver` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pose-controlnet-driver.md |
| `create_pose_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pose-reactive.md |
| `create_pose_skeleton` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pose-skeleton.md |
| `create_pose_tracking` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-pose-tracking.md |
| `create_preset_morph` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-preset-morph.md |
| `create_prob_sequencer` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-prob-sequencer.md |
| `create_projection_mapping` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-projection-mapping.md |
| `create_python_script` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-python-script.md |
| `create_raymarch_scene` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-raymarch-scene.md |
| `create_reaction_diffusion` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-reaction-diffusion.md |
| `create_replicator` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-replicator.md |
| `create_safety_blackout_chain` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-safety-blackout-chain.md |
| `create_scene_timeline` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-scene-timeline.md |
| `create_scheduler` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-scheduler.md |
| `create_shader_lib` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-shader-lib.md |
| `create_shared_memory_bridge` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-shared-memory-bridge.md |
| `create_slit_scan` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-slit-scan.md |
| `create_spectrum` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-spectrum.md |
| `create_stage_dashboard` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-stage-dashboard.md |
| `create_stipple_pointcloud` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-stipple-pointcloud.md |
| `create_strange_attractor` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-strange-attractor.md |
| `create_strobe` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-strobe.md |
| `create_td_node` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-td-node.md |
| `create_tempo_sync` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-tempo-sync.md |
| `create_test_pattern` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-test-pattern.md |
| `create_text_3d` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-text-3d.md |
| `create_text_overlay` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-text-overlay.md |
| `create_time_echo` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-time-echo.md |
| `create_transient_reactive` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-transient-reactive.md |
| `create_transition` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-transition.md |
| `create_two_way_surface` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-two-way-surface.md |
| `create_vector_lines` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-vector-lines.md |
| `create_video_player` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-video-player.md |
| `create_video_scopes` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-video-scopes.md |
| `create_video_synth` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-video-synth.md |
| `create_vintage_lens` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-vintage-lens.md |
| `create_voxel_stack` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-voxel-stack.md |
| `create_waveform` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-waveform.md |
| `create_xy_pad` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/create-xy-pad.md |
| `curated_collection_pack` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/curated-collection-pack.md |
| `disconnect_nodes` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/disconnect-nodes.md |
| `duplicate_network` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/duplicate-network.md |
| `edit_dat_content` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/edit-dat-content.md |
| `export_look_tox` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/export-look-tox.md |
| `export_palette_component` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/export-palette-component.md |
| `export_recipe_bundle` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/export-recipe-bundle.md |
| `export_setlist_to_vault` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/export-setlist-to-vault.md |
| `export_sop_to_svg` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/export-sop-to-svg.md |
| `extend_data_source_fabric` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/extend-data-source-fabric.md |
| `generate_library_index` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/generate-library-index.md |
| `generative_classics_pack` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/generative-classics-pack.md |
| `import_isf_shader` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/import-isf-shader.md |
| `import_model` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/import-model.md |
| `import_recipe_bundle` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/import-recipe-bundle.md |
| `import_recipe_from_url` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/import-recipe-from-url.md |
| `learn_control` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/learn-control.md |
| `local_marketplace_index` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/local-marketplace-index.md |
| `log_performance` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/log-performance.md |
| `macro_recorder` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/macro-recorder.md |
| `make_portable_tox` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/make-portable-tox.md |
| `manage_annotation` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/manage-annotation.md |
| `manage_component` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/manage-component.md |
| `manage_component_storage` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/manage-component-storage.md |
| `manage_cue` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/manage-cue.md |
| `manage_packages` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/manage-packages.md |
| `manage_presets` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/manage-presets.md |
| `merge_vaults` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/merge-vaults.md |
| `morph_pack` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/morph-pack.md |
| `multipass_3d_depth` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/multipass-3d-depth.md |
| `post_passes_3d` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/post-passes-3d.md |
| `project_documentation_site` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/project-documentation-site.md |
| `provenance_stamp` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/provenance-stamp.md |
| `publish_recipe_bundle` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/publish-recipe-bundle.md |
| `randomize_controls` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/randomize-controls.md |
| `record_movie` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/record-movie.md |
| `render_output` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/render-output.md |
| `save_component_to_vault` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/save-component-to-vault.md |
| `save_recipe_to_vault` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/save-recipe-to-vault.md |
| `scaffold_extension` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/scaffold-extension.md |
| `scaffold_genre` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/scaffold-genre.md |
| `scaffold_recipe_template` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/scaffold-recipe-template.md |
| `scaffold_show` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/scaffold-show.md |
| `scaffold_tool_generator` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/scaffold-tool-generator.md |
| `scaffold_vault` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/scaffold-vault.md |
| `set_dat_content` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/set-dat-content.md |
| `set_parameter_expression` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/set-parameter-expression.md |
| `set_parameters_batch` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/set-parameters-batch.md |
| `setup_mediapipe_plugin` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/setup-mediapipe-plugin.md |
| `setup_output` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/setup-output.md |
| `style_memory` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/style-memory.md |
| `swap_operator` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/swap-operator.md |
| `sync_external_clock` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/sync-external-clock.md |
| `sync_presets_vault` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/sync-presets-vault.md |
| `sync_timecode` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/sync-timecode.md |
| `tag_and_search_library` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/tag-and-search-library.md |
| `update_td_node_parameters` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/update-td-node-parameters.md |
| `variant_pack` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/variant-pack.md |
| `version_library_asset` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/version-library-asset.md |
| `write_agent_guide` | Write | Medium | https://policylayer.com/tools/io-github-pantani-tdmcp/write-agent-guide.md |

## Tool descriptions

- `delete_td_node` — DESTRUCTIVE: permanently remove one node from the project by path (a COMP also takes its children with it); this cannot be undone via the API. Returns {deleted} with the path that was removed. Only call this when the user explicitly asks…
- `manage_checkpoint` — Store / restore / list / delete a full snapshot of a sub-network — an
- `refresh_asset_previews` — Capture fresh preview PNG assets from one or more live TOP nodes and write them to disk. Use it to regenerate stale thumbnails for library/package assets after a network changes; requires a running TouchDesigner bridge and writes image f…
- `repair_network` — Bounded, autonomous repair: scan cook errors under a subtree, classify each, and plan a safe fix, capped at max_steps so it can never run away. Defaults to dry_run (PLAN only, no changes). Set dry_run:false to apply the known-safe fixes …
- `apply_glsl_top_mapping` — Build a self-contained GLSL TOP network from a pre-translated mapping (fragment + uniforms + channels + controls). Foundation primitive used by Shadertoy and ISF importers; also reachable directly for power users with a hand-translated f…
- `audio_fingerprint_to_visual` — Sample a few seconds of audio inside TouchDesigner, compute a 4-feature fingerprint (tempo, spectral centroid, onset density, dynamic range), run a deterministic heuristic mapping to pick a matching Layer 1 generator (create_glitch / cre…
- `auto_repair_loop` — Driver: scan a subtree for cook errors, cluster them, route each cluster to the right fix (calls repair_network for structural/expression/flag issues; surfaces fix_shader / fix_reactivity as prompt hand-offs the agent must execute next t…
- `batch_operations` — Run an ordered list of create / connect / setParam operations in one call (fail-forward, per-operation warnings; not transactional). Exposes the network builder as a general primitive — distinct from set_parameters_batch, which only sets…
- `build_chop_chain` — Declarative Layer-2 builder for an ordered CHOP processing chain. Pass an
- `build_pop_chain` — Declarative Layer-2 builder for an ordered POP (Point OPerator) chain.
- `build_sop_geometry` — Declarative Layer-2 builder for an ordered SOP geometry chain. Pass an
- `connect_daydream_cloud` — Create a Daydream cloud-hosted StreamDiffusion bridge in TD.
- `control_timeline_transport` — Drive the TouchDesigner project timeline: play, pause, seek to a frame, jump to a named cue, or set playback rate. Returns the timeline state after the action so a copilot can verify the change took effect. NOTE: pausing will freeze any …
- `create_ai_mirror` — Layer 1 COMBO: wires the canonical 2026 AI-mirror installation in one MCP call — camera (or synthetic / existing TOP) → StreamDiffusion (img2img live, delegated to drive_streamdiffusion) → Syphon/Spout/NDI/internal output → a prompt+stre…
- `create_body_bubbles` — Create a MediaPipe-ready interactive bubble installation over the live camera: a detected open palm emits soap-like bubbles, body and hand landmarks act as soft colliders that can bat or lift them, a visible body contour is rendered in t…
- `create_cue_sequencer` — Build a bar-quantized cue timeline: a Beat CHOP (on the global tempo) + a CHOP Execute DAT that, on each bar (or beat) boundary, advances through an ordered list of steps and recalls — or morphs over morph_seconds — that step
- `create_depth_pop_field` — Build a depth-driven GPU POP scatter field: consumes a depth/mask TOP and uses
- `create_energy_structure` — [experimental] Build a song-structure (build / drop / breakdown) edge detector COMP with adaptive thresholds. Listens to an existing audio CHOP (audioSource) or a freshly created Audio Device In, follows a long-window envelope, and runs …
- `create_engine_comp` — Drop a TouchDesigner Engine COMP that loads an external .tox in a separate TD subprocess —
- `create_gpu_particle_field` — Build a high-count GPU particle / point field: position and velocity are simulated entirely on the GPU in two RGBA32float feedback-TOP loops (velocity integrates forces — noise/curl/gravity; position integrates velocity), then a Geometry…
- `create_growth_system` — Build an L-system / vine-growth generator: a Script SOP iterates a context-free rewriting grammar from
- `create_interactive_projection_mapping` — Build a synthetic-safe interactive projection mapping rig for a USB webcam plus projector: camera/synthetic/existing TOP input, frame-difference motion field, placeholder blob/post-it mask, cyan dot and magenta card visual TOPs, manual C…
- `create_led_mapper` — Pixel-map a source TOP onto an LED fixture layout and send per-pixel colors out as DMX over Art-Net/sACN. Resizes the source to a tiny WxH grid (one texel = one fixture pixel), samples it into per-pixel r/g/b channels with a TOP-to-CHOP,…
- `create_llm_chain` — Stand up a prompt → response LLM chain inside TouchDesigner as a self-contained baseCOMP.
- `create_panic` — Build a live-performance safety control — the
- `create_particle_flock` — Build a boids-style GPU particle flock: position and velocity are simulated entirely on the GPU in two RGBA32float feedback-TOP loops, where the velocity shader implements the three classic boids rules — separation, alignment, cohesion —…
- `create_phrase_locked_cue_engine` — Build a DJ/VJ phrase-quantized cue-lock engine. Any incoming pulse CHOP (Button, MIDI In, OSC In, composeCueList trigger) is queued FIFO and fired on the next 1/2/4/8/16/32/64-bar phrase boundary derived from the global project tempo. Li…
- `create_sdf_field` — Build a programmable signed-distance-field (SDF) raymarcher in TouchDesigner as a self-contained GLSL TOP. Compose a CSG tree of sphere / box / torus primitives with union / intersect / subtract boolean ops and optional smooth blending. …
- `create_set_navigator` — Build a hands-light stage navigator (the QLab model) for stepping through an ordered scene/cue list: Next / Prev to move the pointer, Go to fire the current scene
- `create_setlist_runner` — Layer-1 wall-clock setlist player for rehearsed VJ shows. Pass
- `create_shader_park` — Compile Shader Park JavaScript sculpture code with shader-park-core and instantiate it as a self-contained TouchDesigner GLSL MAT scene with live controls. Use the companion shader-park:tox script when you specifically want the official …
- `create_show_failover` — Build a live-show watchdog: a Switch TOP (blend=1 cross-dissolve) between a primary source TOP (NDI/camera/Spout/Syphon path, or a synthetic noiseTOP when none is given) and an MP4 fallback (or a constantTOP when no file is given), drive…
- `create_sidechain_pump` — EXPERIMENTAL — One-call
- `create_simulation` — Build a GPU simulation:
- `create_text_crawl` — Build a multi-line animated text crawl / ticker / credits roll / typewriter reveal inside a self-contained baseCOMP. Three modes:
- `create_visual_system` — Create a complete visual system from a natural-language description. Classifies intent (audio-reactive, particle, feedback, reaction-diffusion, landscape, generative) and delegates to the matching Layer-1 builder (or a tag-matched recipe…
- `detect_pitch` — EXPERIMENTAL monophonic pitch tracker. Estimates the dominant musical pitch of live audio and exposes pitch_hz (frequency in Hz), note (MIDI note number), and confidence (peak magnitude) on a Null CHOP — bind a colour/parameter to op(
- `drive_streamdiffusion` — Wraps the community StreamDiffusionTD.tox (by dotsimulate) into a one-shot Layer 1 setup: locate the .tox via candidate-path discovery, drop it into a fresh baseCOMP, wire a camera/source TOP into its input, set the prompt/strength/cfg/s…
- `elicit_missing_args` — Use the schema + LLM to propose values for a tool call
- `enhance_build` — Run score_build, ask the configured LLM for up to N allowlisted tool calls that would raise the weakest sub-scores, and optionally auto-apply them. autoApply mutates the project and is NOT idempotent (re-runs can stack effects). Allowlis…
- `exec_node_method` — Escape hatch — invoke an arbitrary Python method on a node (operator). Prefer structured tools where one exists; use this for operations they don
- `execute_python_script` — Escape hatch — run an arbitrary Python script inside the TouchDesigner process. Prefer the structured tools (find_td_nodes, get_td_node_parameters, update_td_node_parameters, summarize_td_errors, snapshot_td_graph, …); reach for this onl…
- `image_to_particles` — Turn any image (a file path or an existing TOP) into a GPU particle field: each particle
- `import_shadertoy` — Build a GLSL TOP from a Shadertoy URL, ID, or pasted source. Wires iChannels (defaulting to noise placeholders), exposes Speed (and optional Mouse) controls, and captures a preview. First fetch on macOS may trigger an outgoing-connection…
- `install_library_package` — Install a local package folder, zip, tox, or manifest into a local tdmcp package directory.
- `moodboard_to_system` — Ingest 1..6 moodboard images and build a matching generative system in TouchDesigner. Uses the vision-capable local LLM when configured to extract palette + motion + generator pick (palette hint, generator from {audio_reactive, generativ…
- `optimize_performance` — Scan a network for cook-time bottlenecks and (optionally) fix them. By default it reports the slowest nodes with a concrete suggestion each. With apply:true it lowers the resolution of the flagged TOPs by
- `rebuild_network` — Reconstruct a live network inside a COMP from a serialize_network spec — the REBUILD half of a git-diffable round-trip. Takes a JSON spec of nodes (name, operator type, parameters as constants/expressions/binds, inbound wires by name, op…
- `reload_bridge` — Hot-reload the bridge
- `run_macro_script` — Replay a
- `set_perform_mode` — Toggle perform mode — the one switch the artist flips before going live.
- `setup_body_tracking` — One-shot body tracking from a webcam: loads the free mediapipe-touchdesigner ENGINE (install it first with
- `setup_face_tracking` — One-shot face-landmark tracking from a webcam: loads the MediaPipe ENGINE (install first with
- `setup_hand_tracking` — One-shot MediaPipe hand tracking from a webcam: loads the mediapipe-touchdesigner ENGINE (install with
- `setup_segmentation` — One-shot selfie segmentation via the MediaPipe TouchDesigner engine (install with
- `setup_tdableton` — Wire up an Ableton Live bridge inside a tdmcp-managed container. Auto mode probes
- `tutorial_companion_pack` — Build a teaching/selling companion for a network: snapshot the COMP
- `vault_repo_sync` — Read-mostly git wrapper for the configured Obsidian vault directory.
- `analyze_project` — Diagnose a network for cleanup: report likely-dead operators (zero wired outputs, unreferenced, not displayed), broken external-file dependencies (file parameters pointing at missing files), orphan COMPs, and a dependency map of which op…
- `apply_creative_card` — Read a Creative RAG card by id, pick one of its
- `apply_shader_from_vault` — READ a shader note from the Obsidian vault (a
- `browse_library` — Browse built-in/vault recipes and optional local component packages. Read-only discovery step before instantiating a recipe (apply_recipe) or installing a package (install_library_package); returns the matching recipes and packages so an…
- `browse_vault_library` — Read-only: list the vault
- `caption_top` — Read-only: render a TOP
- `checksum_and_verify_pack` — Compute or verify SHA-256 checksums for tdmcp artifacts (.tox, .recipe.json, bundles).
- `compact_graph_digest` — Read-only: compress a TD subtree into a structured digest under max_tokens (default 500).
- `compare_operator_docs` — Read-only: compare two TouchDesigner operator types from the embedded offline knowledge base, including overview metadata plus shared and unique documented parameters. This compares operator documentation, not live node settings; use com…
- `compare_td_nodes` — Read-only: diff the parameters of two nodes, returning only the values that differ (by default). Returns {type_match, differing_count, differing[], same_count}. Useful for aligning settings across similar operators; compares two live nod…
- `component_link_health` — Probe live COMPs in the running project for externaltox paths and report missing or broken linked component files. Read-only diagnostic: run it when externally-linked .tox components may have moved or gone stale, before relying on them i…
- `copilot_vision` — Capture a TOP as a preview image and ask the configured multimodal LLM a question about it. Returns
- `detect_onsets` — Build a transient/onset detector that flags kick/snare/hi-hat hits in live audio and exposes a per-band pulse channel (a 0→1 spike on each hit) on a Null CHOP. Unlike create_tempo_sync (a fixed internal clock), this follows the ACTUAL au…
- `detect_tempo` — EXPERIMENTAL automatic tempo (BPM) detection WITHOUT manual tapping. Detects beat onsets in live audio (kick band → RMS energy → moving-baseline threshold, reusing detect_onsets
- `diagnose_hardware_environment` — Read-only: check whether TouchDesigner is reachable, whether display/projector topology matches expectations, and whether generated sensor/helper status DATs such as source_status or bridge_status are healthy. This is a room/hardware pre…
- `diagnose_tdableton_mapper` — Inspect a TouchDesigner TDAbleton mapper COMP and its source CHOP. Reports common
- `diff_library_assets` — Offline deep diff of two saved library assets on disk (recipe JSONs, component
- `diff_snapshots` — Compare two network snapshots (from snapshot_td_graph) and return a readable diff: which nodes were added or removed, which connections changed, and which parameters changed (with before/after values). Snapshot before an edit and after t…
- `document_network` — Document an EXISTING network: read its nodes and connections and return a readable map — counts by operator family and type, plus a Mermaid flowchart of the data flow you can paste into docs. Unlike plan_visual (which plans from a descri…
- `draft_recipe_from_operator_chain` — Read-only: convert an ordered TouchDesigner operator chain into a RecipeSchema draft without writing files or touching the TD bridge.
- `draft_recipe_from_technique` — Read-only: convert an embedded TouchDesigner technique with GLSL source into a RecipeSchema draft without writing files or touching the TD bridge.
- `draft_recipe_from_tutorial` — Read-only: extract a conservative operator chain from an embedded TouchDesigner tutorial and draft a RecipeSchema JSON without writing files or touching the TD bridge.
- `export_network_to_vault` — READ an existing TD network
- `extract_audio_features` — Build an audio-analysis chain that exposes ready-to-bind reactive channels — overall level plus bass/mid/treble band energies — on a Null CHOP. Unlike create_audio_reactive (which renders a spectrum visual), this produces the raw signals…
- `extract_palette` — Sample dominant colors from a TOP by capturing its preview PNG and running deterministic k-means on the decoded RGB pixels. Returns
- `find_td_nodes` — Read-only: search a network for nodes by name pattern and/or operator type, recursively by default. Returns {count, truncated, matches/paths}. Prefer this over get_td_nodes when you are looking for specific nodes anywhere in a sub-tree (…
- `generate_from_moodboard` — READ a moodboard note (frontmatter
- `generate_readme` — Produce a Markdown project document for any COMP or project: family/type counts, custom-parameter table, inputs/outputs, child inventory, external file dependencies, and an optional preview thumbnail of the output TOP. Use
- `get_bridge_logs` — Read-only: collect recent cook errors and warnings from the running TouchDesigner project for debugging. Walks the operator tree under
- `get_inline_preview` — Read-only one-shot inspection of a TOP: small base64 thumbnail (default 256² JPEG) + parent error sweep (BFS up
- `get_module_help` — Read-only: human-readable Markdown help (description, members, method signatures) for a TouchDesigner Python class or module, from the embedded knowledge base (offline). Returns formatted text, or {found:false, suggestions[]} of near-nam…
- `get_node_state_runtime` — Read-only: inspect a single operator
- `get_operator_workflow_guide` — Read-only: return an embedded TouchDesigner operator workflow guide with common inputs, outputs, examples, and next-operator suggestions. For unknown operators, returns candidate guide ids instead of failing.
- `get_preview` — Capture a TOP node
- `get_td_class_details` — Read-only: full STRUCTURED documentation for one TouchDesigner Python class (members + methods) from the embedded knowledge base (offline). Returns the class object, or {found:false, suggestions[]} of near-name matches if unknown. Use ge…
- `get_td_classes` — Read-only: list TouchDesigner Python API class names from the embedded knowledge base (works offline, never touches TD). Returns {classes[]} of name/displayName entries. Optionally filter by name. Use get_td_class_details or get_module_h…
- `get_td_node_errors` — Read-only: check one node (or, with recursive:true, its whole sub-network) for cook/compile errors and warnings. Pass
- `get_td_node_flags` — Read-only: report each node
- `get_td_node_parameters` — Read-only: read the current parameters (and inputs/outputs) of one node. Returns {path, type, name, parameters, inputs, outputs}. Pass
- `get_td_nodes` — Read-only: list the DIRECT child nodes of one COMP. Defaults to a compact summary (count + type breakdown + sample paths); pass detail_level:
- `get_td_performance` — Read-only: report cook times under a network (recursively by default, slowest node first) and warn about nodes that exceed the frame budget. Returns {targetFps, frameBudgetMs, totalCookMs, nodes[], warnings[]} and changes nothing. Use th…
- `get_td_topology` — Read-only: return the nodes AND the connections (wiring) under a network root, flagging obvious structural issues. Returns {nodeCount, connectionCount, issues[], topology}. Use this when you need how nodes are wired together; use get_td_…
- `get_technique_detail` — Read-only: inspect embedded TouchDesigner technique packs and individual techniques, with optional code snippets and setup/workflow details.
- `get_tutorial` — Read-only: list embedded TouchDesigner tutorials, search tutorial metadata/content, or retrieve one tutorial by id/name with optional full content.
- `import_setlist` — READ a setlist note (frontmatter
- `inspect_component_manifest` — Read and validate a tdmcp component/library manifest from a package folder or file. Read-only: use it to check a package
- `inspect_gpu_and_displays` — Read-only: returns the host GPU info (name, driver, VRAM), attached monitor topology (resolution, refresh rate, primary flag, position), and whether the project is in Perform Mode. Use to plan output mapping, dome rigs, and multi-display…
- `inspect_op_extensions_storage` — Read-only: inspect what a COMP exposes — its Python storage dict (keys + values), its extension class descriptors (name, promoted flag, public members), and its custom-parameter definitions (page/name/style/default). Closes the inspect s…
- `learn_conventions` — Walks a TouchDesigner subtree under
- `learn_from_my_corpus` — Offline companion to
- `library_lineage_graph` — Read-only, offline tool that scans the vault library (Recipes, Shaders, Presets, Components, Setlists), extracts lineage frontmatter (parent_recipe, source_assets, remix_of, forked_from), and emits a lineage graph. Output as JSON (machin…
- `lint_recipe_library` — Offline semantic linter for recipes/*.json. Checks schema, id/filename match, duplicate node names, unknown operator types, dangling connections, bad parents, render-outside-geometryCOMP, missing parameter nodes, unresolved control bind_…
- `list_recipes` — List the built-in recipe library — ready-made network templates (feedback tunnel, particle galaxy, reaction-diffusion, projection mapping, …) with their id, name, tags and difficulty. Offline. Apply one with apply_recipe.
- `load_session_profile` — Reads ~/.tdmcp/session-profile.json (or a custom path) and returns a unified JSON
- `plan_td_version_migration` — Read-only: plan a TouchDesigner stable-version migration from offline release highlights plus operator and Python API compatibility records. Returns upgrade boundaries, focused compatibility deltas, and an operator checklist without touc…
- `plan_visual` — Turn a natural-language description of a visual you WANT into a build plan (which tool/recipe and nodes) — a dry run that creates nothing. Note: this does NOT inspect the current TouchDesigner project; to read existing nodes use get_td_n…
- `profile_cook_cost` — Read-only: sample cook times over a window (N samples × intervalMs) and rank hotspot nodes by p95 cook time. Use this to diagnose intermittent stalls that a single get_td_performance snapshot misses. Returns {path, samples, intervalMs, t…
- `read_parameter_modes` — Read-only: for each parameter of a node, report its mode (CONSTANT / EXPRESSION / EXPORT / BIND), its evaluated value, and its raw expression / bind-expression / export-source strings. Use this to faithfully serialize a network for round…
- `recall_similar_work` — Read-only vault search: rank past memory notes by similarity to a new visual goal so the agent can reuse prior recipes, params, and prompts instead of rebuilding from scratch. Scores by query-token overlap with title/intent/prompt/tags/b…
- `scaffold_recipe_from_network` — Inverse of apply_recipe: walk a COMP
- `score_build` — Read-only: score a built network 0–100 on a fixed rubric (palette/motion/complexity/errors/perf) and return per-criterion sub-scores plus deterministic improvement suggestions. Optional LLM critique when llmCritique=true and ctx.llm is c…
- `search_operators` — Search the embedded operator knowledge base (629 operators) by keyword, exact name, tag/keyword, category, subcategory, parameter metadata, or TouchDesigner version compatibility — ranked by relevance, fully offline by default. Use it to…
- `search_python_api` — Read-only: search TouchDesigner Python API classes, methods and members from the embedded offline knowledge base. Supports class category filters and conservative stable-version compatibility filtering where compatibility metadata exists.
- `search_touchdesigner_knowledge` — Read-only: search the embedded TouchDesigner knowledge router across operators, operator workflows, examples, versions, compatibility notes, technique packs, TD classes, and experimental build notes. Returns normalized results with resou…
- `serialize_network` — Read-only: serialize a COMP
- `snapshot_td_graph` — Read-only: capture a compact, serializable snapshot of a network — nodes, connections, structural issues, and optionally each node
- `suggest_operator_chain` — Read-only: suggest a small ordered TouchDesigner operator chain for a creative or technical goal from offline operator docs and workflow patterns. Returns connection hints and next tool hints; it does not create nodes.
- `summarize_td_errors` — Read-only: collect errors across a network and cluster them by message, type, or parent container, with the worst-offending nodes and a suggested order to investigate. Returns {total, groups[], suggestions[]}. Use this for network-wide t…
- `validate_library_asset` — Check that a local library asset exists on disk and is referenced by an optional manifest. Read-only pre-flight for packaging: catches missing or unreferenced files before make_portable_tox / install_library_package and returns the speci…
- `validate_operator_chain` — Read-only: validate an ordered TouchDesigner operator chain against embedded operator docs, documented connections, family/category filters, and optional TouchDesigner version compatibility. It does not create or modify TD nodes.
- `watch_node` — Read-only: sample one TouchDesigner operator over a short interval and return runtime state, readable parameter values, and CHOP channel values when available. Missing TD attributes/channels are reported as warnings instead of failing th…
- `add_custom_parameters` — Append a custom-parameter page (knobs, sliders, toggles, menus, pulses, RGB, XYZ) to a COMP so a generated network becomes a tunable, reusable component. Point
- `animate_parameter` — Drive one or more node parameters over time with an LFO (sine/triangle/ramp/square/pulse/random). Creates an LFO CHOP and binds each target so it oscillates between min and max with the given period — movement without manual keyframing.
- `apply_lut` — Apply a colour Look-Up Table (LUT) to an existing TOP inside a self-contained
- `apply_post_processing` — Chain post-processing effects (bloom, glitch, rgb_split, vignette, etc.) onto an existing TOP, applied in the order given. Creates a new baseCOMP under
- `apply_recipe` — Instantiate a built-in recipe by id (from list_recipes) inside a COMP — a tested, ready-made network you can build in one call, then tweak. Creates a new baseCOMP under
- `arrange_network` — Tidy an existing network: reposition a COMP
- `attach_docs_as_assets` — Copy documentation files into a package and register them in its manifest
- `author_script_operator` — Scaffold a Script CHOP/DAT/SOP/TOP with a ready-to-edit onCook(scriptOp) stub and optional custom parameters. Creates the Script op plus its companion callbacks DAT, writes a per-family stub (chan/row/point/numpy) — or your
- `auto_tag_library_asset` — Inspect a captured library asset (a vault recipe/component note, or a live TD COMP) and emit a suggested tag set, difficulty, and one-line description from a deterministic operator-family heuristic; with write:true, merge the suggestion …
- `bind_audio_reactive` — Make a whole COMP react to the music in one call — the core VJ move. Point
- `bind_to_channel` — Drive one or more node parameters from a CHOP channel by expression — the link that makes a visual react. Point it at an audio_features channel (bass/mid/treble/level) or a tempo_sync channel (ramp/pulse/beat) with a scale and offset, an…
- `bind_vault_text` — CREATE a Text DAT in TouchDesigner whose
- `capture_to_vault` — Captures a preview still from a TOP and appends it to a dated gallery note in the Obsidian vault, building a visual look-book over time. Each call writes the PNG image under <gallery>/images/ and appends a new section to <gallery>/<note>…
- `collect_project_assets` — Scan a COMP subtree for every external file dependency (movie/image file pars, fonts, LUTs, externaltox links) and report each referenced file, the node+parameter that references it, and whether the file currently exists on disk. The Tou…
- `component_changelog_trail` — Maintains an append-only per-component revision history as a JSONL trail
- `compose_cue_list` — Turn a natural-language show description into a validated cue list (SetlistSchema, scenes[] variant). Uses the local LLM when configured, falls back to a deterministic grammar parser otherwise. Optionally chains into create_cue_sequencer.
- `connect_comfyui` — Bridge a running ComfyUI server: drops the TDComfyUI .tox if installed, otherwise builds a stock webclientDAT skeleton. The container exposes a Null TOP at <container>/out as the downstream output.
- `connect_nodes` — Wire one node
- `create_3d_audio_reactive` — Build a 3D scene that reacts to sound — the 3D counterpart of create_audio_reactive (use that for a 2D spectrum visual instead). Creates a new baseCOMP under
- `create_3d_scene` — Build a renderable 3D scene: a Geometry COMP holding the chosen primitive (sphere/box/grid), a Camera, a Light, and a Render TOP, output as a Null. Creates a new baseCOMP under
- `create_ascii_render` — Turn any TOP into a character-grid ASCII render: quantise input luminance into a (W/cell × H/cell) grid, then look up each glyph from a monospace character atlas. Supports mono, source-color (per-cell tint), and two-color (lerp by lumina…
- `create_audio_glsl_uniforms` — Writes CHOP-reference expressions onto the seq.vec uniform slots of an existing glslTOP, so named channels (low/mid/high/rms etc.) drive shader uniforms every cook. Creates no operators — pure parameter binding. Idempotent and composable…
- `create_audio_reactive` — Build an audio analysis chain (spectrum + level + optional beat) and a spectrum visual driven by it. Creates a new baseCOMP under
- `create_auto_montage` — Point at a folder and build a self-running clip montage: scans the folder for clips/stills, builds one Movie File In TOP per file feeding a Switch TOP (fractional-index crossfade) → Null TOP, and adds an auto-advance brain on top — a Bea…
- `create_automation_lane` — Build a per-parameter automation lane that records a live parameter sweep into a circular buffer over N bars, then loops the recording back into the parameter on a bar-phase clock. Two modes: record (sample the target param every cook in…
- `create_autopilot` — Build a beat-driven auto-VJ: a Beat CHOP + a CHOP Execute DAT that, every N beats, either randomizes a target COMP
- `create_band_router` — Split an audio signal into EQ bands and route each band to its own target parameter(s) — the musician-friendly
- `create_beat_grid_sequencer` — Build a programmable step-grid sequencer driven by a Beat CHOP on the global TD tempo: a Table DAT holds the per-step pattern (values or 1/0 flags), and a CHOP Execute DAT fires on every beat boundary, reads the current step (count % ste…
- `create_blob_reactive` — Build a blob-position-tracking chain that drives parameters from the POSITIONS of multiple objects/hands in a camera (or a TOP) — the per-blob counterpart to create_motion_reactive
- `create_body_reactive` — Build a body-reactive visual driven by full-body pose tracking: glowing marks that follow the 33 landmarks (head, hands, elbows, hips, knees, feet), rendered to a Null TOP. Creates a new baseCOMP under
- `create_capture_loop` — Build a bidirectional inter-app video bridge to another program (Resolume, OBS, MadMapper, a game engine…) in one container: receive an external feed IN and publish a TOP OUT at the same time. Picks the right operators per protocol — NDI…
- `create_chop_recorder` — Build a CHOP recorder/player container that captures a source CHOP
- `create_chroma_reactive` — [experimental] Builds a 12-channel pitch-class chroma vector (chroma_0..chroma_11) from an audio bus via FFT bin → pitch-class fold. Outputs a Null CHOP ready for bind_to_channel. Shares audioSource convention with create_transient_react…
- `create_chrome_blobs` — Builds a liquid-chrome / Y2K metaball generator: an animated Noise TOP (or external source) is blurred, thresholded into soft blobs, then a GLSL TOP renders a procedural environment-map chrome look (greyscale ramp + moving specular highl…
- `create_clip_launcher` — Build an Ableton-style clip launcher: a grid panel (Container COMP) of clip buttons, one per named cue (from manage_cue), for fast hands-on scene switching during a live set. Open the container in Perform/Panel mode and tap a clip to fir…
- `create_color_grade` — Build a colour-grading / LUT finishing stage over a source — the
- `create_color_wheels` — Classic colour-grading wheels — three tinted Level TOPs run in series for shadows (lift, gamma-biased), midtones (gamma) and highlights (gain, brightness-biased), then a master Level TOP for global offset (blacklevel), then an HSV Adjust…
- `create_container` — Create one empty COMP under parent_path to hold a visual system, then tile it into the parent
- `create_control_panel` — Expose live controls on a COMP: append custom parameters (sliders, toggles, menus, RGB, pulse) and bind them to node parameters so the artist can drive a generated system in real time. Point
- `create_control_surface` — Build a playable performance panel (a Container COMP of visual widgets) for live use, beyond the parameter dialog: vertical faders that drive parameters, and buttons that recall or morph to named cues (from manage_cue). Open the containe…
- `create_cubemap_dome` — Render a true cube-map dome master — the higher-fidelity follow-up to create_dome_output (which only warps a flat equirectangular source). A 3D scene is rendered by a Render TOP in cube-map mode (rendermode
- `create_data_reactive` — Wire arbitrary external data (weather, follower count, sensor readings, OSC values) onto a COMP
- `create_data_source` — Ingest live external data onto a binding-ready channel/table — the input counterpart to create_data_visualization and bind_to_channel.
- `create_data_source_http_ws` — Advanced live-data ingest for HTTP polling and WebSocket streams — the richer-transport sibling of create_data_source.
- `create_data_visualization` — Build a data-driven visualization: a data source feeds a CHOP that drives a chart TOP. Creates a new baseCOMP under
- `create_datamosh` — Build a datamosh (broken-codec / time-echo / ghost-trail) visual effect network in one call. Three modes:
- `create_decks` — Build a DJ-style VJ mixer. Without decks[], it preserves the legacy A/B Cross TOP mixer with GainA/GainB controls. With decks[], it builds a 2-8 deck mixer: every deck pulls a source TOP (or a test source) through gain and FX-send Level …
- `create_depth_displacement` — Push a flat plane into real 3D relief by a depth/luminance map: a subdivided grid whose vertices are offset along Z by a GLSL displacement material sampling the source
- `create_depth_from_2d` — Wraps TDDepthAnything v2 (community TOX by IntentDev) to convert any 2D image/video TOP into a depth map TOP using Depth Anything v2 via NVIDIA TensorRT/ONNX — no Kinect or RealSense required. Given a source TOP path, drops the TOX into …
- `create_depth_silhouette` — Extract a silhouette / body mask from a depth or video source — a person
- `create_displacement_warp` — Build a displacement-warp stage over a source — the
- `create_dither` — Build a retro dither effect: ordered Bayer (2×2/4×4/8×8), checker, noise, or single-pass error-diffusion — quantising to a 2/4/16-colour palette. Supports mono, duotone (Game-Boy-green default), or RGB quantisation mode. Creates a new ba…
- `create_dmx_fixture_pipeline` — Build a DMX/Art-Net (or sACN) output chain from a fixture list. For each fixture (rgb, rgbw, par64, movingHead8, movingHead16) creates a Constant CHOP with one named, default-valued channel per DMX slot (prefixed
- `create_dome_output` — Remap a source TOP (treated as an equirectangular / panoramic master) into a square single-output dome master for planetarium fulldomes / 360 — the curved complement to create_multi_output
- `create_envelope_follower` — EXPERIMENTAL — Build a reactive signal-shaping chain (attack/release envelope + threshold gate or sidechain ducking) from a CHOP channel, for
- `create_euclidean_sequencer` — Build a Euclidean rhythm sequencer: given
- `create_external_io` — Bridge TouchDesigner to the outside world: OSC/MIDI input (a control surface — bind incoming channels straight to parameters), OSC/MIDI output (send a CHOP
- `create_facade_mapping` — Build a multi-projector architectural facade rig: one source TOP fanned into N per-projector
- `create_feedback_network` — Build a feedback-based visual system: a seed feeds a loop that is transformed (blur/displace/etc.) and fed back each frame. Creates a new baseCOMP under
- `create_feedback_tunnel` — Build a parameterized infinite-zoom/rotate feedback tunnel: a seed TOP is composited with its own fed-back, zoomed, rotated, and decayed frame each cook to produce a hypnotic inward-spiral tunnel. Four audio-bind-ready controls (Zoom, Ro…
- `create_flow_abstraction` — Build a two-pass Kyprianidis-style flow abstraction: an edge-tangent-flow (ETF) bilateral smoother followed by a flow-based DoG (FDoG) line extractor — oil-painting smooth interiors with crisp coherent ink edges. Creates two glslTOPs + c…
- `create_fluid_sim` — Build a real-time 2D fluid/ink/dye simulation (stable-fluids style: semi-Lagrangian advection + Jacobi pressure solve + gradient-subtract projection + dye advection) as a stack of GLSL TOPs in feedback loops inside a new baseCOMP under
- `create_gaussian_splat_scene` — Drops the community TDGS .tox by Anglerfish-graphics into a fresh baseCOMP, loads a
- `create_generative_art` — Create an evolving generative visual. Creates a new baseCOMP under
- `create_generative_audio` — SYNTHESIZE audio — generate sound rather than react to it. Builds an audio synthesis chain ending on a Null CHOP carrying the signal:
- `create_glitch` — Build a glitch / corrupted-signal visual: RGB channel split, noise-driven blocky/slice displacement and horizontal band tearing over a source. Creates a new baseCOMP under
- `create_glsl_material` — Create a GLSL MAT under parent_path for custom-shaded geometry. The pixel/vertex/(optional) geometry shader source is placed in companion Text DATs (
- `create_glsl_shader` — Create a GLSL TOP under parent_path that renders a custom fragment shader (and optional vertex shader). The shader source is placed in companion Text DATs (
- `create_halftone` — Build a print/comic print-look effect: halftone dots, CMYK colour separation, ordered dithering, or posterized stepped colour — classic retro aesthetics in one GLSL pass. Creates a new baseCOMP under
- `create_hand_ableton_mapper` — Build a MediaPipe-hands to TDAbleton TDA_Mapper performance control network. It outputs map1=left pinch, map2=right pinch, map3=left wrist roll, map4=right wrist roll, creates a skeleton overlay with star joints plus the thumb-index line…
- `create_hand_gesture_bus` — Build a stable MediaPipe-hands gesture bus for palm holograms, lasers, audio controls, and other hand-reactive visuals. Outputs a Null CHOP with debounced palm and pinch channels: palm_open, float_x/y, palm_size, pinch_active, pinch_powe…
- `create_hand_hologram` — Build a palm-anchored hologram visual driven by create_hand_gesture_bus. Defaults to a synthetic previewable holographic cube; open palm controls visibility, the float anchor keeps it above the palm, and opposite-hand pinch drives scale,…
- `create_histogram_scope` — Build a luminance (and optional per-channel RGB) histogram video scope for any TOP. Computes the histogram on the GPU using a GLSL TOP (bins×1 output), samples into a CHOP, normalises, and renders through choptoSOP → renderTOP. Output is…
- `create_jfa_voronoi` — Instantiate a self-contained Jump-Flooding-Algorithm Voronoi generator (stained-glass / cell pattern) as GLSL TOPs — seeds → jfa_init → K halving passes → color_pass → null. Exposes live PaletteMode / SeedCount / Speed / Jitter / EdgeThi…
- `create_kaleidoscope` — Wrap a source in a kaleidoscope / radial-mirror symmetry effect — a signature VJ look. Folds the image into N identical mirrored wedges around a centre, with live Segments / Rotation / Zoom / Center controls. Creates a new baseCOMP under
- `create_keyer` — Composite a keyed performer, logo, or any source over a background visual — the green-screen / chroma-key / matte tool for installations and live camera work. Creates a self-contained baseCOMP under
- `create_keyframe_animation` — Animate parameters along a keyframed curve synced to the timeline — structured motion beyond animate_parameter
- `create_kinect_wall_harp` — Build a synthetic-safe Kinect v2 / FreenectTD projected wall harp in an isolated Base COMP. The network can create a FreenectTOP depth path when explicitly enabled, listen to an external OSC Kinect bridge with source=
- `create_kinetic_text` — Build a self-contained animated / kinetic typography layer — a word or line that flashes, pulses, or slides, the signature live-VJ lyric-flash effect. A Text TOP renders the text; an LFO CHOP at the given Rate (Hz) drives the animation:
- `create_layer_mixer` — Build a VJ-style layer mixer: combine source TOPs into one output. Creates a new baseCOMP under
- `create_layer_stack` — Build a VJ-style N-layer compositor: stack 2–8 source TOPs and composite them bottom-up, each layer with its own blend mode (over/add/multiply/screen/difference/lighten/darken) and opacity. Each layer is a Select TOP (or a built-in test …
- `create_live_source` — Build a self-contained source COMP that ingests an external feed — screen grab, NDI, Syphon/Spout, camera, or a video stream (RTSP/SRT/WebRTC) — normalizes it to a target resolution, and exposes a named Null TOP output ready for the mixe…
- `create_look_bank` — A playable snapshot row: store N named
- `create_macro` — Add one macro knob (a 0–1 custom parameter) to a COMP that drives many parameters at once, each remapped into its own [min,max] range with an optional response curve — a one-to-many control for sweeping a whole look from a single fader. …
- `create_media_bin` — Point at a folder on the TouchDesigner machine and build a clip BIN inside a new bin COMP: it scans the folder (filtered to the given extensions, capped at max_clips), creates one Movie File In TOP per file, feeds them through a Switch T…
- `create_mesh_warp` — Map a source TOP onto a curved or irregular surface via a deformable textured grid — the curved-surface upgrade to create_projection_mapping
- `create_midi_map` — HARDWARE-GATED SCAFFOLD. Build a MIDI controller preset for a supported device
- `create_midi_note_reactive` — Build a MIDI note → per-note trigger/velocity chain that exposes bindable channels
- `create_modulators` — Build a bank of N BPM-synced LFOs in one self-contained container — each an oscillator (sine/triangle/saw/square or a random sample-&-hold) with its own rate-in-beats, output range and phase offset. Every rate locks to a tempo source (a …
- `create_motion_reactive` — Build a video-analysis chain that exposes ready-to-bind reactive channels — overall brightness plus frame-to-frame motion energy — on a Null CHOP. The camera counterpart to extract_audio_features: bind any parameter to op(
- `create_multi_output` — Fan a master TOP across N projectors/displays: each output is a cropped slice (horizontal or vertical) resized to full projector resolution and ended on a Null, ready for setup_output. Set
- `create_node_chain` — Create multiple nodes and (optionally) connect them in sequence. Returns all created paths; on failure it stops and reports partial progress without deleting anything.
- `create_npr_filter` — Apply a non-photorealistic painterly filter to an existing TOP. A generalized Kuwahara (sector-based local variance smoothing) runs in a single GLSL TOP and branches into three looks selected by
- `create_optical_flow` — Build a CPU motion-energy field from a video source (cheap drop-in for displacement / particle chains; NOT a real dense optical-flow solver). Output is a single-channel TOP: bright = motion, mid-grey = still, computed as
- `create_palette` — Generate a reusable colour palette + gradient other tools can bind to. In
- `create_particle_system` — Build a CPU particle system: an emitter SOP feeds a Particle SOP inside a Geometry COMP, rendered with a camera + light. Creates a new baseCOMP under
- `create_pbr_scene` — Build a physically-based 3D scene: a Geometry COMP holding the chosen primitive (sphere/torus/box) shaded by a PBR MAT (base colour, metallic, roughness), lit by an Environment Light for image-based lighting (fed a Constant TOP of
- `create_phone_gesture` — Stream a phone
- `create_phone_remote` — Serve a mobile-friendly web panel from a Web Server DAT so you can control a COMP
- `create_pixel_sort` — Build a glitch-art pixel-sort effect that sorts pixels along rows or columns within
- `create_point_cloud` — Render a point cloud from a depth/luminance map (or a synthetic source): scatter a resolution×resolution grid of points and push each point
- `create_pop_field` — Build a GPU point field using TouchDesigner
- `create_pop_geometry` — Procedural Op Pattern (POP) geometry generator: build a SOP chain inside a Geometry COMP — primitive (box/sphere/tube/torus/grid/line/text) → Transform SOP (translate/rotate/scale) → optional Subdivide SOP → optional per-point Noise SOP …
- `create_pop_growth` — Build a POP-native reaction-diffusion / growth system inside a fresh baseCOMP.
- `create_pop_lines_pointcloud` — Plexus-style line-web visual built on the POP family. A POP point cloud
- `create_pop_particle_system` — Build a complete POP particle simulation (particle_pop → feedback_pop →
- `create_pose_controlnet_driver` — Render a canonical OpenPose-colored stick figure TOP (per-limb RGB lines + per-joint colored discs on a black background, default 512×512) from an existing pose CHOP produced by create_pose_tracking. The render is GPU-rasterized in a sin…
- `create_pose_reactive` — Body-pose binder parallel to bind_audio_reactive: take the 33-sample MediaPipe pose CHOP produced by setup_body_tracking and derive scalar reactive channels (right-hand height, arms openness, elbow angle, hand velocity, …) on a Null CHOP…
- `create_pose_skeleton` — Render a live stick-figure skeleton from full-body pose tracking — the classic MediaPipe body-tracking look: glowing lines connecting the 33 landmarks (shoulders, elbows, wrists, hips, knees, ankles) drawn by a Line MAT and rendered to a…
- `create_pose_tracking` — Set up full-body pose tracking — the foundation for body-reactive visuals (the camera/skeleton counterpart to extract_audio_features). Produces a canonical pose CHOP (33 MediaPipe landmarks as samples, channels tx/ty/tz/confidence) plus a
- `create_preset_morph` — Target-agnostic preset morph engine: snapshot any OP
- `create_prob_sequencer` — Build a Markov-chain step sequencer. On each beat boundary the COMP transitions from the current state to a next state sampled from the per-state weighted-transition table. Outputs two CHOP channels:
- `create_projection_mapping` — Wrap a source TOP in a Corner Pin warp for projection mapping: drag the four corner handles to line the image up with a physical surface (wall, object, screen). The source comes in through a Select TOP so it can live anywhere; output is …
- `create_python_script` — Create one DAT under parent_path preloaded with your Python
- `create_raymarch_scene` — Instantiate a self-contained GLSL TOP raymarcher (volumetric / signed-distance-field) — the 3D complement to create_shader_lib. Scenes: sphere_field (repeated spheres), menger (Menger-sponge fractal), tunnel (twisting tunnel). Exposes li…
- `create_reaction_diffusion` — Build a Gray-Scott reaction-diffusion GPU simulation as a ready-to-use visual system.
- `create_replicator` — Wire a Replicator COMP that clones a template COMP once per row of a Table DAT — TouchDesigner
- `create_safety_blackout_chain` — Build a live-show safety primitive at the very end of the master output chain: deterministic fade-to-black over a configurable time, optional emergency single-frame hard-cut, optional hotkey + external watchdog trigger, and symmetric fad…
- `create_scene_timeline` — Build a scrubbable show timeline: a single Timer-CHOP playhead drives ordered scenes that recall cues on a target COMP. Sits above create_cue_sequencer (beat-quantized) and create_scheduler (event-firing) as the show
- `create_scheduler` — Build a Timer-CHOP scheduler COMP: one or more named timers (seconds or beats), each with an optional ordered segment list, sharing a Callbacks DAT that fires a cue/param/script action on onDone and onSegmentEnter. Atomic timer primitive…
- `create_shader_lib` — Instantiate a curated, ready-to-run full-screen GLSL shader (tunnel, raymarch_sphere, fractal, metaballs, plasma) into a GLSL TOP with live Speed / Scale / Color controls. High-value VJ eye-candy; unlike create_glsl_shader it ships robus…
- `create_shared_memory_bridge` — Create a Shared Memory In/Out TOP/CHOP for zero-copy IPC with another app on the same host (Notch, Unity, Unreal, custom tools). Pick direction (
- `create_slit_scan` — Build a slit-scan visual system: each row (or column) of the output samples a different past frame from a Cache TOP ring buffer, producing the classic
- `create_spectrum` — Build an FFT audio-spectrum analyzer that exposes N separate, ready-to-bind frequency-bin channels (band0..band{N-1}) on a Null CHOP. This is the per-band complement to extract_audio_features (which only gives overall level + bass/mid/tr…
- `create_stage_dashboard` — Serve one unified live-performance cockpit from a Web Server DAT — a single responsive web page (phone + laptop) that combines a grid of cue-launch buttons (recall named cues from manage_cue on the target COMP), master faders bound to ch…
- `create_stipple_pointcloud` — Density-weighted particle scatter rendered as discrete points — a stippled / halftone-engraving
- `create_strange_attractor` — Build a strange-attractor deferred geometry generator: a Script CHOP integrates a chosen ODE system (Lorenz / Aizawa / Halvorsen) with configurable sub-steps and maintains a rolling ring buffer of trail_length points. A Script SOP conver…
- `create_strobe` — Build a beat-syncable strobe / flash layer — a full-frame colour flash that pulses hard on/off, the signature live-VJ strobe effect. A square-wave LFO CHOP at the given Rate (Hz) drives a Level TOP
- `create_td_node` — Create a single bare operator (node) inside a parent COMP — nothing is wired or laid out. Validates the operator type against the knowledge base and warns (without blocking) on unknown types. Returns {node, warnings[]} for the created no…
- `create_tempo_sync` — Create a tempo clock (Beat CHOP driven by TouchDesigner
- `create_test_pattern` — Generate a projector calibration / alignment source — a standalone test-pattern network
- `create_text_3d` — Build a self-contained 3D text scene: a Text SOP generates the glyph outlines, an Extrude SOP gives them depth (the
- `create_text_overlay` — Composite styled STATIC text over a visual (or on its own transparent background) — a Text TOP with font size, color, and alignment, optionally laid
- `create_time_echo` — EXPERIMENTAL — Apply a per-pixel time effect to a source TOP: echo trails, slit-scan, or per-pixel time displacement (the
- `create_transient_reactive` — Layer-1 audio splitter: differences a fast and a slow envelope follower to expose two normalized 0..1 channels —
- `create_transition` — Build a parameterized A→B transition over a single 0–1 Progress knob — the executable core of VJ cutting. Creates a new baseCOMP under
- `create_two_way_surface` — Build a bidirectional OSC or MIDI control surface that drives TouchDesigner params from a controller AND echoes outgoing changes back to it (motor faders, RGB pads), with an oscillation guard so the device
- `create_vector_lines` — Build a pulse-driven image-to-vector-lines system: capture a still frame from a synthetic, camera, file, or existing TOP source, prepare a monochrome mask, freeze it to a snapshot, trace it through a Trace SOP for editable vector geometr…
- `create_video_player` — Build a movie/clip player inside a new
- `create_video_scopes` — Build a broadcast-style video engineering monitor with multiple scope panels: waveform (luma trace), RGB parade (per-channel traces), and vectorscope (UV chrominance scatter). Each panel renders as a CHOP-to-SOP scope line through an ort…
- `create_video_synth` — Instantiate an analog video-synthesizer pattern (lissajous oscillator curve, moving interference fringes, or CRT scanline modulation) into a GLSL TOP with live Speed / FreqX / FreqY / Scale / Color controls, output as a Null TOP inside a…
- `create_vintage_lens` — Drape a vintage analog-film aesthetic over any TOP in one call. Chains barrel/pincushion lens distortion → chromatic aberration → vignette → film grain as four inline GLSL passes inside a new baseCOMP. Era presets (super8, vhs, 16mm, 80s…
- `create_voxel_stack` — Isometric voxel-stack renderer driven by any TOP. Builds a single instanced Geometry COMP
- `create_waveform` — Build a time-domain audio waveform / oscilloscope — the actual audio signal scrolling left-to-right as a moving trace (the time-domain companion to create_spectrum
- `create_xy_pad` — Build a draggable 2D (XY) gesture pad — a Container COMP whose pointer drag drives an x/y CHOP of normalized control channels, optionally remapped into ranges and bound by expression to target parameters (e.g. an effect
- `curated_collection_pack` — Bundles a curated, hand-picked set of vault assets (recipes, components, looks, raw
- `disconnect_nodes` — Remove one or more input wires from a node in TouchDesigner. By default removes every incoming wire into to_path; narrow the scope with from_path (only wires from that upstream node) and/or to_input (only that input slot index). Returns …
- `duplicate_network` — Copy a node or whole COMP (and all its contents) to a new node, placed in the source
- `edit_dat_content` — Surgically replace a substring inside a Text or Table DAT
- `export_look_tox` — Save a COMP as a
- `export_palette_component` — Save a COMP as a .tox into TouchDesigner
- `export_recipe_bundle` — Write selected recipes to a portable JSON bundle on disk. Use it to hand recipes to another machine or to CI; re-import the bundle with import_recipe_bundle, or produce a signed/versioned artifact with publish_recipe_bundle. Writes a fil…
- `export_setlist_to_vault` — Serialize the current cues stored on a COMP (manage_cue snapshots, keyed
- `export_sop_to_svg` — Walk a SOP
- `extend_data_source_fabric` — Adds extra transports to the data-source fabric beyond create_data_source:
- `generate_library_index` — Write one Markdown contact-sheet note of the whole vault library — recipes, shaders, presets, components, and setlists — as a grid of cards, each with its thumbnail (the <stem>.png sibling written by save_recipe_to_vault / save_component…
- `generative_classics_pack` — Curated technique pack of canonical generative looks (feedback tunnel, audio spectrum, noise landscape,
- `import_isf_shader` — Import an ISF (.fs) shader into TouchDesigner as a GLSL TOP with auto-generated controls. Accepts raw source, a local file path, or an http(s) URL.
- `import_model` — Import a 3D model file (.obj/.fbx/.usd) and render it to a TOP: a File In SOP reading
- `import_recipe_bundle` — Import recipes from a portable JSON bundle into a recipe directory. The inverse of export_recipe_bundle: each recipe is validated before it is written, so a malformed bundle fails loudly instead of corrupting the directory. Writes files …
- `import_recipe_from_url` — Fetch, validate, and import a recipe or recipe-bundle JSON from an HTTPS URL into a local recipes directory (host-allowlisted, size-capped).
- `learn_control` — EXPERIMENTAL two-step
- `local_marketplace_index` — Scan a local package directory and write an index of installable tdmcp packages. Use it to make a folder of components browsable and installable as a simple local marketplace; the written index is what browse_library and install_library_…
- `log_performance` — READ a snapshot of a TD network (node/connection counts plus any errors) and, optionally, a preview image of an output TOP, then WRITE a dated journal entry to Performances/<date>-<title>.md in the vault (the thumbnail is saved as a bina…
- `macro_recorder` — Record the sequence of MCP tool calls to a portable JSON macro file. Actions: start | stop | list | load. Replay ships separately as
- `make_portable_tox` — Save a COMP as a .tox package, write a tdmcp-component manifest beside it, and by default include a README.md documenting node inventory, custom parameters, inputs/outputs and external file references.
- `manage_annotation` — Self-document a network: create a titled annotation box, set an op
- `manage_component` — Build a reusable component library by moving COMPs to/from .tox files on disk. Two actions:
- `manage_component_storage` — CRUD operations on a COMP operator
- `manage_cue` — Live-performance scene system: store / recall / morph / list / delete named cues (snapshots of a COMP
- `manage_packages` — Search, list, inspect, doctor, dry-run install, stage, and uninstall manifest-driven TouchDesigner community packages. Dry-run is the default. Installs stage packages under ~/.tdmcp/packages and only import into TouchDesigner when the br…
- `manage_presets` — Store, recall, list, or delete named snapshots of a COMP
- `merge_vaults` — Merge the contents of a source Obsidian vault into a target vault (defaulting to TDMCP_VAULT_PATH).
- `morph_pack` — Export an existing create_preset_morph container
- `multipass_3d_depth` — Build a renderable 3D scene with depth cues that read on stage: a Geometry COMP holding the chosen primitive (sphere/box/torus/grid), a Camera, a Light, and a Render TOP beauty pass, output as a Null — like create_3d_scene but with an op…
- `post_passes_3d` — Compose a chain of 3D-aware post-processing passes (SSAO, SSR, DOF, motion blur) inside a new baseCOMP. Each pass is a glslTOP with companion textDAT that samples color + depth + (optional) normal/velocity AOVs from selectTOPs. Passes ru…
- `project_documentation_site` — Compose a one-folder handoff/portfolio documentation PACKAGE for a network: a README.md (title, node count, per-family summary, how-to-load note), a topology.md with a Mermaid graph of the connections, and - when include_thumbnails is se…
- `provenance_stamp` — Writes a
- `publish_recipe_bundle` — Write a local, versioned recipe-bundle publish artifact: the recipe bundle JSON, a tdmcp-recipe-publish manifest, and a SHA-256 checksum manifest for repeatable handoff or CI upload.
- `randomize_controls` — Randomize a COMP
- `record_movie` — Record a TOP to a movie file (.mov/.mp4) via a Movie File Out TOP — for exporting a clip or a loop, where render_output only saves a single frame. start begins recording (pass file, fps); pass
- `render_output` — Save a TOP to an image file at its native, full resolution (PNG/JPG/EXR/TIFF by extension) — for exporting a finished frame, unlike get_preview which only transfers a small inline thumbnail. The file is written by TouchDesigner on the TD…
- `save_component_to_vault` — Save a live TouchDesigner COMP as a reusable .tox component file inside the Obsidian vault (at <folder>/<name>.tox) and write a companion markdown note with frontmatter, a description, and load instructions — completing the build→paramet…
- `save_recipe_to_vault` — Capture an existing COMP
- `scaffold_extension` — Give a COMP a Python extension class: create a Text DAT holding the class (with optional method stubs), wire it into an extension slot, optionally promote it (so members are callable directly on the COMP), and reinitialize. The other hal…
- `scaffold_genre` — Create a genre-flavored starting network under parent_path — beyond scaffold_show
- `scaffold_recipe_template` — Write a minimal but valid recipe JSON template to disk as a starting point for a new recipe. Use it to bootstrap a hand-authored recipe that already passes RecipeSchema; fill in nodes/connections, then instantiate with apply_recipe. Writ…
- `scaffold_show` — Create a starting skeleton for a live show: a new container under parent_path with a
- `scaffold_tool_generator` — Meta DX tool: scaffolds a new tdmcp tool file (xSchema + xImpl + registerX) and a matching offline msw unit test from a one-line idea. Returns the exact integration-hint (import line + array entry + layer index path) so the integrator ca…
- `scaffold_vault` — Populate the configured Obsidian vault with a starter layout and worked examples (a README plus example recipe, setlist, shader, and moodboard notes) so you begin from a working vault instead of an empty folder. WRITES Markdown files int…
- `set_dat_content` — Overwrite a Text or Table DAT
- `set_parameter_expression` — Set one or more parameters on a node to an expression, bind expression, or constant value without needing the raw-Python escape hatch. Supports three modes:
- `set_parameters_batch` — Update parameters on multiple nodes in a single batch request. Each update reports its own success; a failure does not roll back the others.
- `setup_mediapipe_plugin` — Drop the torinmb mediapipe-touchdesigner ENGINE in one shot and enable any combination of face, hand, body, and segmentation pipelines.
- `setup_output` — Route a finished TOP to an output destination: a display window, NDI stream, Syphon/Spout, a recording, or Touch Out. Creates the matching output node (
- `style_memory` — READ or UPDATE the long-lived Memory/style.md note in the configured Obsidian vault — the artist
- `swap_operator` — Change an operator
- `sync_external_clock` — Lock the project tempo to a live source so beat-synced visuals follow the music.
- `sync_presets_vault` — Bridge a COMP
- `sync_timecode` — Wire an external SMPTE/MTC/LTC/OSC timecode source into the TouchDesigner timeline. Creates the input op + Math CHOP normaliser + Null CHOP
- `tag_and_search_library` — Faceted browse + tag editing over a vault library (Recipes/ + Components/ markdown notes).
- `update_td_node_parameters` — Modify an existing node by setting one or more of its parameters to constant values. The update is strict (not best-effort): an unknown parameter name fails the whole call atomically without changing anything, and a bad value (wrong type…
- `variant_pack` — Generate N perturbed variants around an anchor parameter look and write the whole pack to the Obsidian vault as a morph_pack-compatible JSON. Probes the target COMP
- `version_library_asset` — Apply a SemVer patch/minor/major bump to a vault recipe or component note, recording the change
- `write_agent_guide` — Emit a project-local CLAUDE.md / AGENTS.md seeded with tdmcp operator conventions and

## Related servers

- UnClick (1658 tools) — https://policylayer.com/tools/io-github-malamutemayhem-unclick-mcp-server.md
- Nodebench (824 tools) — https://policylayer.com/tools/io-github-homenshum-nodebench.md
- Yaver (812 tools) — https://policylayer.com/tools/io-github-kivanccakmak-yaver.md
- Binance MCP Server (734 tools) — https://policylayer.com/tools/nirholas-binance-mcp.md
- Crow (587 tools) — https://policylayer.com/tools/kh0pper-crow.md
- Fortimanager (584 tools) — https://policylayer.com/tools/jmpijll-fortimanager-mcp.md
- TinyFn (572 tools) — https://policylayer.com/tools/io-tinyfn-tinyfn.md
- Mcp (571 tools) — https://policylayer.com/tools/io-github-2s-io-mcp.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=io-github-pantani-tdmcp · API: https://policylayer.com/registry/api · Recommended policies for every tool: https://policylayer.com/policies/io-github-pantani-tdmcp
