Protocol Revision: 2024-11-05
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. 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:
However, implementors are free to expose prompts through any interface pattern that suits
their needs—the protocol itself does not mandate any specific user interaction
model.
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.
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 promptdescription: Optional human-readable descriptionarguments: 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:
Text Content
Text content represents plain text messages:Image Content
Image content allows including visual 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