Currently Templates only collect Tools from their enclosing scope, i.e. if a Tool or an Agent is passed as an argument to a Template then it is not included in the list of tools passed to the underlying LLM API. However, there's no reason to treat this case differently; arguments are simply another layer in the lexical scope of the body of the Template.