Skip to main content
This page is a contributor reference for how OpenSRE shapes tool-calling during investigations. End users do not need to configure any of this — see How an investigation works and Investigations overview instead.
The investigation agent does not call integration APIs through the LLM directly. The flow is:
  1. Toolsget_registered_tools("investigation"), filtered with tool.is_available(...).
  2. Schemasllm.tool_schemas(tools) from the active provider client.
  3. Invokellm.invoke(messages, system=..., tools=tool_schemas); the model returns tool calls.
  4. Execute — Tools run locally; results append as turns for the next invoke.
  5. Seed path_build_seed_calls may inject deterministic tool runs before the loop.

Where code lives

Full reference

The complete schema normalization rules, provider-specific adapters, and message-shape tables live in the repository source file: docs/investigation-tool-calling.md When changing investigation tools or LLM adapters, read that file and run the registry contract tests described in adding tools and integrations.