Tool Registry
The Tool Registry LOP provides centralized discovery and assignment of LOP tools to agents across your TouchDesigner network. It automatically scans for operators with tool capabilities and agents that can use tools, then provides a simple interface to assign tools to agents without manual configuration.
Requirements
Section titled “Requirements”- LOP Network: Operators tagged with “LOP” for discovery
- Tool Operators: Operators with
GetTool()
methods - Agent Operators: Operators with Tool sequence parameters
- Network Access: Appropriate permissions to scan and modify operators
- Network Scanning: Discovers operators automatically based on search scope
- Tool Detection: Finds operators with callable
GetTool()
methods - Agent Detection: Finds operators with Tool sequence parameters
Output
Section titled “Output”- Tool Assignment: Automatically configures agent Tool parameters
- Discovery Results: Lists of available tools and agents
- Status Information: Assignment results and error reporting
Parameters
Section titled “Parameters”Tool Registry
Section titled “Tool Registry”op('tool_registry').par.Status
str Current status and operation results
- Default:
None
op('tool_registry').par.Assigntool
pulse Assigns the selected tool to the selected agent by adding it to the agent's Tool sequence parameters
- Default:
None
op('tool_registry').par.Toolpath
str Full network path of the currently selected tool operator
- Default:
None
op('tool_registry').par.Agentpath
str Full network path of the currently selected agent operator
- Default:
None
op('tool_registry').par.Scannetwork
pulse Scans the network to find LOP-tagged operators with GetTool methods (tools) and Tool sequence parameters (agents)
- Default:
None
op('tool_registry').par.Maxdepth
int Maximum depth to search within the selected scope
- Default:
0
op('tool_registry').par.Bypass
toggle Bypass the operator
- Default:
false
op('tool_registry').par.Showbuiltin
toggle Show built-in TouchDesigner parameters
- Default:
false
op('tool_registry').par.Version
str Current version of the operator
- Default:
None
op('tool_registry').par.Lastupdated
str Date of last update
- Default:
None
op('tool_registry').par.Creator
str Operator creator
- Default:
None
op('tool_registry').par.Website
str Related website or documentation
- Default:
None
op('tool_registry').par.Chattd
op Reference to the ChatTD operator for configuration
- Default:
None
Discovery System
Section titled “Discovery System”Tool Discovery
Section titled “Tool Discovery”The Tool Registry automatically finds operators that can be used as tools:
- LOP Tagged: Must have “LOP” in their tags
- GetTool Method: Must have a callable
GetTool()
method - Network Filtering: Excludes
/ui/
and/sys/
paths automatically - Path Validation: Verifies operator accessibility and functionality
Agent Discovery
Section titled “Agent Discovery”The Tool Registry identifies agents that can use tools:
- LOP Tagged: Must have “LOP” in their tags
- Tool Sequence: Must have
Tool
sequence parameters - Assignment Ready: Can accept new tool assignments
- Configuration Support: Compatible with automated tool assignment
Search Scope Options
Section titled “Search Scope Options”Current Level
Section titled “Current Level”- Scope: Same network level as the Tool Registry
- Performance: Fastest scanning option
- Use Case: Local tool management within a specific network section
- Recommended: For most workflows
Parent Level
Section titled “Parent Level”- Scope: One level up from the Tool Registry’s location
- Performance: Moderate scanning time
- Use Case: Managing tools across sibling networks
- Recommended: For cross-section tool sharing
Entire Project
Section titled “Entire Project”- Scope: Complete TouchDesigner project
- Performance: Slowest but most comprehensive
- Use Case: Global tool management across entire project
- Recommended: For complex multi-level projects
Basic Workflow
Section titled “Basic Workflow”- Network Scan: Click “Scan Network” to discover available tools and agents
- Select Tool: Choose a tool from the “Select Tool” dropdown
- Select Agent: Choose an agent from the “Select Target Agent” dropdown
- Assign Tool: Click “Assign Tool to Agent” to complete the assignment
- Verify: Check the agent’s Tool parameters to confirm assignment
Advanced Configuration
Section titled “Advanced Configuration”Search Optimization
Section titled “Search Optimization”- Scope Selection: Choose appropriate search scope for your network
- Depth Limiting: Set max depth to balance discovery vs. performance
- Regular Scanning: Rescan when network structure changes
Batch Assignment
Section titled “Batch Assignment”# Assign multiple tools to an agenttool_registry = op('tool_registry')tools = ['file_in', 'file_out', 'search']agent_path = '/project/agents/research_agent'
for tool_name in tools: tool_registry.par.Selectedtool = tool_name tool_registry.par.Targetagent = agent_path tool_registry.par.Assigntool.pulse()
Integration Examples
Section titled “Integration Examples”Project Setup
Section titled “Project Setup”# Set up tool registry for project-wide managementtool_registry = op('tool_registry')
# Configure for comprehensive discoverytool_registry.par.Searchscope = 'root_level'tool_registry.par.Maxdepth = 3
# Scan and discover all toolstool_registry.par.Scannetwork.pulse()
# Get discovered tools and agentstools = tool_registry.discovered_toolsagents = tool_registry.discovered_agents
Automated Assignment
Section titled “Automated Assignment”# Automatically assign common tools to all agentscommon_tools = ['file_in', 'file_out', 'search']tool_registry = op('tool_registry')
# Scan network firsttool_registry.par.Scannetwork.pulse()
# Get all discovered agentsagents = tool_registry.discovered_agents
# Assign common tools to each agentfor agent_path in agents: tool_registry.par.Targetagent = agent_path
for tool_name in common_tools: if tool_name in tool_registry.discovered_tools: tool_registry.par.Selectedtool = tool_name tool_registry.par.Assigntool.pulse()
Network Monitoring
Section titled “Network Monitoring”# Monitor network changes and update assignmentsdef monitor_network(): tool_registry = op('tool_registry')
# Store previous state prev_tools = len(tool_registry.discovered_tools) prev_agents = len(tool_registry.discovered_agents)
# Rescan network tool_registry.par.Scannetwork.pulse()
# Check for changes new_tools = len(tool_registry.discovered_tools) new_agents = len(tool_registry.discovered_agents)
if new_tools != prev_tools or new_agents != prev_agents: print(f"Network changed: {new_tools} tools, {new_agents} agents") # Trigger reassignment logic here
Assignment Features
Section titled “Assignment Features”Duplicate Detection
Section titled “Duplicate Detection”- Automatic Checking: Prevents duplicate tool assignments
- Warning System: Alerts when tool is already assigned
- Efficiency: Avoids unnecessary parameter modifications
Validation
Section titled “Validation”- Parameter Verification: Ensures agent has required Tool sequence
- Path Validation: Confirms tool and agent paths are valid
- Error Handling: Provides detailed error messages for troubleshooting
Tool Enablement
Section titled “Tool Enablement”- UseTools Check: Automatically checks if agent has tools enabled
- Warning System: Alerts when tools are assigned but not enabled
- Guidance: Provides specific instructions for enabling tools
Use Cases
Section titled “Use Cases”Multi-Agent System Setup
Section titled “Multi-Agent System Setup”- Centralized Management: Configure tools for multiple agents from one location
- Consistency: Ensure all agents have required tools
- Efficiency: Avoid manual configuration of each agent
Dynamic Tool Assignment
Section titled “Dynamic Tool Assignment”- Runtime Configuration: Assign tools based on current project needs
- Conditional Assignment: Assign different tools based on agent roles
- Scalability: Handle large numbers of agents and tools
Project Migration
Section titled “Project Migration”- Tool Discovery: Find all tools when moving between projects
- Bulk Assignment: Quickly configure agents in new environments
- Validation: Ensure all required tools are properly assigned
Development Workflow
Section titled “Development Workflow”- Rapid Prototyping: Quickly test different tool combinations
- Debugging: Verify tool assignments across complex networks
- Documentation: Generate lists of tools and their assignments
Best Practices
Section titled “Best Practices”Network Organization
Section titled “Network Organization”- Logical Grouping: Organize tools and agents in logical network sections
- Consistent Tagging: Ensure all LOP operators are properly tagged
- Path Management: Use clear, descriptive operator names and paths
Performance Optimization
Section titled “Performance Optimization”- Scope Selection: Use narrowest appropriate search scope
- Depth Limiting: Set reasonable max depth values
- Regular Scanning: Rescan only when network structure changes
Assignment Strategy
Section titled “Assignment Strategy”- Role-Based: Assign tools based on agent roles and responsibilities
- Minimal Sets: Assign only necessary tools to each agent
- Documentation: Maintain records of tool assignments and purposes
Error Handling
Section titled “Error Handling”- Validation: Always verify assignments after completion
- Monitoring: Check for assignment warnings and errors
- Recovery: Have procedures for fixing failed assignments
Troubleshooting
Section titled “Troubleshooting”Common Issues
Section titled “Common Issues”-
No Tools Found
- Verify operators have “LOP” tags
- Check that operators have
GetTool()
methods - Ensure search scope includes tool locations
-
No Agents Found
- Verify operators have “LOP” tags
- Check that operators have Tool sequence parameters
- Confirm agents are within search scope
-
Assignment Failures
- Verify agent has Tool sequence parameters
- Check for parameter naming conflicts
- Ensure agent is not bypassed or locked
-
Performance Issues
- Reduce search scope if possible
- Lower max depth setting
- Exclude unnecessary network sections
Status Messages
Section titled “Status Messages”- “Found X tools, Y agents”: Successful network scan
- “Tool already assigned”: Duplicate assignment prevented
- “Assignment failed”: Error during tool assignment
- “Warning: Use Tools disabled”: Tools assigned but not enabled
Advanced Features
Section titled “Advanced Features”Network Filtering
Section titled “Network Filtering”- Automatic Exclusion: Skips
/ui/
and/sys/
paths - Tag-Based Discovery: Uses LOP tags for efficient filtering
- Depth Control: Configurable search depth for performance
Real-time Updates
Section titled “Real-time Updates”- Dynamic Menus: Tool and agent lists update automatically
- Path Display: Shows full paths for selected items
- Status Feedback: Real-time assignment status and results
Integration Support
Section titled “Integration Support”- Extensible Design: Can be extended for custom tool types
- API Access: Discovered tools and agents available via properties
- Event Logging: Comprehensive logging for debugging and monitoring
This centralized tool management system streamlines the configuration of complex multi-agent workflows and ensures consistent tool availability across your LOPs network.