fn validate_tool_call(agent: &Agent, tool_name: &ToolName) -> Result<(), Error> {
        let agent_tools: Vec<_> = agent
            .tools
            .iter()
            .flat_map(|tools| tools.iter())
            .map(|tool| tool.as_str())
            .collect();

        if !agent_tools.contains(&tool_name.as_str())
            && *tool_name != ToolsDiscriminants::ForgeToolAttemptCompletion.name()
        {
            tracing::error!(tool_name = %tool_name, "No tool with name");

            return Err(Error::NotAllowed {
                name: tool_name.clone(),
                supported_tools: agent_tools.join(", "),
            });
        }
        Ok(())
    }
Validates if a tool is supported by both the agent and the system.

# Validation Process
Verifies the tool is supported by the agent specified in the context
crates/forge_app/src/tool_registry.rs