HomeLearnCoursesHackathonsAccount
Model Context Protocol for Builders
The Three Core Primitives · 1/2

Tools and resources: action vs. context

Tools are callable functions the model can invoke to take an action or fetch dynamic information — send a message, run a query, create a ticket. Each tool exposes a name, a description, and an input schema, and the model decides whether and when to call it based on the conversation, exactly the same way tool-calling works with any provider's API. The description carries all the weight: the model never sees your implementation, only the text you wrote and the schema you defined, so an ambiguous description produces wrong or missed calls no matter how correct the underlying code is.

Resources are different in kind: they're read-only data the application can expose to give the model context, without the model needing to actively decide to call anything. A resource might be a file's contents, a database schema, or a support ticket's history — the host application can choose to attach a resource to a conversation directly, or let the user pick one, rather than routing every piece of context through a model-initiated tool call. The distinction matters because not everything the model needs to know should compete for the model's attention as a callable action; some context is better handed to it directly.