- OPERATORS
- CONTROLLERS
Tool Registry
v1.0.0The 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.
Usage Examples
Section titled “Usage Examples”Assigning a Tool to an Agent
Section titled “Assigning a Tool to an Agent”- On the Tool Registry page, pulse Scan Network to discover tools and agents.
- Select a tool from Select Tool — the Tool Path field shows its full network path.
- Select an agent from Select Target Agent.
- Pulse Assign Tool to Agent. The tool is added to the agent’s Tool sequence.
- If the agent’s Use Tools toggle is off, the operator warns you to enable it.
Controlling Search Scope
Section titled “Controlling Search Scope”- 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.
Troubleshooting
Section titled “Troubleshooting”- 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.
Parameters
Section titled “Parameters”Tool Registry
Section titled “Tool Registry”op('tool_registry').par.Status Str - Default:
"" (Empty String)
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
op('tool_registry').par.Toolpath Str Full network path of the currently selected tool operator.
- Default:
"" (Empty String)
op('tool_registry').par.Agentpath Str Full network path of the currently selected agent operator.
- Default:
"" (Empty String)
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
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
Changelog
Section titled “Changelog”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) andTool.sequenceparameters (agents) - Smart Filtering: Automatically excludes
/ui/and/sys/system paths, with configurable network scope and depth - Parameter-Based UI: Clean interface using
DotLOPUtils.create_parameterwith 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
Usetoolsdisabled
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.sequenceparameter pattern (not hallucinatedNumtools) - TouchDesigner Integration: Follows LOP operator standards and TouchDesigner best practices