Protocol Revision: draft
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:
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 prompttitle
: Optional human-readable name of the prompt for display purposes.description
: 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:
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