User Interaction Model
Prompts are designed to be user-controlled, meaning they are exposed from servers to clients with the intention of the user being able to explicitly select them for use. This refers to who decides when the prompt is used, not who authors its content. Prompt content is defined by the server. Typically, prompts would be triggered through user-initiated commands in the user interface, which allows users to naturally discover and invoke available prompts. For example, as slash commands:
Capabilities
Servers that support prompts MUST declare theprompts capability during
initialization:
listChanged indicates whether the server will emit notifications when the list of
available prompts changes.
Servers that declare the prompts capability MUST respond to prompts/list requests
with the set of prompts currently available to the requesting client. This set MAY be
empty and MAY change over the lifetime of the connection (see
List Changed Notification).
Protocol Messages
Listing Prompts
To retrieve available prompts, clients send aprompts/list request. This operation
supports pagination.
Request:
Getting a Prompt
To retrieve a specific prompt, clients send aprompts/get request. Arguments may be
auto-completed through the completion API.
Request:
List Changed Notification
When the list of available prompts changes, servers that declared thelistChanged
capability SHOULD send a notification:
Message Flow
Data Types
Prompt
A prompt definition includes:name: Unique identifier for the prompttitle: Optional human-readable name of the prompt for display purposes.description: Optional human-readable descriptionicons: Optional array of icons for display in user interfacesarguments: Optional list of arguments for customization
PromptMessage
Messages in a prompt can contain:role: Either “user” or “assistant” to indicate the speakercontent: One of the following content types:
All content types in prompt messages support optional
annotations for
metadata about audience, priority, and modification times.
Text Content
Text content represents plain text messages:Image Content
Image content allows including visual information in messages:Audio Content
Audio content allows including audio information in messages:Embedded Resources
Embedded resources allow referencing server-side resources directly in messages:- A valid resource URI
- The appropriate MIME type
- Either text content or base64-encoded blob data
Error Handling
Servers SHOULD return standard JSON-RPC errors for common failure cases:- Invalid prompt name:
-32602(Invalid params) - Missing required arguments:
-32602(Invalid params) - Internal errors:
-32603(Internal error)
Implementation Considerations
- Servers SHOULD validate prompt arguments before processing
- Clients SHOULD handle pagination for large prompt lists
- Both parties SHOULD respect capability negotiation