Building With AI
$definetool-calling--plain-english
TLDRThe line between a chatbot and an agent is tools.
A chatbot can only talk. An agent fills out a work ticket and hands it to something that does the job.
Tool calling (sometimes "function calling") is that ticket: a name, arguments, a description the model reads. It picks ds_create_project. Your code runs. The model gets structured results back — a folder, an error — not a paragraph about folders.
The model never stops being words in a box. It cannot reach through the glass and charge a card. It writes the ticket exactly: tool name, inputs, a shape a machine can run without guessing. The harness reads the ticket, hits the real API or CLI, and feeds the receipt back. That is the hinge in the loop. Decide, do, look, decide again.
The menu is the fence
You publish a short board: ds_get_schema, ds_plan_project, ds_create_project. MCP (npx create-hackhaton-space-stack@latest mcp) is a standard way to hang that board in Cursor, Claude Code, Codex. If a dish is not printed, it cannot be ordered. The model can talk about deleting the repo. It cannot order it.
Without the right tool, a clever agent will either say it cannot, or worse, pretend it did. That is how you get a "project" that is only a speech.
The plugin's skills exist to make the intern pick these tickets instead of hand-rolling a stack.
What this unlocks
Every time an agent actually did something — scaffolded the app, posted Slack, fetched rows — that was a function call underneath. Words are a draft. A ticket is a commit.
The model decides. The tools do. The ticket is the line between them.