You expose read-only product documentation over MCP, and the application decides when to attach it. Which primitive fits?
Why D is the answer
A resource
Resources are read-only data that the application controls. Tools are model-controlled and suit actions.
In detail
- Resources provide read-only data, and the application decides when to use them.
- That matches documentation attached by the application.
- Tools suit actions that the model chooses. Prompts suit templates that a person chooses.
- Ask who decides when the content is used. That answer picks the primitive.
Use case
An illustrative scenario, not a real incident.
A product team exposes its documentation over MCP. The IDE attaches the page for the feature being edited, so nothing depends on the model deciding to fetch it. That makes it a resource, not a tool.
See it in different ways
flowchart LR A["Model decides"] --> B["Tool"] C["Application decides"] --> D["Resource"] E["User decides"] --> F["Prompt"]
mindmap
root((MCP primitives))
Tools
Model decides
Actions
Resources
Application decides
Read-only data
Prompts
User decides
Saved templatesflowchart TD
Q{"Who decides to use it?"}
Q -->|"The application"| A0["Resource"]
Q -->|"The model"| A1["Tool"]
Q -->|"The user"| A2["Prompt"]Key point: Resources are read-only data that the application controls.
Why the other options are wrong
- A. A sampling request sent from the server back to the client application
- Sampling is a request from a server for a model completion. It does not expose documents, and it is deprecated.
- B. A tool the model has to call before answering any product question
- A tool is controlled by the model, while here the application decides.
- C. A prompt that the user must pick from a menu at the start of each chat
- Prompts are chosen by the user, and this is data attached by the application.

