[{"data":1,"prerenderedAt":76},["ShallowReactive",2],{"wiki-mcp-mcp-prompts-en":3},{"meta":4,"html":8,"headings":9,"words":75},{"title":5,"description":6,"published":7,"updated":7},"Prompts in MCP","An MCP prompt is a message template a server offers and the user invokes. prompts/list and prompts/get, arguments, completion, content types, comparison.","2026-11-03","\u003Cp>A \u003Cstrong>prompt\u003C/strong> in the Model Context Protocol (MCP) is a template of messages for a language model that a server offers and the user explicitly selects. The client discovers prompts with \u003Ccode>prompts/list\u003C/code>, fills in their arguments and receives the finished messages with \u003Ccode>prompts/get\u003C/code>. The host then adds these messages to the conversation with the model.\u003C/p>\n\u003Cp>Prompts are one of the three server primitives, together with tools and resources. They have been part of the specification since its first version, 2024-11-05. The current version of the specification is \u003Cstrong>2026-07-28\u003C/strong>; the protocol is developed under the Agentic AI Foundation, part of the Linux Foundation. The basic concepts of MCP (host, client, server, primitives) are described in the article \u003Ca href=\"/en/wiki/mcp/what-is-mcp\" class=\"wiki-link wiki-link--article\">What is MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"overview\" class=\"wiki-heading\">Overview\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"overview\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Property\u003C/th>\n\u003Cth>Value\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Type\u003C/td>\n\u003Ctd>Server primitive\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Who decides to use it\u003C/td>\n\u003Ctd>The user\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Methods\u003C/td>\n\u003Ctd>\u003Ccode>prompts/list\u003C/code>, \u003Ccode>prompts/get\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Related methods\u003C/td>\n\u003Ctd>\u003Ccode>completion/complete\u003C/code>, \u003Ccode>subscriptions/listen\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Server capability\u003C/td>\n\u003Ctd>\u003Ccode>prompts\u003C/code>, optional \u003Ccode>listChanged\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Argument values\u003C/td>\n\u003Ctd>Strings\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Result\u003C/td>\n\u003Ctd>List of messages with the roles \u003Ccode>user\u003C/code> and \u003Ccode>assistant\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>First version\u003C/td>\n\u003Ctd>2024-11-05\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Current specification\u003C/td>\n\u003Ctd>2026-07-28\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"the-problem-prompts-solve\" class=\"wiki-heading\">The problem prompts solve\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"the-problem-prompts-solve\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The author of a server knows best how its tools and data are meant to be used. The user of an AI application usually does not. Without a standard mechanism, a user writes the instructions for each task by hand, and the knowledge of how to use a server stays in its documentation.\u003C/p>\n\u003Cp>Prompts move these instructions into the server. A server author publishes ready templates for typical tasks of the domain, for example a code review or a summary of meetings. The MCP documentation describes two purposes: parameterized prompts for a domain and a demonstration of how to use the server best.\u003C/p>\n\u003Cp>Because prompts are part of the protocol, the same template works in every host that supports them. The host learns the list of prompts at runtime, shows it to the user and asks for the argument values. The server returns finished messages, so the host does not need to know how the template is built.\u003C/p>\n\u003Ch2 id=\"history\" class=\"wiki-heading\">History\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"history\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The table shows how prompts changed between versions of the specification.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Version\u003C/th>\n\u003Cth>Changes for prompts\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>2024-11-05\u003C/td>\n\u003Ctd>\u003Ccode>prompts/list\u003C/code> and \u003Ccode>prompts/get\u003C/code>, arguments, text, image and embedded resource content, list change notifications, argument completion\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2025-03-26\u003C/td>\n\u003Ctd>Audio content; the \u003Ccode>completions\u003C/code> capability for argument completion\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2025-06-18\u003C/td>\n\u003Ctd>\u003Ccode>title\u003C/code> field for display names; \u003Ccode>context\u003C/code> in completion requests; message content uses the common content type that includes resource links\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2025-11-25\u003C/td>\n\u003Ctd>\u003Ccode>icons\u003C/code> field\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>2026-07-28\u003C/td>\n\u003Ctd>Capability declared in \u003Ccode>server/discover\u003C/code>; caching hints on \u003Ccode>prompts/list\u003C/code>; notifications only through \u003Ccode>subscriptions/listen\u003C/code>; \u003Ccode>prompts/get\u003C/code> can request more input; on HTTP the prompt name is sent in the \u003Ccode>Mcp-Name\u003C/code> header\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"how-prompts-work\" class=\"wiki-heading\">How prompts work\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"how-prompts-work\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"capability\" class=\"wiki-heading\">Capability\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"capability\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>A server that offers prompts declares the \u003Ccode>prompts\u003C/code> capability in the result of \u003Ccode>server/discover\u003C/code>. The optional \u003Ccode>listChanged\u003C/code> flag says that the server sends notifications when its list of prompts changes.\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;capabilities&quot;: {\n    &quot;prompts&quot;: {\n      &quot;listChanged&quot;: true\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>A server that declares the capability must answer \u003Ccode>prompts/list\u003C/code> with the prompts currently available to the requesting client. The list may be empty and may change over time. It must not depend on the connection or on other requests sent earlier. It may depend on the authorization of the request, for example on the scopes of the token, because credentials are part of each request. A client that calls \u003Ccode>prompts/list\u003C/code> on a server without this capability gets the JSON-RPC error \u003Ccode>-32601\u003C/code> (Method not found).\u003C/p>\n\u003Ch3 id=\"listing-prompts\" class=\"wiki-heading\">Listing prompts\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"listing-prompts\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The client requests the list of prompts with \u003Ccode>prompts/list\u003C/code>. As in every request of version 2026-07-28, the \u003Ccode>_meta\u003C/code> field carries the protocol version, the identity of the client and its capabilities. The list supports pagination: if the result contains \u003Ccode>nextCursor\u003C/code>, the client passes it as \u003Ccode>cursor\u003C/code> in the next request.\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;method&quot;: &quot;prompts/list&quot;,\n  &quot;params&quot;: {\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: {}\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;prompts&quot;: [\n      {\n        &quot;name&quot;: &quot;code_review&quot;,\n        &quot;title&quot;: &quot;Request Code Review&quot;,\n        &quot;description&quot;: &quot;Asks the LLM to analyze code quality and suggest improvements&quot;,\n        &quot;arguments&quot;: [\n          { &quot;name&quot;: &quot;code&quot;, &quot;description&quot;: &quot;The code to review&quot;, &quot;required&quot;: true },\n          { &quot;name&quot;: &quot;language&quot;, &quot;description&quot;: &quot;Programming language of the code&quot; }\n        ],\n        &quot;icons&quot;: [\n          { &quot;src&quot;: &quot;https://example.com/review-icon.svg&quot;, &quot;mimeType&quot;: &quot;image/svg+xml&quot;, &quot;sizes&quot;: [&quot;any&quot;] }\n        ]\n      }\n    ],\n    &quot;ttlMs&quot;: 600000,\n    &quot;cacheScope&quot;: &quot;public&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Each prompt in the list is described by the following fields:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>name\u003C/code>\u003C/strong>: the identifier of the prompt, unique within the server. The client uses it in \u003Ccode>prompts/get\u003C/code>.\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>title\u003C/code>\u003C/strong>: an optional display name for the user interface. Without it, the host shows \u003Ccode>name\u003C/code>.\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>description\u003C/code>\u003C/strong>: an optional description of what the prompt does.\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>icons\u003C/code>\u003C/strong>: optional icons for the user interface, each with a source URI and optional MIME type, sizes and theme.\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>arguments\u003C/code>\u003C/strong>: an optional list of arguments.\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>_meta\u003C/code>\u003C/strong>: optional metadata.\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"arguments\" class=\"wiki-heading\">Arguments\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"arguments\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>A \u003Cstrong>prompt argument\u003C/strong> is a named parameter that the user fills in before the server builds the messages. An argument has a \u003Ccode>name\u003C/code>, an optional \u003Ccode>title\u003C/code>, an optional \u003Ccode>description\u003C/code> and an optional \u003Ccode>required\u003C/code> flag. An argument without \u003Ccode>required: true\u003C/code> is optional.\u003C/p>\n\u003Cp>Prompt arguments have no JSON Schema. In \u003Ccode>prompts/get\u003C/code> the client passes them as an \u003Ccode>arguments\u003C/code> object, where every value is a string. Numbers, dates and lists are also passed as strings, and the server interprets them. Tools work differently: their parameters are described by a JSON Schema in \u003Ccode>inputSchema\u003C/code>, as described in the article \u003Ca href=\"/en/wiki/mcp/mcp-tools\" class=\"wiki-link wiki-link--article\">Tools in MCP\u003C/a>.\u003C/p>\n\u003Cp>The server should validate the arguments before it builds the prompt. A missing required argument and an unknown prompt name are returned as the JSON-RPC error \u003Ccode>-32602\u003C/code> (Invalid params).\u003C/p>\n\u003Ch3 id=\"argument-completion\" class=\"wiki-heading\">Argument completion\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"argument-completion\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>\u003Cstrong>Argument completion\u003C/strong> is a mechanism through which the server suggests values for an argument while the user is typing it. It is defined by a separate utility of the specification and works for prompt arguments and for parameters of \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"resource-template\">resource templates\u003C/span>. A server that supports it declares the \u003Ccode>completions\u003C/code> capability.\u003C/p>\n\u003Cp>The client sends \u003Ccode>completion/complete\u003C/code> with a reference to the prompt (\u003Ccode>ref/prompt\u003C/code> and the name of the prompt), the name of the argument and the value typed so far. When a prompt has several arguments, the client can pass the values already chosen in \u003Ccode>context.arguments\u003C/code>, so that the server can narrow the suggestions. The examples below omit \u003Ccode>_meta\u003C/code> for brevity, as the specification does on its own pages.\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 2,\n  &quot;method&quot;: &quot;completion/complete&quot;,\n  &quot;params&quot;: {\n    &quot;ref&quot;: { &quot;type&quot;: &quot;ref/prompt&quot;, &quot;name&quot;: &quot;code_review&quot; },\n    &quot;argument&quot;: { &quot;name&quot;: &quot;language&quot;, &quot;value&quot;: &quot;py&quot; }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 2,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;completion&quot;: {\n      &quot;values&quot;: [&quot;python&quot;, &quot;pytorch&quot;, &quot;pyside&quot;],\n      &quot;total&quot;: 10,\n      &quot;hasMore&quot;: true\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The server returns at most 100 values, ranked by relevance. The optional \u003Ccode>total\u003C/code> gives the number of all matches, and \u003Ccode>hasMore\u003C/code> tells whether there are more values than the response contains. The specification recommends that servers sort suggestions by relevance and limit the rate of completion requests. Clients are expected to debounce rapid requests and to cache the results where appropriate.\u003C/p>\n\u003Ch3 id=\"getting-a-prompt\" class=\"wiki-heading\">Getting a prompt\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"getting-a-prompt\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>When the user has selected a prompt and filled in the arguments, the client sends \u003Ccode>prompts/get\u003C/code> with the name of the prompt and the values:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 3,\n  &quot;method&quot;: &quot;prompts/get&quot;,\n  &quot;params&quot;: {\n    &quot;name&quot;: &quot;code_review&quot;,\n    &quot;arguments&quot;: {\n      &quot;code&quot;: &quot;def hello():\\n    print('world')&quot;,\n      &quot;language&quot;: &quot;python&quot;\n    },\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: {}\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 3,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;description&quot;: &quot;Code review prompt&quot;,\n    &quot;messages&quot;: [\n      {\n        &quot;role&quot;: &quot;user&quot;,\n        &quot;content&quot;: {\n          &quot;type&quot;: &quot;text&quot;,\n          &quot;text&quot;: &quot;Please review this Python code:\\ndef hello():\\n    print('world')&quot;\n        }\n      }\n    ]\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The result contains an optional \u003Ccode>description\u003C/code> and the \u003Ccode>messages\u003C/code> array. On the \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"streamable-http\">Streamable HTTP\u003C/span> transport the client also sends the name of the prompt in the \u003Ccode>Mcp-Name\u003C/code> header, so that gateways can route the request without parsing the body. The headers are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-transports\" class=\"wiki-link wiki-link--article\">MCP transports\u003C/a>.\u003C/p>\n\u003Ch3 id=\"prompt-messages-and-content-types\" class=\"wiki-heading\">Prompt messages and content types\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"prompt-messages-and-content-types\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>A \u003Cstrong>prompt message\u003C/strong> is one element of the \u003Ccode>messages\u003C/code> array: a \u003Ccode>role\u003C/code> and a single \u003Ccode>content\u003C/code> block. The role is \u003Ccode>user\u003C/code> or \u003Ccode>assistant\u003C/code>. A prompt can therefore contain messages on behalf of the model as well as on behalf of the user.\u003C/p>\n\u003Cp>The content of a message uses the same content types as tool results. The table lists them.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Type\u003C/th>\n\u003Cth>Main fields\u003C/th>\n\u003Cth>What it carries\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>text\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>text\u003C/code>\u003C/td>\n\u003Ctd>Plain text, the most common case\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>image\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>data\u003C/code>, \u003Ccode>mimeType\u003C/code>\u003C/td>\n\u003Ctd>Image encoded in base64\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>audio\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>data\u003C/code>, \u003Ccode>mimeType\u003C/code>\u003C/td>\n\u003Ctd>Audio encoded in base64\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>resource_link\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>uri\u003C/code>, \u003Ccode>name\u003C/code>, \u003Ccode>mimeType\u003C/code>\u003C/td>\n\u003Ctd>Link to a resource that the client can read later\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>resource\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>resource\u003C/code> with \u003Ccode>uri\u003C/code>, \u003Ccode>mimeType\u003C/code> and \u003Ccode>text\u003C/code> or \u003Ccode>blob\u003C/code>\u003C/td>\n\u003Ctd>Contents of a resource embedded in the message\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>An \u003Cstrong>embedded resource\u003C/strong> places the contents of a server resource directly in the message: documentation, a code sample, a configuration file. A \u003Cstrong>resource link\u003C/strong> only names the resource by its URI, and the client decides whether to read it with \u003Ccode>resources/read\u003C/code>. All content types support optional annotations, for example the intended audience and priority. A response with two messages, a text instruction and an embedded file, looks like this:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 4,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;messages&quot;: [\n      {\n        &quot;role&quot;: &quot;user&quot;,\n        &quot;content&quot;: { &quot;type&quot;: &quot;text&quot;, &quot;text&quot;: &quot;Review the following file for correctness and style.&quot; }\n      },\n      {\n        &quot;role&quot;: &quot;user&quot;,\n        &quot;content&quot;: {\n          &quot;type&quot;: &quot;resource&quot;,\n          &quot;resource&quot;: {\n            &quot;uri&quot;: &quot;file:///project/src/main.rs&quot;,\n            &quot;mimeType&quot;: &quot;text/x-rust&quot;,\n            &quot;text&quot;: &quot;fn main() {\\n    println!(\\&quot;Hello\\&quot;);\\n}&quot;\n          }\n        }\n      }\n    ]\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The specification defines the format of the messages. It does not define how exactly the host inserts them into the conversation with the model.\u003C/p>\n\u003Ch3 id=\"prompts-that-need-more-input\" class=\"wiki-heading\">Prompts that need more input\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"prompts-that-need-more-input\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Since 2026-07-28 a server can answer \u003Ccode>prompts/get\u003C/code> with an \u003Ccode>InputRequiredResult\u003C/code> instead of the messages. This is the \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mrtr\">Multi Round-Trip Requests\u003C/span> (MRTR) mechanism: the server lists what it needs in \u003Ccode>inputRequests\u003C/code>, for example a question to the user through \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"elicitation\">elicitation\u003C/span>. The client collects the answers and repeats \u003Ccode>prompts/get\u003C/code> with \u003Ccode>inputResponses\u003C/code> and, if the server provided it, the unchanged \u003Ccode>requestState\u003C/code>. The mechanism is the same for tools, resources and prompts and is described in the article \u003Ca href=\"/en/wiki/mcp/stateless-mcp\" class=\"wiki-link wiki-link--article\">Stateless MCP\u003C/a>.\u003C/p>\n\u003Ch3 id=\"errors\" class=\"wiki-heading\">Errors\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"errors\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>The specification recommends standard JSON-RPC errors for prompts:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Situation\u003C/th>\n\u003Cth>Error\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Unknown prompt name\u003C/td>\n\u003Ctd>\u003Ccode>-32602\u003C/code> (Invalid params)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Missing required argument\u003C/td>\n\u003Ctd>\u003Ccode>-32602\u003C/code> (Invalid params)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Internal error of the server\u003C/td>\n\u003Ctd>\u003Ccode>-32603\u003C/code> (Internal error)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>The server did not declare \u003Ccode>prompts\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>-32601\u003C/code> (Method not found)\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"who-invokes-a-prompt\" class=\"wiki-heading\">Who invokes a prompt\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"who-invokes-a-prompt\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Prompts are \u003Cstrong>user-controlled\u003C/strong>: the server exposes them so that the user selects them explicitly. The specification states that this describes who decides when the prompt is used, not who writes its content. The content is defined by the server.\u003C/p>\n\u003Cp>The specification names slash commands as a typical example: the user types \u003Ccode>/\u003C/code> and sees the available prompts. The MCP documentation lists other patterns: a command palette with search, dedicated buttons for frequent prompts and context menus. The protocol does not prescribe any particular user interface.\u003C/p>\n\u003Cp>In Visual Studio Code, according to its documentation, a prompt of a server is used by typing \u003Ccode>/&lt;server&gt;.&lt;prompt&gt;\u003C/code> in the chat. The general sequence in a host looks like this:\u003C/p>\n\u003Col>\n\u003Cli>The host requests \u003Ccode>prompts/list\u003C/code> from the connected servers and shows the prompts to the user.\u003C/li>\n\u003Cli>The user selects a prompt. The host asks for the values of its arguments and can use \u003Ccode>completion/complete\u003C/code> for suggestions.\u003C/li>\n\u003Cli>The host sends \u003Ccode>prompts/get\u003C/code> and receives the messages.\u003C/li>\n\u003Cli>The host adds the messages to the conversation, and the model answers them. While answering, the model can call the tools of the same or other servers.\u003C/li>\n\u003C/ol>\n\u003Cp>This differs from tools, which the model selects itself, and from resources, which the application attaches to the context.\u003C/p>\n\u003Ch2 id=\"list-changes-and-caching\" class=\"wiki-heading\">List changes and caching\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"list-changes-and-caching\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"change-notifications\" class=\"wiki-heading\">Change notifications\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"change-notifications\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>A server that declared \u003Ccode>listChanged: true\u003C/code> should notify clients when its list of prompts changes. Since 2026-07-28 notifications come only to clients that asked for them. The client opens a long-lived stream with \u003Ccode>subscriptions/listen\u003C/code> and sets \u003Ccode>promptsListChanged: true\u003C/code> in the filter:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 5,\n  &quot;method&quot;: &quot;subscriptions/listen&quot;,\n  &quot;params&quot;: {\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: {}\n    },\n    &quot;notifications&quot;: { &quot;promptsListChanged&quot;: true }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The server first confirms the subscription with \u003Ccode>notifications/subscriptions/acknowledged\u003C/code>. After that, each change of the list arrives as a notification with the identifier of the subscription, which equals the \u003Ccode>id\u003C/code> of the \u003Ccode>subscriptions/listen\u003C/code> request:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Copied\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Copy\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Copied\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;method&quot;: &quot;notifications/prompts/list_changed&quot;,\n  &quot;params&quot;: {\n    &quot;_meta&quot;: { &quot;io.modelcontextprotocol/subscriptionId&quot;: 5 }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The notification carries no data about the change. The client requests \u003Ccode>prompts/list\u003C/code> again.\u003C/p>\n\u003Ch3 id=\"caching-hints\" class=\"wiki-heading\">Caching hints\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"caching-hints\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Since 2026-07-28 the result of \u003Ccode>prompts/list\u003C/code> must contain two \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"caching-hints\">caching hints\u003C/span>:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>ttlMs\u003C/code>\u003C/strong>: how many milliseconds the client may consider the result fresh. The value is a hint, not a guarantee that the list stays the same.\u003C/li>\n\u003Cli>\u003Cstrong>\u003Ccode>cacheScope\u003C/code>\u003C/strong>: who may reuse the result. \u003Ccode>public\u003C/code> means the result has no user-specific data, and shared gateways and proxies may serve it to any user. \u003Ccode>private\u003C/code> means it may be reused only within the same authorization context.\u003C/li>\n\u003C/ul>\n\u003Cp>The specification names \u003Ccode>public\u003C/code> as the appropriate value for a list of prompts that is the same for all users. A list filtered by the permissions of the user is \u003Ccode>private\u003C/code>. A change notification invalidates a cached list even if its \u003Ccode>ttlMs\u003C/code> has not expired. Each page of a paginated list is cached separately, and all pages of one list must have the same \u003Ccode>cacheScope\u003C/code>.\u003C/p>\n\u003Ch2 id=\"typical-scenarios\" class=\"wiki-heading\">Typical scenarios\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"typical-scenarios\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The specification and the MCP documentation give the following kinds of prompts:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Task templates for a domain.\u003C/strong> Examples from the documentation are a code review, planning a vacation, a summary of meetings and a draft of an email.\u003C/li>\n\u003Cli>\u003Cstrong>Demonstration of the server.\u003C/strong> A prompt shows how the server is meant to be used, so the user does not need to learn its tools first.\u003C/li>\n\u003Cli>\u003Cstrong>Prompts with context.\u003C/strong> A prompt embeds a resource or links to it, for example the file to review or the documentation of an API.\u003C/li>\n\u003Cli>\u003Cstrong>Workflows.\u003C/strong> A prompt instructs the model to combine resources and tools. In the documentation, after the &quot;Plan a vacation&quot; prompt the model reads the calendar and travel history that the user attached and then calls tools to search flights and book a hotel.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"security\" class=\"wiki-heading\">Security\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"security\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The specification requires implementations to validate all prompt inputs and outputs to prevent injection attacks and unauthorized access to resources. The text of a prompt comes from the server and goes into the context of the model, usually as messages with the role \u003Ccode>user\u003C/code>. A prompt from an untrusted server is therefore a channel for \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"prompt-injection\">prompt injection\u003C/span>: instructions that the user did not write and may not see. The attack and its testing are described in the article \u003Ca href=\"/en/wiki/ai-testing/prompt-injection\" class=\"wiki-link wiki-link--article\">Prompt injection\u003C/a>.\u003C/p>\n\u003Cp>Argument completion has its own requirements. Implementations must validate completion inputs, limit the rate of requests and control access to sensitive suggestions, so that completion does not disclose data. The general risks of MCP are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-security\" class=\"wiki-link wiki-link--article\">MCP security\u003C/a>.\u003C/p>\n\u003Ch2 id=\"prompts-tools-and-resources\" class=\"wiki-heading\">Prompts, tools and resources\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"prompts-tools-and-resources\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>The three server primitives differ in who decides to use them and what they return. The table compares them.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>Prompts\u003C/th>\n\u003Cth>Tools\u003C/th>\n\u003Cth>Resources\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Who decides to use it\u003C/td>\n\u003Ctd>The user\u003C/td>\n\u003Ctd>The model, with the permission of the host\u003C/td>\n\u003Ctd>The application\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Methods\u003C/td>\n\u003Ctd>\u003Ccode>prompts/list\u003C/code>, \u003Ccode>prompts/get\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>tools/list\u003C/code>, \u003Ccode>tools/call\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>resources/list\u003C/code>, \u003Ccode>resources/read\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Identified by\u003C/td>\n\u003Ctd>Name\u003C/td>\n\u003Ctd>Name\u003C/td>\n\u003Ctd>URI\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Parameters\u003C/td>\n\u003Ctd>Named string arguments\u003C/td>\n\u003Ctd>JSON Schema in \u003Ccode>inputSchema\u003C/code>\u003C/td>\n\u003Ctd>URI; parameters of a URI template for resource templates\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Argument completion\u003C/td>\n\u003Ctd>Yes (\u003Ccode>ref/prompt\u003C/code>)\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>For resource templates (\u003Ccode>ref/resource\u003C/code>)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Result\u003C/td>\n\u003Ctd>Messages for the conversation\u003C/td>\n\u003Ctd>Result of an action: \u003Ccode>content\u003C/code>, structured data\u003C/td>\n\u003Ctd>Contents of the resource\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Typical interface\u003C/td>\n\u003Ctd>Slash command, menu\u003C/td>\n\u003Ctd>Call chosen by the model\u003C/td>\n\u003Ctd>Attached file or data\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>A prompt does not perform an action and does not supply data on its own. It prepares the conversation: it gives the model instructions, embeds resources and can direct the model to the tools it should use. Tools are the means to act, and resources are the means to read data. They are described in the articles \u003Ca href=\"/en/wiki/mcp/mcp-tools\" class=\"wiki-link wiki-link--article\">Tools in MCP\u003C/a> and \u003Ca href=\"/en/wiki/mcp/mcp-resources\" class=\"wiki-link wiki-link--article\">Resources and resource templates\u003C/a>.\u003C/p>\n\u003Cp>The three primitives are used together. In the example of the MCP documentation, the user invokes a prompt, attaches resources and the model then calls tools of several servers. The prompt sets the task, the resources give the context and the tools perform the actions.\u003C/p>\n\u003Cp>Agent skills are also instructions for a model, but in MCP they are not built on prompts. The official Skills extension (\u003Ccode>io.modelcontextprotocol/skills\u003C/code>) serves skills through the resources primitive and adds the \u003Ccode>skills/list\u003C/code> and \u003Ccode>skills/get\u003C/code> methods. Unlike a prompt, a skill can be selected by the model or by the user. Extensions are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-extensions\" class=\"wiki-link wiki-link--article\">MCP extensions\u003C/a>.\u003C/p>\n\u003Ch2 id=\"terms\" class=\"wiki-heading\">Terms\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"terms\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Term\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Prompt\u003C/td>\n\u003Ctd>Message template that a server offers and the user selects explicitly\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Prompt argument\u003C/td>\n\u003Ctd>Named string parameter that the user fills in before the server builds the prompt\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Argument completion\u003C/td>\n\u003Ctd>Suggestions of argument values from the server through \u003Ccode>completion/complete\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Prompt message\u003C/td>\n\u003Ctd>Element of a prompt result: a role (\u003Ccode>user\u003C/code> or \u003Ccode>assistant\u003C/code>) and one content block\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Embedded resource\u003C/td>\n\u003Ctd>Content block that carries the contents of a resource inside a message\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Resource link\u003C/td>\n\u003Ctd>Content block that names a resource by its URI without its contents\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>User-controlled\u003C/td>\n\u003Ctd>Used only when the user selects it explicitly, as prompts are\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Caching hints\u003C/td>\n\u003Ctd>Fields \u003Ccode>ttlMs\u003C/code> and \u003Ccode>cacheScope\u003C/code> that tell how long and by whom a list may be reused\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"sources\" class=\"wiki-heading\">Sources\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"sources\" aria-label=\"Copy link to section\" data-copied-label=\"Link to section copied\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/server/prompts\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Prompts, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/server/utilities/completion\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Completion, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/server/utilities/caching\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Caching, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/subscriptions\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Subscriptions, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/server\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Server features overview, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes in 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/modelcontextprotocol/specification/blob/main/schema/2026-07-28/schema.ts\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">MCP schema 2026-07-28 (schema.ts)\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/docs/2026-07-28/learn/server-concepts\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Understanding MCP servers, MCP documentation\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/extensions/skills/overview\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Skills extension overview\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://code.visualstudio.com/docs/copilot/customization/mcp-servers\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Add MCP servers in VS Code, Visual Studio Code documentation\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(opens in a new tab)\u003C/span>\u003C/a>\u003C/li>\n\u003C/ul>\n",[10,14,17,20,23,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72],{"id":11,"level":12,"text":13},"overview",2,"Overview",{"id":15,"level":12,"text":16},"the-problem-prompts-solve","The problem prompts solve",{"id":18,"level":12,"text":19},"history","History",{"id":21,"level":12,"text":22},"how-prompts-work","How prompts work",{"id":24,"level":25,"text":26},"capability",3,"Capability",{"id":28,"level":25,"text":29},"listing-prompts","Listing prompts",{"id":31,"level":25,"text":32},"arguments","Arguments",{"id":34,"level":25,"text":35},"argument-completion","Argument completion",{"id":37,"level":25,"text":38},"getting-a-prompt","Getting a prompt",{"id":40,"level":25,"text":41},"prompt-messages-and-content-types","Prompt messages and content types",{"id":43,"level":25,"text":44},"prompts-that-need-more-input","Prompts that need more input",{"id":46,"level":25,"text":47},"errors","Errors",{"id":49,"level":12,"text":50},"who-invokes-a-prompt","Who invokes a prompt",{"id":52,"level":12,"text":53},"list-changes-and-caching","List changes and caching",{"id":55,"level":25,"text":56},"change-notifications","Change notifications",{"id":58,"level":25,"text":59},"caching-hints","Caching hints",{"id":61,"level":12,"text":62},"typical-scenarios","Typical scenarios",{"id":64,"level":12,"text":65},"security","Security",{"id":67,"level":12,"text":68},"prompts-tools-and-resources","Prompts, tools and resources",{"id":70,"level":12,"text":71},"terms","Terms",{"id":73,"level":12,"text":74},"sources","Sources",2528,1793718895039]