A software component that carries out a defined task using a model, calling tools and acting on the result.