The distinction that matters is between producing output and producing change. A chatbot given the same question returns a paragraph explaining a refund policy. An agent checks the order, applies the policy, issues the refund, updates the CRM and closes the ticket. The presence of a language model is not what makes something an agent — the ability to act on external systems is.
That capability is also what makes agents harder to build. When a chatbot is wrong, a user reads a bad paragraph. When an agent is wrong, money moves or records change. Production agents therefore carry machinery chatbots do not need: permission-scoped tools, spend and iteration limits enforced outside the model, approval gates on irreversible actions, and complete traces of every decision.
Goal-directed
Given an objective rather than a single question, and decides its own steps toward it.
Tool-using
Calls APIs, databases, email and internal services — the mechanism by which it changes state.
Iterative
Loops: act, observe the result, decide again, while tracking what it has already tried.
Bounded
Constrained by limits enforced server-side, with an explicit path to escalate when uncertain.
Codazz builds this in production — AI Agent Development.