An agent is a model in a loop with tools
Strip the buzzword: an agent is a language model that, instead of answering, can emit a tool call — a structured request like
{"name": "search", "args": {...}}. The runtime executes it, appends the result to the context, and calls the model again. That loop — think → call → observe → repeat — until the model decides it's done, is the entire trick. Everything else (planning, memory, sub-agents) is engineering around this loop.