Prompts are reusable message templates that a server exposes by name. They are user-controlled, so a person picks one and the model does not invoke it on its own.
A client lists them with prompts/list and fetches one with prompts/get, passing any declared arguments. The server returns a list of messages, each with a role and content, which the host puts into the conversation.
{
"description": "Review a diff for bugs",
"messages": [
{ "role": "user", "content": { "type": "text", "text": "Review this diff:\n..." } }
]
}
In hosts they appear as explicit user actions, such as slash commands namespaced by server in Claude Code and menu items in Claude Desktop. Message content can embed resources, so one pick pulls in files plus instructions.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓