Skip to main content
Glama

td-mcp

MCP (Model Context Protocol) server for controlling TouchDesigner from AI coding agents like Claude Code and Codex CLI.

Setup

1. TouchDesigner Side

  1. Install the callbacks file into your TD project:

    cd /path/to/your-td-project
    uvx td-mcp install
  2. Create a WebServer DAT in TouchDesigner

  3. Set Port to 9980

  4. Set the WebServer DAT's callbacks File parameter to td_mcp_callbacks.py

  5. Toggle Active ON

2. Agent Side

Claude Code (.mcp.json)

{
  "mcpServers": {
    "touchdesigner": {
      "command": "uvx",
      "args": ["td-mcp"],
      "env": {
        "TD_HOST": "127.0.0.1",
        "TD_PORT": "9980"
      }
    }
  }
}

Codex CLI

codex mcp add touchdesigner \
  --env TD_HOST=127.0.0.1 \
  --env TD_PORT=9980 \
  -- uvx td-mcp

Related MCP server: touchdesigner-mcp

Tools

Tool

Description

td_get_root

Get project root path (call first)

td_create_op

Create an operator

td_delete_op

Delete an operator

td_list_ops

List child operators

td_get_op_info

Get operator info

td_set_params

Set parameters (batch)

td_get_params

Get parameters (with schema discovery)

td_connect

Connect operators

td_disconnect

Disconnect operators

td_find_empty_space

Find empty space in network editor

td_execute

Execute Python code in TD

td_get_screenshot

Capture TOP screenshot

Environment Variables

Variable

Default

Description

TD_HOST

127.0.0.1

TouchDesigner host

TD_PORT

9980

WebServer DAT port

TD_TIMEOUT

10.0

Request timeout (seconds)

Architecture

AI Agent → MCP Server (stdio) → HTTP Client → TouchDesigner WebServer DAT

Security Note

td_execute allows arbitrary Python execution inside TouchDesigner. Use only in trusted local environments.

License

MIT

Available Tools

12 tools
td_connectC

Connect two operators.

Args: from_op: Source operator path to_op: Destination operator path from_index: Output connector index on source (default 0) to_index: Input connector index on destination (default 0)

ParametersJSON Schema
NameRequiredDescriptionDefault
to_opYes
from_opYes
to_indexNo
from_indexNo

TDQS

C2.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It merely restates the function as 'Connect two operators' with no mention of side effects, permissions, or reversibility, which is insufficient for an agent to understand the tool's impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a single sentence followed by a structured argument list. However, the main description is extremely brief and could be more informative without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description fails to provide sufficient context about the connection process, such as whether operators must exist or be compatible, or what the result of the operation is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The argument list in the description adds meaningful context beyond the schema, explaining that 'from_op' is a source operator path and 'to_op' is a destination path, with indices for connectors. This compensates for the 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Connect two operators' is clear and specific, using a verb and resource. It distinguishes from siblings like td_disconnect and td_get_op_info, though it could be more precise about the nature of the connection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 is no mention of prerequisites, preconditions, or when not to use it, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_create_opA

Create a new operator in TouchDesigner.

Args: parent: Parent path (e.g. "/project1") op_type: TD operator class name (e.g. "noiseCHOP", "constantTOP", "textDAT") name: Optional name for the new operator params: Optional dict of parameters to set immediately after creation nodeX: Optional X position in the network editor. Use td_find_empty_space to get a non-overlapping position. nodeY: Optional Y position in the network editor. Use td_find_empty_space to get a non-overlapping position.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
nodeXNo
nodeYNo
paramsNo
parentYes
op_typeYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It explains the purpose of each parameter but does not mention side effects (e.g., does it trigger events?), error cases (e.g., invalid op_type), or reversibility. The basic creation action is implied but not fully detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured as a docstring with an Args section, which is clear. It is relatively concise but includes examples and usage hints that earn their place. A few phrases could be trimmed, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters (2 required), no output schema, and no annotations, the description provides good detail. It explains each parameter and references a sibling tool for positioning. However, it lacks error handling info or return value details (though not required). It feels mostly complete for a creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries full burden. It adds meaning by explaining each parameter: parent (path), op_type (class name with examples), name (optional), params (optional dict), nodeX/nodeY (positions with sibling recommendation). This goes well beyond the schema which only shows types and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create a new operator' and the context 'in TouchDesigner'. It specifies the verb and resource, and distinguishes from sibling tools like td_delete_op (delete) and td_get_op_info (get info). The examples of op_type help clarify the kind of resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on when to use td_find_empty_space for nodeX/nodeY, giving a clear alternative for positioning. However, it does not explicitly state when not to use this tool, such as for parameter updates (use td_set_params) or other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_delete_opA

Delete an operator.

Args: path: Full path of the operator to delete (e.g. "/project1/noise1")

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only states 'Delete an operator' without disclosing side effects, reversibility, or consequences (e.g., impact on connections). This is minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence for the action and one line for the parameter. It is front-loaded ('Delete') and every part earns its place with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool, the description covers the basic action and parameter. However, it lacks information about return values, error handling, or success confirmation, which is a gap given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 0% coverage for the 'path' parameter. The description compensates by explaining it is the full path and giving an example ('/project1/noise1'), adding meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes an operator, a specific verb+resource. It distinguishes from sibling tools like td_create_op (create) and td_get_op_info (get info), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives, such as td_disconnect or td_set_params. It does not specify prerequisites or when deletion is appropriate, leaving the agent without contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_disconnectA

Disconnect an operator's connector.

Args: path: Operator path connector: "input" or "output" (default "input") index: Connector index (default 0)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
indexNo
connectorNoinput

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits beyond the basic action. There is no mention of side effects, permissions, or reversibility. The description carries the full burden but falls short.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a front-loaded purpose statement followed by a clear parameter list. Every word is necessary and well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters and no output schema, the description adequately explains the action and parameters. However, it lacks information about return values or what happens upon disconnection, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage, the description adds meaningful parameter details: path is an operator path, connector defaults to 'input' with allowed values, and index defaults to 0. This goes beyond the schema's type and default information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Disconnect' and the resource 'operator's connector.' It is specific and distinguishes from sibling tools like td_connect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does but provides no guidance on when to use it versus alternatives (e.g., td_connect, td_delete_op). Usage is only implied through the action verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_executeC

Execute Python code inside TouchDesigner.

Args: code: Python code to execute in TD's main thread return_expression: Optional expression to evaluate and return after execution

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
return_expressionNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'execution in TD's main thread' but omits other behavioral traits like whether it is synchronous, error behavior, or permission requirements. This is insufficient for a code execution tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short (two sentences) and front-loaded with the main action. However, it lacks structure or additional sections (e.g., return value description) that would be helpful for such a tool. It is concise but not optimally structured for completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should compensate with details about behavior (e.g., error handling, blocking nature, side effects). It does not, leaving the agent underinformed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds value by explaining the 'code' parameter as 'Python code to execute in TD's main thread' and 'return_expression' as 'Optional expression to evaluate and return'. This clarifies the purpose beyond the schema's type-only definition, but it does not detail expected formats or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Execute Python code inside TouchDesigner', which is a specific verb and resource. It distinguishes this tool from siblings like td_delete_op or td_get_root, all of which have different purposes. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 vs alternatives, prerequisites, or context. For a code execution tool, it's critical to mention safety or error handling, but none is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_find_empty_spaceA

Find an empty (non-overlapping) position for a new operator in the network editor.

Returns nodeX, nodeY coordinates that can be passed directly to td_create_op.

Args: parent: Parent path to search in (e.g. "/project1") width: Estimated width of the new operator (default 200) height: Estimated height of the new operator (default 200) direction: Placement strategy — "right" (next to rightmost op), "below" (under bottommost op), or "grid" (find first free slot in grid scan) padding: Minimum gap between operators (default 50)

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNo
heightNo
parentYes
paddingNo
directionNoright

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explains the tool finds non-overlapping positions and the direction strategy, but does not explicitly state that it does not modify the network or mention any side effects, authentication needs, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a brief summary sentence, followed by return value clarification, then a clear Args block listing parameters. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 5 parameters and no output schema, the description covers all parameters and the return concept. It could be improved by specifying the exact return type (e.g., a dict with nodeX/nodeY) and handling of edge cases like no space found, but overall it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning the schema properties lack descriptions. The description compensates fully with an Args block that explains each parameter (parent, width, height, direction, padding) including defaults and allowed values for direction (right, below, grid).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Find' and resource 'empty position', clearly differentiating from sibling tools like td_create_op which creates the operator. It explicitly states the tool's purpose and outputs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Returns nodeX, nodeY coordinates that can be passed directly to td_create_op', indicating when to use this tool (before creation). It describes direction strategies but does not explicitly state when not to use or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_get_op_infoA

Get info about an operator. Returns minimal fields by default for token efficiency.

Args: path: Operator path fields: Fields to return (default: name, type, family). Available: name, type, family, path, inputs, outputs, numChildren, comment, storage, tags, nodeX, nodeY

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
fieldsNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It explains default return fields and available options, indicating read-only behavior. No contradictions, but could mention that it does not modify state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a list of args—efficient and front-loaded with core purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple get tool but could be more complete: no explanation of path structure, no example, and no output schema description. Still covers essential behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description adds meaning: path is operator path, fields is array of field names with default list. However, it lacks details like path format and field semantics (e.g., nodeX meaning).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get info about an operator', specifying the verb and resource. It distinguishes from sibling tools like td_delete_op (deletion) and td_get_root (root retrieval).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'token efficiency' and default minimal fields, implying use for lightweight info, but does not explicitly state when to use or avoid this tool versus alternatives like td_get_params or other get operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_get_paramsA

Get parameters from an operator. Returns only non-default values by default for token efficiency.

Args: path: Operator path names: Specific parameter names to retrieve (returns all values including defaults) pattern: Glob pattern to filter parameter names (e.g. "noise*") discover: If true, returns rich schema per parameter (value, default, type, min, max, page, menuNames). Use this to discover available parameter names and their types for an unfamiliar operator. page: Page number for paginated results (50 params per page)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
pathYes
namesNo
patternNo
discoverNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does well by explaining the default behavior (non-default values for token efficiency), pagination (50 params per page), and the discover mode returning rich schema. It does not explicitly state read-only nature but infers it from 'get' semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a short opening sentence and an Args list. It is front-loaded with the primary purpose and avoids unnecessary verbosity, making it easy for an AI agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers core functionality, pagination, and discovery mode well, but lacks specification of the return format (e.g., structure of response) and error handling. Given no output schema, these details would complete the picture for robust agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates by explaining each parameter's effect: names returns all values, pattern uses glob, discover enables rich output, page controls pagination. These add meaning beyond the schema's titles and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves parameters from an operator, specifying that it returns only non-default values by default. This is distinct from sibling tools like td_set_params (set) and td_get_op_info (operator info), providing a clear verb+resource identity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes guidance for the discover parameter to explore unfamiliar operators, but does not provide explicit when-to-use or when-to-avoid comparisons with sibling tools like td_get_op_info. This leaves some ambiguity for an AI agent to decide between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_get_rootA

Get the actual project root path. Call this FIRST before using any other tool that requires a path.

Returns the path of the top-level project COMP (e.g. "/project1" or whatever the user named it). Do not assume "/project1" — always discover the real path with this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description discloses the return value (path) and usage order. It does not detail potential side effects or authentication needs, but for a simple getter this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: purpose, usage instruction, and return value. No wasted words, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and straightforward purpose, the description fully covers what the tool does, when to use it, and what it returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. Per guidelines, baseline score for 0 parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get the actual project root path.' It uses a specific verb and resource, and distinguishes it from siblings which deal with operations, parameters, or connections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to 'Call this FIRST before using any other tool that requires a path' and warns not to assume a fixed path, providing clear when-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_get_screenshotA

Get a screenshot of a TOP operator as base64 image.

Args: path: Path to a TOP operator width: Output width in pixels (default 640, height auto-scaled) format: Image format — "jpeg" (default, smaller) or "png"

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
widthNo
formatNojpeg

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It implies a safe read operation but does not disclose error behavior, permissions, or side effects. The description lacks details on what happens if the path is invalid or if the image generation fails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: a one-sentence summary followed by a clean args list. 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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (3 parameters, no output schema, no annotations), the description covers the core behavior and parameters. However, it lacks details about the return format (base64 string) and error cases, which would be helpful for complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description explains each parameter beyond the schema: path is a path to a TOP operator, width includes default and note that height is auto-scaled, format includes default and comparison of file sizes. This adds significant value over the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get a screenshot of a TOP operator as base64 image.' The verb 'get' and resource 'screenshot of a TOP operator' are specific and distinct from siblings like td_delete_op or td_get_op_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. There is no mention of prerequisites or exclusions. The description only lists arguments, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_list_opsA

List child operators with optional filtering and pagination.

Args: path: Parent path to list children of family: Filter by family (CHOP, TOP, SOP, DAT, COMP, MAT) type_filter: Filter by specific type name fields: Fields to return per op (default: name, type, family) limit: Max results (default 50) offset: Skip first N results

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
limitNo
familyNo
fieldsNo
offsetNo
type_filterNo

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must disclose behavioral traits. It does not state whether the operation is read-only, what side effects exist, or any authorization needs. It only describes parameters and core action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured as a docstring with an Args section. Every sentence serves a purpose, with no unnecessary words. A slight dock for not being front-loaded with the key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core purpose, filtering, and pagination. However, given 6 parameters and no output schema, it lacks details on return format, error handling, or the meaning of 'child' hierarchy. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds meaningful explanations for each parameter (e.g., 'Parent path to list children of', 'Filter by family'). This adds value beyond the schema's titles. However, it does not provide examples or detailed formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists child operators with filtering and pagination. It uses a specific verb ('list') and resource ('child operators'), and distinguishes from siblings like td_get_op_info (single op info) and td_create_op (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing ops with filtering, but does not explicitly state when to use this tool vs alternatives (e.g., when to use td_get_root or td_find_empty_space). No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

td_set_paramsA

Set multiple parameters on an operator in a single batch call.

Args: path: Operator path params: Dict of parameter names to values (e.g. {"roughness": 0.5, "seed": 42})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
paramsYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It states the tool performs a write operation but does not mention side effects (e.g., overwriting vs. merging), validation, error conditions, or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (4 lines) with a clear purpose and structured Args section. Every sentence is necessary and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description is minimally adequate but lacks behavioral transparency and usage context. It does not mention its relationship to td_get_params or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% coverage, so the description must compensate. It defines 'path' as 'Operator path' and 'params' as 'Dict of parameter names to values' with an example, adding meaning beyond the schema's bare object type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Set multiple parameters on an operator in a single batch call,' specifying the verb (set), resource (operator), and distinction from siblings like td_get_params, td_create_op, and td_delete_op.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., a hypothetical single-parameter setter) or prerequisites (e.g., operator existence). The description only explains what the tool does, not when it is appropriate.

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.

  1. 12 tool updatesv0.1.3
    • First observedtd_connect
    • First observedtd_create_op
    • First observedtd_delete_op
    • First observedtd_disconnect
    • First observedtd_execute
    • First observedtd_find_empty_space
    • First observedtd_get_op_info
    • First observedtd_get_params
    • First observedtd_get_root
    • First observedtd_get_screenshot
    • First observedtd_list_ops
    • First observedtd_set_params

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct operation: delete, create, list, get info, set/get parameters, connect/disconnect, execute code, screenshot, and utility functions like find_empty_space and get_root. No overlapping purposes; the distinction between get_op_info and get_params is clear (metadata vs parameters).

Naming Consistency4/5

All tools use the td_ prefix and mostly follow a verb_noun pattern (e.g., td_delete_op, td_create_op, td_get_params). However, td_connect and td_disconnect lack a noun (they connect/disconnect operators, but the name omits the object), and td_get_root is a compound verb_noun but with a different structure. Minor inconsistencies.

Tool Count5/5

12 tools is well-scoped for a TouchDesigner server. It covers the essential operations without being overwhelming. Each tool serves a clear purpose and none appear superfluous.

Completeness4/5

The set covers core CRUD for operators, parameter management, connections, code execution, and screenshots. Minor gaps exist: no explicit rename or move operator tool, and no recursive list tool. However, these can be worked around (rename via delete+create, move implied by delete+create, recursion via repeated list_ops).

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers