Skip to content

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.

  • 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
  • Tool Assignment: Automatically configures agent Tool parameters
  • Discovery Results: Lists of available tools and agents
  • Status Information: Assignment results and error reporting
Status (Status) op('tool_registry').par.Status str

Current status and operation results

Default:
None
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

Default:
None
Select Tool (Selectedtool) op('tool_registry').par.Selectedtool menu

List of discovered LOP operators that have a callable GetTool method

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

Full network path of the currently selected tool operator

Default:
None
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

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

Full network path of the currently selected agent operator

Default:
None
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)

Default:
None
Search Scope (Searchscope) op('tool_registry').par.Searchscope menu

Controls the network scope for scanning

Default:
current_level
Max Search Depth (Maxdepth) op('tool_registry').par.Maxdepth int

Maximum depth to search within the selected scope

Default:
0
Bypass (Bypass) op('tool_registry').par.Bypass toggle

Bypass the operator

Default:
false
Show Built-in Parameters (Showbuiltin) op('tool_registry').par.Showbuiltin toggle

Show built-in TouchDesigner parameters

Default:
false
Version (Version) op('tool_registry').par.Version str

Current version of the operator

Default:
None
Last Updated (Lastupdated) op('tool_registry').par.Lastupdated str

Date of last update

Default:
None
Creator (Creator) op('tool_registry').par.Creator str

Operator creator

Default:
None
Website (Website) op('tool_registry').par.Website str

Related website or documentation

Default:
None
ChatTD Operator (Chattd) op('tool_registry').par.Chattd op

Reference to the ChatTD operator for configuration

Default:
None

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

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
  • 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
  • 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
  • Scope: Complete TouchDesigner project
  • Performance: Slowest but most comprehensive
  • Use Case: Global tool management across entire project
  • Recommended: For complex multi-level projects
  1. Network Scan: Click “Scan Network” to discover available tools and agents
  2. Select Tool: Choose a tool from the “Select Tool” dropdown
  3. Select Agent: Choose an agent from the “Select Target Agent” dropdown
  4. Assign Tool: Click “Assign Tool to Agent” to complete the assignment
  5. Verify: Check the agent’s Tool parameters to confirm assignment
  • 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
# Assign multiple tools to an agent
tool_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()
# Set up tool registry for project-wide management
tool_registry = op('tool_registry')
# Configure for comprehensive discovery
tool_registry.par.Searchscope = 'root_level'
tool_registry.par.Maxdepth = 3
# Scan and discover all tools
tool_registry.par.Scannetwork.pulse()
# Get discovered tools and agents
tools = tool_registry.discovered_tools
agents = tool_registry.discovered_agents
# Automatically assign common tools to all agents
common_tools = ['file_in', 'file_out', 'search']
tool_registry = op('tool_registry')
# Scan network first
tool_registry.par.Scannetwork.pulse()
# Get all discovered agents
agents = tool_registry.discovered_agents
# Assign common tools to each agent
for 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()
# Monitor network changes and update assignments
def 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
  • Automatic Checking: Prevents duplicate tool assignments
  • Warning System: Alerts when tool is already assigned
  • Efficiency: Avoids unnecessary parameter modifications
  • 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
  • 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
  • Centralized Management: Configure tools for multiple agents from one location
  • Consistency: Ensure all agents have required tools
  • Efficiency: Avoid manual configuration of each agent
  • 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
  • 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
  • Rapid Prototyping: Quickly test different tool combinations
  • Debugging: Verify tool assignments across complex networks
  • Documentation: Generate lists of tools and their assignments
  • 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
  • Scope Selection: Use narrowest appropriate search scope
  • Depth Limiting: Set reasonable max depth values
  • Regular Scanning: Rescan only when network structure changes
  • 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
  • Validation: Always verify assignments after completion
  • Monitoring: Check for assignment warnings and errors
  • Recovery: Have procedures for fixing failed assignments
  1. No Tools Found

    • Verify operators have “LOP” tags
    • Check that operators have GetTool() methods
    • Ensure search scope includes tool locations
  2. No Agents Found

    • Verify operators have “LOP” tags
    • Check that operators have Tool sequence parameters
    • Confirm agents are within search scope
  3. Assignment Failures

    • Verify agent has Tool sequence parameters
    • Check for parameter naming conflicts
    • Ensure agent is not bypassed or locked
  4. Performance Issues

    • Reduce search scope if possible
    • Lower max depth setting
    • Exclude unnecessary network sections
  • “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
  • Automatic Exclusion: Skips /ui/ and /sys/ paths
  • Tag-Based Discovery: Uses LOP tags for efficient filtering
  • Depth Control: Configurable search depth for performance
  • Dynamic Menus: Tool and agent lists update automatically
  • Path Display: Shows full paths for selected items
  • Status Feedback: Real-time assignment status and results
  • 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.