Skip to content

Tool Registry

v1.0.0

The Tool Registry scans your TouchDesigner network for operators with GetTool() methods (tools) and operators with Tool sequence parameters (agents), then lets you assign tools to agents from a single interface. It handles duplicate detection and validates assignments automatically.

  1. On the Tool Registry page, pulse Scan Network to discover tools and agents.
  2. Select a tool from Select Tool — the Tool Path field shows its full network path.
  3. Select an agent from Select Target Agent.
  4. Pulse Assign Tool to Agent. The tool is added to the agent’s Tool sequence.
  5. If the agent’s Use Tools toggle is off, the operator warns you to enable it.
  • Current Level (default): Scans siblings of the Tool Registry — fastest.
  • Parent Level: Scans one level up, covering sibling networks.
  • Entire Project: Scans the full project tree — slowest but finds everything.

Set Max Search Depth to limit how deep the scan goes within the chosen scope. The scan automatically excludes /ui/ and /sys/ paths.

  • No Tools Found: Ensure tool operators have “LOP” tags and a GetTool() method. Increase search scope or depth.
  • No Agents Found: Ensure agent operators have “LOP” tags and a Tool sequence parameter.
  • “Tool already assigned”: The registry detected the tool is already in the agent’s Tool sequence — no action needed.
  • “Use Tools is disabled” warning: The tool was assigned but the agent’s Use Tools toggle is off. Enable it on the agent’s Tools page.
Status (Status) op('tool_registry').par.Status Str
Default:
"" (Empty String)
Assign Tool to Agent (Assigntool) op('tool_registry').par.Assigntool Pulse

Assigns the selected tool to the selected agent by adding it to the agent's Tool sequence parameters. Checks for duplicates and validates compatibility.

Default:
False
Select Tool (Selectedtool) op('tool_registry').par.Selectedtool Menu

List of discovered LOP operators that have a callable GetTool method. Select a tool to view its path and assign it to agents.

Default:
none
Options:
none
Tool Path (Toolpath) op('tool_registry').par.Toolpath Str

Full network path of the currently selected tool operator.

Default:
"" (Empty String)
Select Target Agent (Targetagent) op('tool_registry').par.Targetagent Menu

List of discovered LOP agents that have Tool sequence parameters and can accept tool assignments. Select an agent to assign the selected tool.

Default:
none
Options:
none
Agent Path (Agentpath) op('tool_registry').par.Agentpath Str

Full network path of the currently selected agent operator.

Default:
"" (Empty String)
Scan Network (Scannetwork) op('tool_registry').par.Scannetwork Pulse

Scans the network to find LOP-tagged operators with GetTool methods (tools) and Tool sequence parameters (agents). Uses current network filtering settings.

Default:
False
Search Scope (Searchscope) op('tool_registry').par.Searchscope Menu

Controls the network scope for scanning. Current Level searches the same level as the Tool Registry, Parent Level goes one level up, Root Level searches the entire project. Current Level is recommended for performance.

Default:
current_level
Options:
current_level, parent_level, root_level
Max Search Depth (Maxdepth) op('tool_registry').par.Maxdepth Int

Maximum depth to search within the selected scope. Depth 1 finds immediate children, depth 2 includes grandchildren, etc. Lower values improve scan performance. Excludes /ui/ and /sys/ paths automatically.

Default:
0
Range:
1 to 10
Slider Range:
1 to 10
v1.0.02025-07-01

# v1.0.0 - Initial Release

This is the initial release of the Tool Registry operator, providing centralized discovery and assignment of LOP tools to agents.

Core Features

  • LOP Network Scanning: Discovers LOP-tagged operators with GetTool() methods (tools) and Tool.sequence parameters (agents)
  • Smart Filtering: Automatically excludes /ui/ and /sys/ system paths, with configurable network scope and depth
  • Parameter-Based UI: Clean interface using DotLOPUtils.create_parameter with detailed help text for all parameters
  • Tool Assignment: One-click workflow to assign discovered tools to compatible agents via Tool sequence parameters
  • Duplicate Prevention: Checks for existing tool assignments before adding new ones
  • Live UI Updates: Tool and agent paths update immediately when menu selections change
  • Use Tools Validation: Warns users if assigned agents have Usetools disabled

Network Filtering Options

  • Search Scope: Current Level (default), Parent Level, or Entire Project
  • Max Depth: Configurable search depth (1-10 levels) for performance optimization
  • Auto-Initialization: Automatically scans network on startup

User Interface

  • Tool Registry Page: All parameters organized in a single, clean page
  • Simplified Labels: Menu items show operator names only, full paths in dedicated display fields
  • Status Feedback: Comprehensive logging for scan results, assignments, and warnings
  • Reset Function: ResetOp() clears all discovered information for fresh starts

Technical Implementation

  • Pythonic Code: Clean, condensed implementation with minimal verbose logging
  • Direct Method Calls: Simplified assignment logic without unnecessary delayed execution
  • Proper Agent Detection: Uses correct Tool.sequence parameter pattern (not hallucinated Numtools)
  • TouchDesigner Integration: Follows LOP operator standards and TouchDesigner best practices