Tool Registry
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.
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