Tool Registry
OpenMontage capabilities are exposed exclusively through Python tools discovered at runtime. The LLM coding assistant reads the registry to determine what is available, then calls tools directly. Python provides only the tool implementations and persistence; the agent supplies all orchestration logic.
BaseTool Contract
Every tool inherits from BaseTool and declares fixed metadata plus one required method.
Key declared fields include:
nameandversiontier(CORE, VOICE, ENHANCE, GENERATE, SOURCE, ANALYZE, or PUBLISH)capability(e.g.tts,video_generation,image_generation)provider(e.g.elevenlabs,fal,ffmpeg,selector)runtime(LOCAL, LOCAL_GPU, API, or HYBRID)stability(EXPERIMENTAL, BETA, or PRODUCTION)dependencies(entries such ascmd:ffmpeg,env:ELEVENLABS_API_KEY,python:torch)input_schemaandoutput_schema(JSON Schema)fallback_tools(ordered fallback list)agent_skills(Layer 3 skill references the agent must read before use)resource_profile(CPU, RAM, VRAM, disk, network)retry_policy
The required method is:
def execute(self, inputs: dict) -> ToolResult:
ToolResult carries success, data, artifacts (file paths), error, cost_usd, duration_seconds, seed, and model.
The Tool Registry
Access the singleton:
from tools.tool_registry import registry
registry.discover()
discover() walks packages to auto-register every concrete BaseTool subclass and loads .env so dependency checks see current keys. No manual registration is required.
Query Methods
Common queries:
get(name)— single tool orNoneget_by_capability("tts")— all tools for a capabilityget_by_provider("elevenlabs")get_available()— tools whose dependencies are satisfiedfind_fallback("elevenlabs_tts")— first available fallbackgpu_required_tools(),network_required_tools()
Selector Tools
Three selectors route across providers discovered in the registry:
tts_selectorimage_selectorvideo_selector
Each ranks available providers by task fit, output quality, control, reliability, cost efficiency, latency, and continuity. They respect an explicit preferred_provider when supplied and adapt input keys transparently between providers. See Provider Selection.
Diagnostic Reporting
Before any production run, inspect the live capability envelope:
python -c "
from tools.tool_registry import registry
import json
registry.discover()
print(json.dumps(registry.provider_menu_summary(), indent=2))
"
Reporting methods:
support_envelope()— full contract snapshot for every toolprovider_menu()— capability-grouped menu with availability, install instructions, and render engine statusprovider_menu_summary()— compact rollup of composition runtimes, configured vs. total capabilities, setup offers, and runtime warnings
See Preflight Diagnostics for interpreting the output.
Pipeline Integration
Pipeline manifests list tools_available per stage. The agent reads the stage-director skill, then calls tools by name from the registry. For the complete list of concrete tools, see Tool Inventory. For adding or configuring providers, see Configuring Providers.