# Agent (/academy/agent)



A chatbot writes you a grocery list. An agent goes to the store.

That's the whole difference. Chat is words. An **agent** is words plus hands — tools it can actually run. Create a file. Call an [API](/academy/api). Run a [CLI](/academy/cli) command. Come back with the receipt, not a paragraph about receipts.

**Why this product has one**

You can describe a [stack](/academy/stack) in English: "Next, Hono, Postgres, Better Auth." A chat model can *talk* about that stack. An agent can run `create-hackhaton-space-stack` and leave a folder on disk.

The plugin, the MCP server, the JSON commands — those are hands. Without them, the model is a very confident intern with no keyboard.

**Tools are the line**

The line between chatbot and agent is *tool calling*. You publish a short menu: `scaffold_project`, `check_compatibility`. The model picks an item. Your code does the work. The model never gets a shell it wasn't given.

That's the same fence as an API. The menu is the safety. If "delete the repo" isn't on the menu, it cannot order it.

**It will still be wrong**

Agents hallucinate with their hands. They will invent a flag. They will pick an illegal combo. That's why this stack engine has compatibility rules — so the hands hit a wall instead of a broken project.

Treat the agent like a fast intern: give it a menu, check the work, don't hand it the master key.

**What this unlocks**

Once you see hands vs words, "just ask Cursor" stops being magic. You're either letting it talk, or you're letting it order off a window you installed.

Talk is a draft. Tools are a commit.
