pub async fn tool_agents(&self) -> anyhow::Result<Vec<ToolDefinition>> {
        if let Some(tool_agents) = self.tool_agents.read().await.clone() {
            return Ok(tool_agents);
        }
        let workflow = self.services.workflow_service().read_merged(None).await?;

        let agents: Vec<ToolDefinition> = workflow.agents.into_iter().map(Into::into).collect();
        *self.tool_agents.write().await = Some(agents.clone());
        Ok(agents)
    }
Returns a list of tool definitions for all available agents.
crates/forge_app/src/agent_executor.rs