touchdesigner-agent-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@touchdesigner-agent-mcpcreate a circle TOP and connect it to a render TOP"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ποΈ touchdesigner-agent-mcp
A premium, open-source Model Context Protocol (MCP) server that empowers LLMs (like Claude) to directly control, introspect, and build TouchDesigner networks in real-time.
With this server, an AI coding agent can create and connect operators, query parameters, capture the viewport to see what it built, automatically fix compile errors, and stream real-time data from TouchDesigner CHOPs.
ποΈ Architecture
This repository uses a zero-dependency, dual-process architecture:
βββββββββββββββββββββββββββββββββββ
β Claude / MCP Host β
ββββββββββββββββββ¬βββββββββββββββββ
β
β MCP (stdio)
βΌ
βββββββββββββββββββββββββββββββββββ
β touchdesigner-agent-mcp (Python Client) β
ββββββββββββββββββ¬βββββββββββββββββ
β
β HTTP (POST /mcp)
βΌ
βββββββββββββββββββββββββββββββββββ
β TouchDesigner Web Server DAT β (Installed via td/install.py)
ββββββββββββββββββ¬βββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββ
β TouchDesigner Operators β
βββββββββββββββββββββββββββββββββββThe TouchDesigner side is built completely in plain Python (exposed via a Web Server DAT), meaning no binary .tox files or opaque components. You can read, audit, and diff every single line of code running in your project.
Related MCP server: touch-mcp
β¨ Features
π Dual-Directional Integration
25 Tools: Full CRUD for nodes, wiring, force-cooking, viewport rendering, and GLSL editing.
4 Prompt Templates: Guiding instructions that teach LLMs the best tool combinations for node finding, error handling, operator connections, and network repairs.
4 Resource Templates: Native MCP
td://resources that let the LLM stream live data from CHOP channels, node parameters, and project metadata.
π‘οΈ Undo Safety (Ctrl+Z)
Every single tool invocation that mutates TouchDesigner is automatically wrapped in a transaction block (ui.undo). If the agent makes a mistake, deletes a critical node, or wires something incorrectly, you can instantly revert it by pressing Ctrl+Z inside TouchDesigner.
β‘ Progress Tracking
Long-running operations (like scene scaffolding, viewport captures, and force-cooking) report real-time progress to the MCP client via the report_progress API, showing you exactly what the server is doing.
π Zero-Config Security
On first installation, the installer auto-generates a secure, random Auth Token (secrets.token_urlsafe(32)) and binds it to the component. The token is preserved across reinstalls, keeping your TouchDesigner instance secure from unauthorized remote code execution (RCE).
ποΈ Tool Matrix
Category | Tools | Description |
System Info |
| Inspect TouchDesigner build, OS, and available tool schemas. |
Node CRUD |
| Create, read, update, and delete operators. |
Parameters & Errors |
| Read parameters, query errors, or trigger pulses/methods. |
Python RCE |
| Run arbitrary Python scripts directly inside the TouchDesigner execution context. |
Introspection |
| Let the LLM search TouchDesigner's Python API, docs, and help pages. |
Visual Vision |
| Captures any TOP/COMP or the active network pane as an image (Base64 or file path). |
Scene Scaffold |
| Scaffold complete pipelines (Feedback Loop, Instancing, Render Setup) in one click. |
Advanced Wiring |
| Family-validated operator wiring and automatic positioning without node overlaps. |
GLSL & Files |
| Author GLSL shaders, import/export |
Media Assets |
| Scan local project directories for video, audio, images, and geometry assets. |
π‘ Resources
MCP Clients can read or subscribe to real-time resources using the td:// URI scheme:
URI Template | Resource Type | Description |
| Dynamic CHOP Stream | Streams active float values for all channels in the target CHOP (e.g. |
| Node Parameters | Lightweight read endpoint for parameters and operator metadata. |
| Error State | Inspects compilation or wiring errors for the target node and its children. |
| Static Project Info | Metadata including project name, folder path, and the TouchDesigner app build. |
π Quick Start
1. Set Up TouchDesigner Side
Copy the
td/folder somewhere stable on your disk.In TouchDesigner, open the Textport (
Alt+T) and run the installer:import sys sys.path.append('/ABSOLUTE/PATH/TO/td') import install install.install()This creates
/project1/td_agent_mcpwith a Web Server DAT running on port9981.Note the secure Auth Token printed in the Textportβyou will need this for step 3.
If you make changes to the scripts in thetd/ directory, you can reload and reinstall them instantly using:
import importlib; importlib.reload(install); install.install()
2. Install the MCP Server
Build and run the server using uv (recommended):
# To run locally
uv sync
uv run touchdesigner-agent-mcp --stdio3. Register the Server with Your Client
Claude Desktop
Add the server configuration to your claude_desktop_config.json:
{
"mcpServers": {
"touchdesigner-agent-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/ABSOLUTE/PATH/TO/touchdesigner-agent-mcp",
"touchdesigner-agent-mcp",
"--stdio"
],
"env": {
"TD_AUTH_TOKEN": "YOUR_AUTO_GENERATED_TOKEN_HERE"
}
}
}
}Claude Code (CLI)
Install the bundled marketplace plugin:
/plugin marketplace add axysar/touchdesigner-agent-mcpβοΈ Configuration Reference
You can configure the client using environment variables or command-line flags:
Environment Variable | CLI Flag | Default | Description |
|
|
| The hostname/IP of the machine running TouchDesigner. |
|
|
| The port of the Web Server DAT. |
|
| (empty) | Security token matching the |
|
|
| Request timeout in seconds. |
π Security Hardening
Because the server allows arbitrary Python execution inside TouchDesigner (giving the LLM full RCE capabilities on your local system), security is critical:
Token Auth: All incoming HTTP requests require a valid
Authorization: Bearer <token>header.Auto-Generation: If a token isn't manually specified, the installer automatically generates a cryptographically secure 32-character token.
CORS Protection: The TouchDesigner Web Server DAT strictly rejects requests from arbitrary browser origins.
Traversals: Asset scanning is restricted to a maximum depth of
5levels to prevent system performance issues or directory leaks.
π οΈ Development & Contributing
See CLAUDE.md for quick-start development guidelines.
Running Tests
To run registration, schema validation, and resource-binding checks without requiring TouchDesigner to be active:
uv run pytestCode Style
We use ruff to enforce linting and formatting standards:
uv run ruff check .
uv run ruff format .π License & Attribution
This project is licensed under the MIT License β see LICENSE.
It synthesizes and extends two outstanding prior open-source works:
@8beeeaaat/touchdesigner-mcp (Dual-process structure and baseline CRUD operations).
@satoruhiga/claude-touchdesigner (TouchDesigner helper libraries).
TouchDesigner is a registered trademark of Derivative.
Available Tools
25 toolscreate_td_nodeA
Create a new operator under a parent.
Returns the created node summary. TD auto-increments the name on
collision, so check the returned name/path.
| Name | Required | Description | Default |
|---|---|---|---|
| parent | Yes | Parent path to create under. | |
| node_name | No | Optional name; TD auto-increments on collision. | |
| node_type | Yes | Operator type, e.g. 'noiseTOP', 'boxSOP', 'baseCOMP'. | |
| parameters | No | Optional parameter values to set, e.g. {'tx': 1.0}. | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-destructive and non-idempotent. The description adds valuable behavioral context: auto-increments on collision and returns a summary. This goes beyond annotations but could mention more about side effects like overwriting or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, no wasted words. Very concise and easy to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, 2 required, and an output schema, the description covers the main action and return. It could mention the optional 'parameters' object or response_format, but the schema already does. The auto-increment behavior is a nice touch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for all 5 parameters. The description adds minimal extra beyond the schema (e.g., auto-increment already explained). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('new operator under a parent'), and it distinguishes from siblings like delete_td_node and update_td_node_parameters. The annotation title 'Create Node' reinforces this.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to create a node) but does not explicitly state when not to use or compare to alternatives. The note about auto-increment is helpful but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_td_nodeADestructiveIdempotent
Delete an operator by path.
Destructive and not undoable through this tool. Returns
{deleted: true, node: {...}} on success.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Operator path to delete. | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description adds valuable context: the action is not undoable through this tool and returns a specific structure. This goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a code snippet, all front-loaded with the core action. Every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with complete annotations and schema, the description covers the essential aspects: action, destructiveness, return format. Minor omission: no mention of error conditions or prerequisites like path existence, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add much. It restates the path parameter as 'Operator path to delete,' which matches the schema. No additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Delete an operator by path,' clearly indicating the verb (delete) and resource (operator). This distinguishes it from sibling tools like create_td_node or update_td_node_parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description warns that the operation is destructive and not undoable, implying careful use, but does not explicitly state when to use this tool versus alternatives or provide scenarios for non-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_td_toolsARead-onlyIdempotent
List the tools this server exposes, with names, descriptions, and schemas.
A manifest for code-execution agents that want to discover the available
TouchDesigner tool surface. Introspected locally; does not contact
TouchDesigner. Returns {count, tools: [{name, description, [inputSchema, annotations]}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Case-insensitive substring to filter tool names (e.g. 'glsl'). | |
| detail_level | No | 'summary' for name+description, 'detailed' to include schemas. | summary |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating no side effects. The description adds behavioral context: 'does not contact TouchDesigner', which confirms no network effects, and specifies the return structure. This adds value beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses only three sentences, each serving a distinct purpose: stating functionality, providing context, and specifying return format. No redundant or extraneous information. It is appropriately front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (implied by the return structure in the description) and high parameter coverage, the description is complete. It explains what the tool returns and its behavioral characteristics. The tool's simplicity (listing its own tools) means no additional context is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with individual parameter descriptions (e.g., filter is case-insensitive substring, detail_level and response_format are enums with defaults). The description does not add much beyond the schema; it mentions the return structure but that relates to output, not parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List the tools this server exposes, with names, descriptions, and schemas.' This distinguishes it from sibling tools like 'get_td_info' or 'get_td_nodes', which operate on different resources. It also provides context as a manifest for code-execution agents, making the purpose explicit and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates it is safe ('Introspected locally; does not contact TouchDesigner') and implies use for discovering the tool surface. However, it does not explicitly tell the agent when to use this tool versus alternatives like 'get_td_info', nor does it provide when-not-to-use guidance. Usage is implied but not fully clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exec_node_methodADestructive
Call a method on an operator (e.g. cook, pulse, reset).
Returns {result: <serialized return value>}. Use for operator
actions that are not parameter writes.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Positional arguments. | |
| path | Yes | Operator path. | |
| kwargs | No | Keyword arguments. | |
| method | Yes | Method name (e.g. 'cook', 'pulse', 'reset'). | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description only adds that it returns a serialized result. It does not elaborate on side effects or potential risks beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. Front-loaded with the core action and return type, then a clear usage hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (context signal true), the description need not detail return values. It covers the essential usage context, though it could mention that methods are operator actions specific to TouchDesigner (inferred from siblings).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions method examples but does not add significant meaning beyond the schema's descriptions for path, method, args, kwargs, and response_format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it calls a method on an operator, with specific examples ('cook', 'pulse', 'reset'). It distinguishes itself from parameter writes, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use for operator actions that are not parameter writes,' providing clear guidance on when to use this tool. However, it does not mention alternative sibling tools like td_cook that might be more specific for certain methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_python_scriptADestructive
Execute a Python script in TouchDesigner's interpreter and capture output.
Runs with the TouchDesigner API in scope plus the bundled tdapi
helpers. Returns {result, stdout, stderr}.
This runs arbitrary, un-sandboxed code in the user's TouchDesigner process β prefer the dedicated node tools for routine edits; use this for logic the other tools do not cover.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | Python to run inside TouchDesigner. `td`, `op`, `ops`, `me`, `parent`, `project` and the `tdapi` helper library are in scope. A single expression returns its value; multi-line scripts can set `result`. | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool runs 'arbitrary, un-sandboxed code' and specifies the return format as '{result, stdout, stderr}'. Annotations already indicate destructiveHint=true and readOnlyHint=false, and the description adds valuable context beyond these annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, no filler. The first sentence states the purpose, the second adds technical context, and the third provides usage guidance. Well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and destructive nature, the description covers purpose, return format, scope of available APIs, and usage recommendations. It is sufficiently complete, though a brief mention of potential side effects or safety considerations would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds extra semantic value by explaining that a single expression returns its value and multi-line scripts can set 'result'. This goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute a Python script in TouchDesigner's interpreter and capture output', using a specific verb and resource. It distinguishes itself from sibling tools by advising to use dedicated node tools for routine edits and reserving this tool for logic not covered elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when-to-use ('logic the other tools do not cover') and when-not-to ('prefer dedicated node tools for routine edits'), along with a caution that it runs arbitrary, un-sandboxed code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_td_class_detailsARead-onlyIdempotent
Get methods, properties, and docstrings for a TouchDesigner class.
Returns {name, type, description, methods, properties}.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | Class/module in the td module (e.g. 'OP', 'TOP', 'noiseCHOP'). | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare it as read-only, idempotent, and non-destructive. The description adds the return structure ({name, type, description, methods, properties}), providing behavioral context beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The first sentence states the action and resource, the second details the return format. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, output schema exists for return format), the description adequately covers the purpose and return values. It does not mention error behavior or limitations, but for a read-only tool, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning beyond what the schema already provides for the parameters. It implicitly mentions the class name but does not detail the response_format parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves methods, properties, and docstrings for a TouchDesigner class, with a specific return format. This distinguishes it from siblings like get_td_classes (list all classes) and get_td_module_help (module level help).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the purpose is clear, the description does not explicitly guide when to use this tool versus alternatives (e.g., when to use get_td_module_help instead). Usage is implied but lacks explicit context or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_td_classesARead-onlyIdempotent
List the Python classes and modules available in the td module.
Returns {classes: [{name, description}]}. Pair with
get_td_class_details to drill in.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read operations. The description adds the return format '{classes: [{name, description}]}' and the pairing suggestion, providing useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: one for purpose, one for return format and usage hint. No extraneous information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter, no required params, and a provided output schema. The description covers the purpose, return format, and workflow pairing. Given the richness of annotations and schema, the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for the single 'response_format' parameter. The description does not add parameter details, but the schema already handles it, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the Python classes and modules available in the `td` module' with a specific verb and resource. It distinguishes itself from the sibling 'get_td_class_details' which is for drill-down details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to 'Pair with get_td_class_details to drill in,' providing clear context for when to use this tool. While it doesn't explicitly state when not to use it, the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_td_infoARead-onlyIdempotent
Get TouchDesigner build, version, OS, and the touchdesigner-agent-mcp API version.
Use this first to confirm connectivity to TouchDesigner. Returns
{server, version, osName, osVersion, mcpApiVersion}.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. Description adds specific return fields and connectivity check behavior, going beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant information. Front-loads the action and resources, then provides usage guidance and return structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool, the description is complete: it covers purpose, usage, return structure. Could potentially mention error handling or guarantee of idempotency, but annotations already cover safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter has its own description. The tool description does not add any additional details about the parameter, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Get' and the resources: TouchDesigner build, version, OS, and API version. Distinguishes from sibling get_* tools by providing a high-level overview of the environment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using this tool first to confirm connectivity, providing clear usage guidance. Lacks explicit when-not-to-use but the context implies it as a preliminary check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_td_module_helpARead-onlyIdempotent
Capture Python help() output for a TouchDesigner module or class.
Returns {moduleName, helpText} with terminal control codes stripped.
| Name | Required | Description | Default |
|---|---|---|---|
| module_name | Yes | Module/class to fetch help() for (e.g. 'td.noiseCHOP', 'tdu'). | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by disclosing that terminal control codes are stripped from the output, which is a behavioral trait not captured by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the purpose and immediately explains the return format, making it easy for an AI agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (as per context signals), the description need not detail return values further. It already mentions the return shape and the stripping of control codes. Parameter descriptions are sufficient. The description is complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description provides concrete examples for module_name (e.g., 'td.noiseCHOP', 'tdu'), adding meaning beyond the schema's field description. response_format is explained in schema and default value is noted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures Python help() output for a TouchDesigner module or class, specifying the return shape {moduleName, helpText} with control codes stripped. This distinguishes it from siblings like get_td_class_details (detailed attributes) and execute_python_script (generic execution).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when help text is needed but provides no explicit guidance on when to use this versus alternatives like get_td_class_details. No when-not-to-use or exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_td_node_errorsARead-onlyIdempotent
Collect error messages for an operator and its descendants.
Returns {nodePath, nodeName, opType, errorCount, hasErrors, errors}.
TD updates its error cache on frame boundaries β prefer checking errors
in a request separate from the mutation that may have caused them.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Operator path to inspect. | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds context about caching boundaries, which is useful beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus return format line. Front-loaded with the action and resource. Every sentence adds value, no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations and output schema-like return description, the tool is adequately described. The caching nuance is helpful. Could mention if errors are cleared after retrieval, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters fully (100% coverage). Description adds no additional parameter meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it collects error messages for an operator and its descendants, with explicit return structure. Distinguishes from sibling tools that focus on other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance to prefer checking errors in a separate request due to caching behavior, which helps in proper usage. Does not explicitly list alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_td_node_parametersARead-onlyIdempotent
Get an operator's parameters and current values.
Call this before updating parameters β TD names rarely match labels.
Returns {id, name, path, opType, properties}.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Operator path (e.g. '/project1/noise1'). | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the behavioral safety profile. The description adds value by stating the return format (id, name, path, opType, properties) and the usage tip about name-label mismatch, which is not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (three sentences), front-loaded with the purpose, and every sentence adds distinct value: purpose and output, usage guidance, and return fields. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that output schema exists (context indicates true) and annotations are present, the description is complete. It covers the tool's function, when to use it, and what it returns, leaving no ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for both parameters. The description does not add new parameter semantics beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get an operator's parameters and current values,' using a specific verb and resource. It distinguishes itself from the sibling tool 'update_td_node_parameters' by noting that this tool should be called before updating, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'Call this before updating parameters β TD names rarely match labels,' providing clear when-to-use guidance and a rationale. This differentiates it from the update tool and helps the agent select the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_td_nodesARead-onlyIdempotent
List child operators under a path, optionally filtered by a name pattern.
Returns {nodes: [{id, name, path, opType, properties}]}. Set
include_properties=true only when you need values β the light
default is faster for large networks.
| Name | Required | Description | Default |
|---|---|---|---|
| parent | No | Parent operator path (e.g. '/project1'). | / |
| pattern | No | Name glob to filter children (e.g. 'text*'). | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
| include_properties | No | Include full parameter sets (slower). Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds a key behavioral insight: performance trade-off when setting include_properties=true. It also clarifies the return format. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only two sentences: concise, front-loaded with main purpose, then adds performance advice. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description combined with annotations and schema provides a complete picture: purpose, return format, key parameter guidance, safety profile. With output schema available (not shown but indicated), no additional explanation of return values is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds minimal extra context beyond the schema (performance note for include_properties). Baseline of 3 is appropriate since the schema already carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists child operators under a path, with a specific verb ('List') and resource ('child operators'). It immediately distinguishes from sibling tools like create, delete, or execute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for browsing operator hierarchy, but does not explicitly state when to use this tool over siblings like get_td_info or get_td_class_details. However, the combination of name and description makes the purpose clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_connectAIdempotent
Wire one operator's outlet to another's inlet, validating compatibility.
TouchDesigner only connects same-family operators via connectors; a cross-family attempt (e.g. TOP -> SOP) returns a descriptive error rather than failing silently.
| Name | Required | Description | Default |
|---|---|---|---|
| to_path | Yes | Destination operator path. | |
| to_inlet | No | Destination inlet index. | |
| from_path | Yes | Source operator path. | |
| from_outlet | No | Source outlet index. | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context about compatibility validation and error handling beyond the annotations, which already indicate non-destructive and idempotent nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loading the core action and key behavior with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema and annotations, the description provides enough context about validation and error behavior for correct tool selection and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions, so the tool description doesn't add extra parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Wire one operator's outlet to another's inlet' with validation, and distinguishes from sibling tools that create/delete/update nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that only same-family operators can be connected and cross-family attempts return a descriptive error, providing clear context but no explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_cookAIdempotent
Force-cook an operator (and optionally its descendants).
TouchDesigner does not always re-cook operators inside a nested
baseCOMP referenced indirectly, so a stale buffer can make a correct
edit look broken. Call this on the parent COMP whenever results look
stale before debugging anything else. Returns {cooked, totalCookTimeMs, errors}.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Operator/COMP path to cook (use '/' for the root). | |
| recurse | No | Also cook descendants (default true). | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutability (readOnlyHint=false) but non-destructive and idempotent. Description adds context about the stale buffer problem and return value structure, complementing annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: action, context/usage, and return value in separate sentences. Efficient without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-param tool with output schema, description adequately covers purpose, usage scenario, and return. No major gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters (100%), so description adds minimal param context. It implies path is for parent COMP and recurse defaults true, but relies on schema for details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (force-cook) and resource (operator/COMP). Distinguishes from sibling tools by addressing a specific TD issue with stale buffers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use (when results look stale) and prioritizes it over other debugging. Provides rationale for the need, but doesn't explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_glslAIdempotent
Read or write a GLSL shader stage, resolving the correct docked DAT.
A GLSL TOP keeps its source in _pixel_shader / _vertex_shader
DATs docked to the parent β never guess that DAT's name or set .text
on it directly. Omit code to read; pass code to write (set
return_compiled=true to re-cook and surface compile errors). Returns
{stage, docked_dat_path, code, errors}.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | If provided, write into the docked DAT; if omitted, read instead. | |
| path | Yes | GLSL TOP/MAT/POP path (e.g. '/project1/glsl1'). | |
| stage | No | Shader stage: 'pixel', 'vertex', or 'compute'. | pixel |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
| return_compiled | No | On write, re-cook and return any compile errors. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the docked DAT resolution, read/write behavior, and compile error handling via return_compiled. Returns {stage, docked_dat_path, code, errors}. Does not contradict annotations (destructiveHint=false, readOnlyHint=false). Could mention whether write replaces or appends code, but overall very transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the core purpose. No wasted words; each phrase earns its place. The structure logically separates read vs. write and error handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential aspects: operation modes, parameter semantics, output structure, and error handling. No gaps remain; the tool's behavior is fully understandable without external references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters are fully described in the schema (100% coverage). The description adds significant value by explaining the read/write duality of 'code,' the purpose of 'stage,' and the effect of 'return_compiled.' The schema alone would not convey this context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read or write a GLSL shader stage, resolving the correct docked DAT.' It specifies the action (read/write) and resource (GLSL shader stage), and distinguishes from siblings by highlighting the docked DAT resolution mechanism that no other tool mentions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: 'Omit code to read; pass code to write' and 'set return_compiled=true to re-cook and surface compile errors.' Also warns against guessing DAT names or setting .text directly. No alternatives needed as this is the only GLSL shader tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_layoutA
Layout intelligence: find an empty area, test overlap, or chain operators.
find_empty_area(needsbase): returns{x, y}for a non-overlappingwidthxheightblock.check_overlap(needspath): returns{overlaps: bool}.chain(needsops): connects operators in order, laid out left-to-right withspacing.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | No | [chain] Ordered operator paths to connect + lay out. | |
| base | No | [find_empty_area] Container path to place into. | |
| path | No | [check_overlap] Operator path to test vs siblings. | |
| width | No | [find_empty_area] Block width. | |
| action | Yes | 'find_empty_area', 'check_overlap', or 'chain'. | |
| height | No | [find_empty_area] Block height. | |
| margin | No | [find_empty_area] Gap between operators. | |
| spacing | No | [chain] Horizontal gap in pixels. | |
| start_x | No | [find_empty_area] Preferred start X. | |
| start_y | No | [find_empty_area] Preferred start Y. | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, etc., but description adds concrete return values ({x,y}, {overlaps: bool}) and action-specific behavior. Sufficient for agent to understand side-effects beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is extremely concise: two paragraphs with clear bullet points for each action. No redundant information, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all three actions, required parameters, and return values. With output schema present, description is largely complete. Minor gap: no error handling or limits mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, description groups parameters by action (e.g., [chain] ops, spacing) adding context beyond schema descriptions. Provides meaningful orientation for parameter use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides layout intelligence: find empty area, test overlap, or chain operators. Each action is distinctly listed with brief purpose, differentiating from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by listing required arguments for each action, but does not explicitly state when to use this tool over alternatives or when not to use it. No mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_list_media_assetsARead-onlyIdempotent
Scan a directory for usable TouchDesigner media files (video, audio, images, geometry).
Returns a list of relative file paths that can be loaded into moviefileinTOP, fileinSOP, audiofileinCHOP, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Optional path to the directory to scan. Defaults to current .toe folder. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety profile is clear. Description adds that it scans a directory and returns paths usable with specific node types, which provides context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each adding value. First sentence states the action and resources, second clarifies the output format and usage. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one optional parameter and clear purpose. Description covers what it does, what it returns, and default behavior. Output schema exists (though not detailed here) but description suffices for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with description for the 'folder' parameter. Description adds valuable context: optional, defaults to current .toe folder, and clarifies the scanning scope. No hidden parameters or ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'Scan a directory' and resource 'usable TouchDesigner media files' with explicit file types (video, audio, images, geometry). Returns relative paths for use with specific operators (moviefileinTOP, fileinSOP, audiofileinCHOP), distinguishing it from sibling tools that create, delete, or manipulate nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for discovering media files in a directory, but lacks explicit when-to-use or when-not-to-use guidance compared to siblings. No mention of alternative tools for more complex asset management or filtering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_load_toxADestructive
Load an external .tox file into a target Component (COMP).
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Path to the parent COMP where the .tox will be loaded. | |
| filepath | Yes | Absolute path or relative path to the .tox file to load. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false. The description implies loading replaces content but does not specify side effects (e.g., overwrites, errors on missing file). It adds minimal behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is front-loaded with the core action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown) but the description does not mention return values. For a destructive tool, more complete context (e.g., success conditions, error behavior) would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds no extra semantics beyond what the schema provides, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Load', the resource 'external .tox file', and the target 'Component (COMP)'. This distinguishes it from sibling tools like td_save_tox (save) and create_td_node (create from scratch).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. Given the large sibling list, explicit usage context would be beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_paneARead-onlyIdempotent
Return the current network-editor pane: path, pan, zoom, viewport size.
Use this to learn where the user is looking before editing there.
Returns {path, tx, ty, zoom, viewportSize} (or {pane: null}).
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by detailing the return structure (path, tx, ty, zoom, viewportSize) and the possibility of a null pane. This additional context helps the agent understand what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two well-structured sentences. The first sentence states the purpose, and the second provides a usage guideline and return format. No wasteful words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no nested objects), the description is complete. It covers the purpose, usage, return format, and the output schema is already present. No additional information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has one optional parameter (response_format) with 100% schema description coverage. The description does not mention the parameter, but the schema already fully documents it. Thus, the description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns the current network-editor pane with fields like path, pan, zoom, and viewport size. It is specific about the resource and action, but does not explicitly differentiate from sibling tools like td_layout or td_viewport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Use this to learn where the user is looking before editing there.' This tells the agent when to invoke the tool. No exclusions or alternatives are mentioned, but the context is sufficient given its read-only nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_save_projectA
Save the TouchDesigner project (.toe). Use this to checkpoint your work.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | No | Optional path to save the .toe to. If omitted, saves current project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability (readOnlyHint=false) and non-destructiveness (destructiveHint=false). Description adds minimal context ('checkpoint your work') but no new behavioral details (e.g., overwriting behavior, autocook).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Front-loaded with the key action, immediately useful for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (though not provided), the description is adequate for a simple save operation. It covers purpose and basic usage, though it could mention return values or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the parameter with full description (100% coverage). Description repeats schema info, adding no additional meaning. Baseline of 3 applies due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action: 'Save the TouchDesigner project (.toe).' It specifies the resource (project file) and file extension, distinguishing it from sibling tools like td_save_tox which save components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use this to checkpoint your work' implies periodic saves, but does not explicitly exclude scenarios or mention alternatives like td_save_tox for components. Context is clear but lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_save_toxB
Save a Component (COMP) operator to an external .tox file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the COMP operator to save (e.g. '/project1/my_comp'). | |
| filepath | Yes | Absolute path or relative path to save the .tox file. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=false and readOnlyHint=false, but the description does not elaborate on side effects, authorization needs, or behavior on overwrite. It merely restates the save operation without adding transparency beyond the annotation defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and resource. Every word is necessary; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple save operation, the description is adequate but lacks details on overwrite behavior, supported file paths (relative vs absolute), or error conditions. The presence of an output schema (not shown) compensates slightly, but overall context is minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds the context 'COMP operator' but does not provide additional meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Save a Component (COMP) operator to an external .tox file', specifying the resource type (COMP operator) and output format (.tox file). It effectively distinguishes from sibling tools like td_load_tox and td_save_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There are no mentions of prerequisites, exclusions, or when not to use it. The sibling list is extensive but no comparisons are made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_scaffoldA
Create a complete, pre-wired network from a template.
Prefer this over hand-wiring common setups: each template handles
creation, connector compatibility, naming, layout, and the first
force-cook. Returns {template, createdOps, wiring, entryPoint, description}.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Container path to build inside. | /project1 |
| template | Yes | 'render_pipeline', 'feedback_loop', 'instanced_particles', 'audio_reactive', or 'projection_mapping'. | |
| name_prefix | No | Name prefix for created operators (defaults to template). | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes what the template handles: creation, connector compatibility, naming, layout, first force-cook. Also specifies return structure. Annotations are minimal, so description adds substantial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-structured sentences: first states purpose, second adds usage guidance and return info. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, return value, and usage context. With openWorldHint=true and destructiveHint=false, description is sufficient for a scaffold tool. Could mention side effects on existing network, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good parameter descriptions. Description mentions template options but doesn't add meaning beyond schema for parameters like name_prefix or response_format. Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Create' and resource 'complete, pre-wired network from a template'. Distinct from siblings like create_td_node which creates individual nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Prefer this over hand-wiring common setups', giving when-to-use guidance. Could mention when not to use (e.g., custom wiring not in templates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_selectionARead-onlyIdempotent
Return operators currently selected in the active pane.
Returns {count, ops: [{path, name, type, opType, family, x, y}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing the tool as safe and idempotent. The description adds value by specifying the return format (count and operators structure), but goes beyond annotations only slightly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that front-load the action and result. No extraneous information is included, and every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter), the description fully covers its behavior and return value. The presence of an output schema (implied by the return description) means no additional details are needed for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, as the single optional parameter (response_format) is fully defined in the schema with an enum and description. The tool description does not add extra meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'operators currently selected in the active pane,' making the tool's purpose immediately understandable. It also specifies the return structure, which distinguishes it from sibling tools like 'get_td_nodes' that list all nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., 'get_td_nodes') or when not to use it. There is no mention of context or prerequisites, leaving the agent to infer usage without additional cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
td_viewportARead-only
Capture a TOP/COMP viewer or the network editor pane as an image.
Use this to actually see the result of edits instead of guessing.
target is a TOP/COMP path, or 'pane' for the current network editor.
Small inline captures are returned as a viewable image; large captures
(or return_as='path') return a temp-file path string.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Optional output width. | |
| format | No | 'png' or 'jpg'. | png |
| height | No | Optional output height. | |
| target | Yes | TOP/COMP path to capture, or the literal 'pane'. | |
| quality | No | JPG quality 1-100 (ignored for PNG). | |
| return_as | No | 'base64' inline, or 'path' for a temp-file path. | base64 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so the tool is safe. The description adds value by explaining that small captures are returned as viewable images while large captures (or return_as='path') return a temp-file path. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with purpose, then usage guidance, then parameter details. Every sentence adds value, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters and no output schema, the description covers output behavior (inline vs file path) and key parameter constraints. It could mention fallback defaults for width/height, but overall it is complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining the target parameter as 'TOP/COMP path, or the literal ''pane''' and that JPG quality is ignored for PNG. This helps the agent understand parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a TOP/COMP viewer or network editor pane as an image. This is a specific verb+resource pair, and the sibling tools (node creation, deletion, parameter updates) are all distinct, so the tool is well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Use this to actually see the result of edits instead of guessing.' It explains the target parameter and return options. However, it does not explicitly state when not to use this tool or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_td_node_parametersAIdempotent
Set parameter values on an operator.
Returns {path, updated, failed: [{name, reason}], message}. Unknown
names go to failed rather than raising β everything in failed
means the names were wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Operator path to update. | |
| parameters | Yes | Parameter name -> value. Verify names first with get_td_node_parameters; TD names are non-obvious. | |
| response_format | No | Output format: 'json' (default) or 'markdown'. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, so mutating but not destructive. The description adds valuable behavioral details: return structure {path, updated, failed: [{name, reason}], message}, and that unknown names go to failed rather than raising an error. This clarifies error handling beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first sentence states purpose, second explains return value and behavior. It is front-loaded and contains no superfluous text. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations covering safety, the description is fairly complete. It explains the return structure, failure mode, and hints at prerequisite verification. It effectively sets expectations for the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; all parameters have descriptions. The description adds only minimal parameter-related info (failure mode). Baseline is 3, and the description does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set parameter values on an operator.' The verb 'set' and resource 'parameter values on an operator' are specific. This distinguishes from sibling tools like get_td_node_parameters (read) and other manipulation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'Verify names first with get_td_node_parameters' but does not explicitly state when to use or not use this tool, nor does it provide alternatives. It offers a hint but lacks comprehensive usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
25 tool updates
v0.1.0- First observed
create_td_node - First observed
delete_td_node - First observed
describe_td_tools - First observed
exec_node_method - First observed
execute_python_script - First observed
get_td_class_details - First observed
get_td_classes - First observed
get_td_info - First observed
get_td_module_help - First observed
get_td_node_errors - First observed
get_td_node_parameters - First observed
get_td_nodes - First observed
td_connect - First observed
td_cook - First observed
td_glsl - First observed
td_layout - First observed
td_list_media_assets - First observed
td_load_tox - First observed
td_pane - First observed
td_save_project - First observed
td_save_tox - First observed
td_scaffold - First observed
td_selection - First observed
td_viewport - First observed
update_td_node_parameters
TDQS
Each tool targets a distinct operation (e.g., create vs. delete node, connect vs. layout, viewport capture vs. pane info). Overlap is minimal and well-explained in descriptions.
Tools follow a consistent verb_noun pattern with 'td_' prefix for common actions and 'get_td_' for queries. Exceptions like 'exec_node_method' and 'describe_td_tools' are still clear and fit the pattern.
25 tools is on the higher end but justified by the breadth of TouchDesigner capabilities covered. No tool seems superfluous, though a few could potentially be combined (e.g., get_td_classes and get_td_class_details).
Covers the full lifecycle: create, read, update, delete nodes; parameter management; connections; cooking; layout; file I/O; scripting; and inspection. Gaps are minor (e.g., timeline control) but not essential for core automation.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Eβ¦
A Model Context Protocol server for Wix AI tools
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseBqualityAmaintenanceA Model Context Protocol server that enables AI agents to control and operate TouchDesigner projects through creation, modification, and querying of nodes and project structures.14664514MIT
- AlicenseNot gradedqualityDmaintenanceHigh-performance MCP server that enables AI assistants to control TouchDesigner live via WebSocket, providing 37 tools for nodes, parameters, scripting, and more.5MIT
- AlicenseAqualityDmaintenanceMCP server for controlling TouchDesigner from AI coding agents like Claude Code and Codex CLI, enabling operator manipulation, parameter control, and screenshot capture.12MIT
- AlicenseBqualityBmaintenanceAn MCP server for TouchDesigner that lets AI agents inspect, build, wire, optimize, and stabilize live TD networks with 106 tools, plus a technique memory system for reusable patterns.10011MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/axysar/touchdesigner-agent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server