Skip to main content
Glama

Find TouchDesigner nodes

find_td_nodes
Read-only

Search TouchDesigner node hierarchies by name, path, operator type, or family, with depth and time limits, returning only paths and search metadata without loading the full topology.

Instructions

Read-only: compact bridge-side node search by name/path glob, exact or partial operator type, family and bounded depth. Returns {count, truncated, matches/paths, search_metadata} without transferring topology; older bridges fall back only to structured list/topology reads. Prefer this over get_td_nodes when looking through a sub-tree; use get_td_topology only when you need wiring.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNoCase-insensitive operator-type substring (e.g. 'TOP', 'noise').
limitNoMax matches to return.
familyNoOptional exact TouchDesigner operator family.
patternNoCase-insensitive name/path filter with '*' wildcards (e.g. 'text*', '*noise*').
max_depthNoMaximum descendant depth; 1 means direct children. Overrides recursive=true.
name_globNoAdditional name-only '*' glob.
path_globNoAdditional absolute-path '*' glob.
path_onlyNoReturn only matching paths.
recursiveNoSearch the whole sub-network (true) or only direct children (false).
type_matchNoWhether `type` is a substring or an exact operator type.partial
parent_pathNoWhere to search from./project1
time_limit_msNoHard bridge-side search budget in milliseconds.
node_scan_limitNoHard cap on nodes inspected inside TouchDesigner.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYesTotal nodes matched before `limit` truncation.
pathsNopath_only mode: the matched node paths and nothing else.
sourceYes
matchesNoDefault mode: each matched node as {path, name, type, family}.
warningsNo
recursiveYesWhether descendants were searched, echoing the request.
truncatedYesTrue if more nodes matched than `limit` returned.
parent_pathYesThe network root the search ran under.
search_metadataNoCurrent-bridge scan completeness and budget evidence; absent on an older-bridge fallback.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed27 schema fields changedv0.13.2
    • addedInput schema / properties / family
      Added value: +{
      +  "description": "Optional exact TouchDesigner operator family.",
      +  "enum": [
      +    "TOP",
      +    "CHOP",
      +    "SOP",
      +    "DAT",
      +    "COMP",
      +    "MAT",
      +    "POP"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / limit / exclusiveMinimum
      Removed value: -0
    • changedInput schema / properties / limit / maximum
      Previous value: -9007199254740991New value: +200
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • addedInput schema / properties / max_depth
      Added value: +{
      +  "description": "Maximum descendant depth; 1 means direct children. Overrides recursive=true.",
      +  "maximum": 32,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / name_glob
      Added value: +{
      +  "description": "Additional name-only '*' glob.",
      +  "maxLength": 256,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / node_scan_limit
      Added value: +{
      +  "default": 5000,
      +  "description": "Hard cap on nodes inspected inside TouchDesigner.",
      +  "maximum": 10000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / parent_path / maxLength
      Added value: +1024
    • addedInput schema / properties / parent_path / minLength
      Added value: +1
    • addedInput schema / properties / path_glob
      Added value: +{
      +  "description": "Additional absolute-path '*' glob.",
      +  "maxLength": 256,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / pattern / maxLength
      Added value: +256
    • addedInput schema / properties / pattern / minLength
      Added value: +1
    • addedInput schema / properties / time_limit_ms
      Added value: +{
      +  "default": 500,
      +  "description": "Hard bridge-side search budget in milliseconds.",
      +  "maximum": 2000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / type / maxLength
      Added value: +256
    • addedInput schema / properties / type / minLength
      Added value: +1
    • addedInput schema / properties / type_match
      Added value: +{
      +  "default": "partial",
      +  "description": "Whether `type` is a substring or an exact operator type.",
      +  "enum": [
      +    "partial",
      +    "exact"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / matches / description
      Previous value: -"Default mode: each matched node as {path, name, type}."New value: +"Default mode: each matched node as {path, name, type, family}."
    • removedOutput schema / properties / matches / items / properties / already_existed
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / matches / items / properties / family
      Added value: +{
      +  "enum": [
      +    "TOP",
      +    "CHOP",
      +    "SOP",
      +    "DAT",
      +    "COMP",
      +    "MAT",
      +    "POP"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / matches / items / properties / name / default
      Removed value: -""
    • removedOutput schema / properties / matches / items / properties / parameter_warnings
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / matches / items / properties / type / default
      Removed value: -""
    • changedOutput schema / properties / matches / items / required
      Previous value: -[
      -  "path",
      -  "type",
      -  "name"
      -]New value: +[
      +  "path",
      +  "name",
      +  "type"
      +]
    • addedOutput schema / properties / search_metadata
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Current-bridge scan completeness and budget evidence; absent on an older-bridge fallback.",
      +  "properties": {
      +    "count_complete": {
      +      "type": "boolean"
      +    },
      +    "matched": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "returned": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "scan_truncated": {
      +      "type": "boolean"
      +    },
      +    "scanned": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "stop_reason": {
      +      "enum": [
      +        "completed",
      +        "node_scan_limit",
      +        "parameter_scan_limit",
      +        "time_limit"
      +      ],
      +      "type": "string"
      +    },
      +    "truncated": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "scanned",
      +    "matched",
      +    "returned",
      +    "truncated",
      +    "scan_truncated",
      +    "count_complete",
      +    "stop_reason"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / source
      Added value: +{
      +  "enum": [
      +    "bridge_search",
      +    "legacy_structured_fallback"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "parent_path",
      -  "recursive",
      -  "count",
      -  "truncated"
      -]New value: +[
      +  "parent_path",
      +  "recursive",
      +  "count",
      +  "truncated",
      +  "source"
      +]
  2. Changed1 schema field changedv0.12.0
    • addedOutput schema / properties / matches / items / properties / already_existed
      Added value: +{
      +  "type": "boolean"
      +}
  3. Changed6 schema fields changedv0.5.0
    • addedOutput schema / properties / count / description
      Added value: +"Total nodes matched before `limit` truncation."
    • addedOutput schema / properties / matches / description
      Added value: +"Default mode: each matched node as {path, name, type}."
    • addedOutput schema / properties / parent_path / description
      Added value: +"The network root the search ran under."
    • addedOutput schema / properties / paths / description
      Added value: +"path_only mode: the matched node paths and nothing else."
    • addedOutput schema / properties / recursive / description
      Added value: +"Whether descendants were searched, echoing the request."
    • addedOutput schema / properties / truncated / description
      Added value: +"True if more nodes matched than `limit` returned."
  4. First observedv0.3.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint=false, but the description adds behavioral details beyond that: it is 'compact', does not transfer topology, returns a specific structure {count, truncated, matches/paths, search_metadata}, and falls back to list/topology reads on older bridges. This is useful context that annotations do not provide.

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: two sentences, front-loaded with the core purpose ('Read-only: compact bridge-side node search'), and includes usage guidance and return format without redundancy. Every sentence adds value.

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 the 13-parameter schema has full descriptions and an output schema exists, the description only needs to fill the gaps: usage recommendations, behavioral limits (no topology transfer), and fallback behavior. It does this completely, making it sufficient for an agent to decide when and how to invoke the tool.

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?

Schema coverage is 100% with every parameter well-described, so baseline is 3. The description summarizes search dimensions (name/path glob, operator type, family, bounded depth) but does not add new meaning beyond the schema's per-parameter descriptions. The terms map directly to existing schema fields like pattern, path_glob, type, family, and max_depth.

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 explicitly states the tool performs a read-only search for TouchDesigner nodes by name/path glob, exact or partial operator type, family, and bounded depth. The verb 'search' with specific filter dimensions clearly distinguishes it from sibling tools like get_td_nodes and get_td_topology.

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?

The description gives direct usage guidance: 'Prefer this over get_td_nodes when looking through a sub-tree; use get_td_topology only when you need wiring.' It also mentions fallback behavior for older bridges, providing clear context on when to use this tool versus alternatives.

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

Install Server

Other Tools

Latest Blog Posts

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/Pantani/tdmcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server