A server may need to offer an action, supply background data or request information from the user. MCP gives these interactions different interfaces.

In the [2026-07-28 specification revision](https://modelcontextprotocol.io/specification/2026-07-28/changelog), sampling and roots are deprecated. They remain available during the deprecation window, but new implementations should not adopt them.

## What does each primitive do?

Tools expose actions, resources expose data and prompts expose reusable message templates. Elicitation obtains additional user input.

The [MCP architecture guide](https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture) separates server-provided capabilities from the input a client can supply.

| Primitive            | Purpose                                              | Example                                   |
| -------------------- | ---------------------------------------------------- | ----------------------------------------- |
| Tools                | Let the client invoke a function                     | Send a message                            |
| Resources            | Supply context at a resource address                 | Retrieve a document                       |
| Prompts              | Supply reusable message templates                    | Prepare a structured request for analysis |
| Elicitation          | Ask the user for information needed by an operation  | Request a missing choice                  |
| Sampling, deprecated | Request model generation through the client          | Ask a client to generate text             |
| Roots, deprecated    | Describe filesystem locations relevant to the server | Identify a project directory              |

A server implements the interfaces its integration needs. The client must support the capabilities it uses.

## How do tools, resources and prompts differ in practice?

Choose according to whether the client needs to execute an operation, retrieve context or obtain a reusable prompt.

A hypothetical scheduling server could expose an appointment-booking tool. A resource could provide the venue's information. A prompt could prepare the messages used to compare appointment choices.

The client discovers the available [server capabilities](https://modelcontextprotocol.io/specification/2026-07-28). Discovering a booking tool does not grant permission to book. The service still authorizes the operation.

A resource supplies content without establishing that the model should follow instructions embedded in it. The host controls which server content and actions it trusts.

## What changes for sampling and roots?

For roots, the [changelog](https://modelcontextprotocol.io/specification/2026-07-28/changelog#deprecated) recommends passing files or directories through tool parameters, resource addresses or server configuration. For sampling, it recommends integrating directly with model-provider APIs.

Deprecation does not mean a feature has already been removed. Existing integrations can still encounter these interfaces during the transition.

## How does a server request more input?

A server returns an input-required result, and the client supplies the requested information when retrying the original operation.

The [2026-07-28 revision](https://modelcontextprotocol.io/specification/2026-07-28/changelog) calls this the Multi Round-Trip Requests pattern. It changes how requests for elicitation, sampling and roots are delivered. The [architecture guide](https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture) still names `elicitation/create` as the method for requesting user input.

## Which primitives do I use with Bird?

You can use [Bird's MCP tools](/docs/ai/mcp-server) to send messages and inspect their recorded outcomes.

For email, `email_send` starts the operation and `email_get` retrieves the message with its aggregate delivery status. Recipient outcomes require the corresponding recipient details. The [delivery-state answer](/explained/platform/why-is-my-message-accepted-but-not-delivered) explains why acceptance alone cannot establish delivery.

Your client's tool inventory supplies the names and input schemas for the connection you are using. A listed tool may still require permissions your grant lacks.

For instructions that connect several operations into a task, [Bird's agent skills](/docs/ai/agent-skills) provide CLI procedures. A packaged procedure and an MCP prompt are separate interfaces; one does not imply the other is available.

## Related resources

- [Send your first email](/docs/get-started/send-your-first-email) (docs)
- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)

[Get an implementation brief](/learn/workspace?topic=api-basics)
