MultiToolsManager
The MultiToolsManager class manages multiple tool registrations and lookups.
Description
MultiToolsManager provides a registry of tools keyed by function name, with support for enabling/disabling tools and conditional activation via enable_if. ToolsManager is the singleton subclass used by default.
Methods
has_tool(name: str) -> bool: Whether a tool is registered and not disabledget_tool(name: str, default=None) -> ToolData | None: Get a tool by name; returnsdefaultif missing or disabledget_tool_meta(name: str, default=None) -> ToolFunctionSchema | None: Get a tool's metadata schemaget_tool_func(name: str, default=None): Get a tool's implementation functionget_tools() -> dict[str, ToolData]: All enabled toolstools_meta() -> dict[str, ToolFunctionSchema]: Metadata of all enabled toolstools_meta_dict(**kwargs) -> dict[str, dict]: Metadata dumped to dicts (kwargs forwarded tomodel_dump)register_tool(tool: ToolData) -> None: Register a tool; raisesValueErrorif the name already existsremove_tool(name: str) -> None: Unregister a toolenable_tool(name: str) -> None: Re-enable a disabled tooldisable_tool(name: str) -> None: Disable a tool; raisesValueErrorif it does not existget_disabled_tools() -> list[str]: Names of disabled tools
Example
python
from amrita_core.tools.manager import MultiToolsManager
manager = MultiToolsManager()
manager.register_tool(my_tool_data)
assert manager.has_tool("my_tool")
func = manager.get_tool_func("my_tool")