schema · evergreen
Tools, resources, prompts
Three things a server exposes — and the difference is who decides to use them.
A server exposes three things. The difference that matters is who decides to use them.
| Primitive | What it is | Controlled by |
|---|---|---|
| Tools | executable functions with typed input | the model |
| Resources | readable data, static or dynamic | the application |
| Prompts | templates a user can invoke | the user |
Toolsmodel-controlled — the LLM chooses to call
Resourcesapplication-controlled — read-only, the host attaches
Promptsuser-controlled — a slash command, a template
The wire methods
Discovery and use are separate calls, and each has a list side and an act side:
tools/list then tools/call, resources/list then resources/read,
prompts/list then prompts/get.
If you are unsure whether something is a tool or a resource, ask: should the model be allowed to trigger it on its own? Yes → tool. No → resource.