# 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 only when no structured tool can express the operation. Code runs in TD only, never on the local machine.

Agent View of the PolicyLayer registry record for `execute_python_script`. HTML page: https://policylayer.com/tools/io-github-pantani-tdmcp/execute-python-script

## Facts

- Tool: `execute_python_script`
- Server: tdmcp — TouchDesigner MCP server (`@dpantani/tdmcp`) — https://policylayer.com/tools/io-github-pantani-tdmcp.md
- Install: `npx -y @dpantani/tdmcp`
- Homepage: https://github.com/Pantani/tdmcp
- Risk category: Execute (High risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "execute_python_script",
    "arguments": {}
  }
}
```

## Why execute_python_script is rated High

This tool permits execution of arbitrary Python code within the TouchDesigner process, giving an AI agent unfettered access to modify visual systems, access sensitive project data, trigger external operations, or corrupt the runtime environment.

From the tool's own definition: "Tool explicitly described as 'run an arbitrary Python script inside the TouchDesigner process' and labeled as 'Escape hatch' for unrestricted operations. The ability to run arbitrary code without constraints represents the highest-risk Execute category."

## Use case

AI agents invoke execute_python_script to trigger actions in tdmcp — TouchDesigner MCP server. What it does depends on the arguments the agent supplies, and its effects often reach beyond the immediate call: builds kicked off, notifications sent, workflows started.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches tdmcp — TouchDesigner MCP server:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "execute_python_script": {
      "limits": [
        {
          "counter": "execute_python_script_rate",
          "window": "minute",
          "max": 10,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on tdmcp — TouchDesigner MCP server (333)

- `delete_td_node` — Destructive — https://policylayer.com/tools/io-github-pantani-tdmcp/delete-td-node.md
- `manage_checkpoint` — Destructive — https://policylayer.com/tools/io-github-pantani-tdmcp/manage-checkpoint.md
- `refresh_asset_previews` — Destructive — https://policylayer.com/tools/io-github-pantani-tdmcp/refresh-asset-previews.md
- `repair_network` — Destructive — https://policylayer.com/tools/io-github-pantani-tdmcp/repair-network.md
- `apply_glsl_top_mapping` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/apply-glsl-top-mapping.md
- `audio_fingerprint_to_visual` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/audio-fingerprint-to-visual.md
- `auto_repair_loop` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/auto-repair-loop.md
- `batch_operations` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/batch-operations.md
- `build_chop_chain` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/build-chop-chain.md
- `build_pop_chain` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/build-pop-chain.md
- `build_sop_geometry` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/build-sop-geometry.md
- `connect_daydream_cloud` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/connect-daydream-cloud.md
- `control_timeline_transport` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/control-timeline-transport.md
- `create_ai_mirror` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-ai-mirror.md
- `create_body_bubbles` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-body-bubbles.md
- `create_cue_sequencer` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-cue-sequencer.md
- `create_depth_pop_field` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-depth-pop-field.md
- `create_energy_structure` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-energy-structure.md
- `create_engine_comp` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-engine-comp.md
- `create_gpu_particle_field` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-gpu-particle-field.md
- `create_growth_system` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-growth-system.md
- `create_interactive_projection_mapping` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-interactive-projection-mapping.md
- `create_led_mapper` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-led-mapper.md
- `create_llm_chain` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-llm-chain.md
- `create_panic` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-panic.md
- `create_particle_flock` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-particle-flock.md
- `create_phrase_locked_cue_engine` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-phrase-locked-cue-engine.md
- `create_sdf_field` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-sdf-field.md
- `create_set_navigator` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-set-navigator.md
- `create_setlist_runner` — Execute — https://policylayer.com/tools/io-github-pantani-tdmcp/create-setlist-runner.md
- …and 303 more: https://policylayer.com/tools/io-github-pantani-tdmcp.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 · Policy library: https://policylayer.com/policies/io-github-pantani-tdmcp
