[{"data":1,"prerenderedAt":81},["ShallowReactive",2],{"wiki-mcp-mcp-tools-en":3},{"meta":4,"html":8,"headings":9,"words":80},{"title":5,"description":6,"published":7,"updated":7},"Tools in MCP","An MCP tool is a function a server exposes for a model to call. Definition fields, tools/list and tools/call, results, errors, names and x-mcp-header.","2026-11-03","\u003Cp>A \u003Cstrong>tool\u003C/strong> in the Model Context Protocol (MCP) is a function that a server exposes so that a language model can call it through the host: search a bug tracker, query a database, send a message, call an external API. Each tool has a unique name, a description and a JSON Schema of its input parameters. The client gets the list of tools with \u003Ccode>tools/list\u003C/code> and invokes a tool with \u003Ccode>tools/call\u003C/code>.\u003C/p>\n\u003Cp>Tools have been part of MCP since the first published version of the specification, 2024-11-05. Later revisions added annotations, structured results, icons, rules for names and caching hints. This article follows the current version of the specification, \u003Cstrong>2026-07-28\u003C/strong>. The basic concepts of the protocol (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>Kind\u003C/td>\n\u003Ctd>Server primitive\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Who decides to call\u003C/td>\n\u003Ctd>The model, under the control of the host and the user\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Methods\u003C/td>\n\u003Ctd>\u003Ccode>tools/list\u003C/code>, \u003Ccode>tools/call\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Notification\u003C/td>\n\u003Ctd>\u003Ccode>notifications/tools/list_changed\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Server capability\u003C/td>\n\u003Ctd>\u003Ccode>tools\u003C/code>, optional \u003Ccode>listChanged\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Definition fields\u003C/td>\n\u003Ctd>\u003Ccode>name\u003C/code>, \u003Ccode>title\u003C/code>, \u003Ccode>description\u003C/code>, \u003Ccode>icons\u003C/code>, \u003Ccode>inputSchema\u003C/code>, \u003Ccode>outputSchema\u003C/code>, \u003Ccode>annotations\u003C/code>, \u003Ccode>_meta\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Result fields\u003C/td>\n\u003Ctd>\u003Ccode>content\u003C/code>, \u003Ccode>structuredContent\u003C/code>, \u003Ccode>isError\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Schema dialect\u003C/td>\n\u003Ctd>JSON Schema 2020-12 by default\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>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-tools-solve\" class=\"wiki-heading\">The problem tools solve\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"the-problem-tools-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>A language model produces text. To act on the outside world it needs functions that an application executes on its behalf. Model APIs support this through function calling: the application sends descriptions of functions with a request, and the model returns a request to call one of them.\u003C/p>\n\u003Cp>Function calling does not say where the functions come from. An MCP tool moves the description to the side of the service. The server author describes the tool once, and any host that supports MCP receives the description at runtime through \u003Ccode>tools/list\u003C/code>.\u003C/p>\n\u003Cp>The specification calls tools model-controlled: the model decides when to call them, based on the context and the request of the user. The protocol does not prescribe a user interface, but recommends a human in the loop who can deny a call.\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 lists the changes to tools in each version of the specification.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Date\u003C/th>\n\u003Cth>Event\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>November 2024\u003C/td>\n\u003Ctd>First version of the specification, 2024-11-05: \u003Ccode>tools/list\u003C/code>, \u003Ccode>tools/call\u003C/code>, text, image and embedded resource results, \u003Ccode>isError\u003C/code>, \u003Ccode>notifications/tools/list_changed\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>March 2025\u003C/td>\n\u003Ctd>Specification 2025-03-26: tool annotations, audio content\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>June 2025\u003C/td>\n\u003Ctd>Specification 2025-06-18: \u003Ccode>title\u003C/code>, structured results with \u003Ccode>outputSchema\u003C/code> and \u003Ccode>structuredContent\u003C/code>, resource links in results\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>November 2025\u003C/td>\n\u003Ctd>Specification 2025-11-25: icons (SEP-973), guidance on tool names (SEP-986), input validation errors as tool execution errors (SEP-1303), JSON Schema 2020-12 as the default dialect (SEP-1613)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>28 July 2026\u003C/td>\n\u003Ctd>Specification 2026-07-28: \u003Ccode>x-mcp-header\u003C/code> (SEP-2243), caching hints (SEP-2549), deterministic order of the list, change notifications through \u003Ccode>subscriptions/listen\u003C/code>, any JSON Schema 2020-12 keywords in schemas and any JSON value in \u003Ccode>structuredContent\u003C/code> (SEP-2106)\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"tool-definition\" class=\"wiki-heading\">Tool definition\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"tool-definition\" 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>A tool definition is a JSON object. The example shows the main fields:\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;name&quot;: &quot;search_issues&quot;,\n  &quot;title&quot;: &quot;Search issues&quot;,\n  &quot;description&quot;: &quot;Search issues in the bug tracker by text and status. Use it to check for an existing issue before creating a new one. Returns at most 20 issues, newest first. Does not return comments or attachments.&quot;,\n  &quot;inputSchema&quot;: {\n    &quot;type&quot;: &quot;object&quot;,\n    &quot;properties&quot;: {\n      &quot;query&quot;: {\n        &quot;type&quot;: &quot;string&quot;,\n        &quot;description&quot;: &quot;Words to look for in the issue title and description&quot;\n      },\n      &quot;status&quot;: {\n        &quot;type&quot;: &quot;string&quot;,\n        &quot;enum&quot;: [&quot;open&quot;, &quot;in_progress&quot;, &quot;closed&quot;],\n        &quot;description&quot;: &quot;Only issues with this status. All statuses if omitted&quot;\n      }\n    },\n    &quot;required&quot;: [&quot;query&quot;],\n    &quot;additionalProperties&quot;: false\n  },\n  &quot;outputSchema&quot;: {\n    &quot;type&quot;: &quot;object&quot;,\n    &quot;properties&quot;: {\n      &quot;issues&quot;: {\n        &quot;type&quot;: &quot;array&quot;,\n        &quot;items&quot;: {\n          &quot;type&quot;: &quot;object&quot;,\n          &quot;properties&quot;: {\n            &quot;id&quot;: { &quot;type&quot;: &quot;string&quot; },\n            &quot;title&quot;: { &quot;type&quot;: &quot;string&quot; },\n            &quot;status&quot;: { &quot;type&quot;: &quot;string&quot; }\n          },\n          &quot;required&quot;: [&quot;id&quot;, &quot;title&quot;, &quot;status&quot;]\n        }\n      }\n    },\n    &quot;required&quot;: [&quot;issues&quot;]\n  },\n  &quot;annotations&quot;: {\n    &quot;readOnlyHint&quot;: true,\n    &quot;openWorldHint&quot;: false\n  },\n  &quot;icons&quot;: [\n    { &quot;src&quot;: &quot;https://tracker.example.com/icons/search.png&quot;, &quot;mimeType&quot;: &quot;image/png&quot;, &quot;sizes&quot;: [&quot;48x48&quot;] }\n  ]\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The table shows the purpose of each field in the 2026-07-28 schema.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C/th>\n\u003Cth>Required\u003C/th>\n\u003Cth>Purpose\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>name\u003C/code>\u003C/td>\n\u003Ctd>Yes\u003C/td>\n\u003Ctd>Unique identifier of the tool within the server\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>title\u003C/code>\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>Display name for people\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>description\u003C/code>\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>Text for the model: what the tool does and when to use it\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>inputSchema\u003C/code>\u003C/td>\n\u003Ctd>Yes\u003C/td>\n\u003Ctd>JSON Schema of the arguments\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>outputSchema\u003C/code>\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>JSON Schema of the structured result\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>annotations\u003C/code>\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>Hints about the behavior of the tool\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>icons\u003C/code>\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>Icons for the user interface\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>_meta\u003C/code>\u003C/td>\n\u003Ctd>No\u003C/td>\n\u003Ctd>Additional metadata, for example of extensions\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch3 id=\"name-title-and-description\" class=\"wiki-heading\">Name, title and description\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"name-title-and-description\" 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>\u003Ccode>name\u003C/code> is the identifier that the client passes in \u003Ccode>tools/call\u003C/code>. \u003Ccode>title\u003C/code> is meant for the user interface. A display name is chosen in this order: \u003Ccode>title\u003C/code>, then \u003Ccode>annotations.title\u003C/code>, then \u003Ccode>name\u003C/code>. The schema describes \u003Ccode>description\u003C/code> as a hint to the model about the purpose of the tool. The field is formally optional, but without it the model sees only the name and the schema.\u003C/p>\n\u003Ch3 id=\"input-schema\" class=\"wiki-heading\">Input schema\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"input-schema\" 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>\u003Ccode>inputSchema\u003C/code> defines the arguments of the tool. Arguments are always a JSON object, so the root of the schema has \u003Ccode>&quot;type&quot;: &quot;object&quot;\u003C/code>. Since 2026-07-28 any JSON Schema 2020-12 keyword may appear next to it, including \u003Ccode>oneOf\u003C/code>, \u003Ccode>anyOf\u003C/code>, \u003Ccode>if\u003C/code>/\u003Ccode>then\u003C/code>/\u003Ccode>else\u003C/code> and \u003Ccode>$ref\u003C/code> with \u003Ccode>$defs\u003C/code>.\u003C/p>\n\u003Cp>A schema without a \u003Ccode>$schema\u003C/code> field follows JSON Schema 2020-12; another dialect is declared in \u003Ccode>$schema\u003C/code>. The schema must be a valid object, not \u003Ccode>null\u003C/code>. For a tool without parameters the specification recommends \u003Ccode>{ &quot;type&quot;: &quot;object&quot;, &quot;additionalProperties&quot;: false }\u003C/code>, which accepts only an empty object. Implementations must not automatically dereference a \u003Ccode>$ref\u003C/code> that points to a network URI.\u003C/p>\n\u003Ch3 id=\"output-schema\" class=\"wiki-heading\">Output schema\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"output-schema\" 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>\u003Ccode>outputSchema\u003C/code> describes the structured result of the tool and can be any valid JSON Schema 2020-12, including an array schema. If a tool declares an output schema, the server must return structured results that conform to it, and the client should validate them.\u003C/p>\n\u003Ch3 id=\"annotations\" class=\"wiki-heading\">Annotations\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"annotations\" 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>Annotations describe the behavior of a tool for the client. The table lists the fields of \u003Ccode>ToolAnnotations\u003C/code> and their default values.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Field\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003Cth>Default\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>title\u003C/code>\u003C/td>\n\u003Ctd>Human-readable title\u003C/td>\n\u003Ctd>None\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>readOnlyHint\u003C/code>\u003C/td>\n\u003Ctd>The tool does not modify its environment\u003C/td>\n\u003Ctd>\u003Ccode>false\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>destructiveHint\u003C/code>\u003C/td>\n\u003Ctd>The tool may perform destructive updates; meaningful only when \u003Ccode>readOnlyHint\u003C/code> is \u003Ccode>false\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>true\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>idempotentHint\u003C/code>\u003C/td>\n\u003Ctd>Repeated calls with the same arguments have no additional effect; meaningful only when \u003Ccode>readOnlyHint\u003C/code> is \u003Ccode>false\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>false\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>openWorldHint\u003C/code>\u003C/td>\n\u003Ctd>The tool interacts with an open world of external entities, such as the web\u003C/td>\n\u003Ctd>\u003Ccode>true\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>All annotations are hints and are not guaranteed to describe the tool faithfully. Clients must treat annotations as untrusted unless they come from trusted servers.\u003C/p>\n\u003Ch3 id=\"icons-and-metadata\" class=\"wiki-heading\">Icons and metadata\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"icons-and-metadata\" 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>\u003Ccode>icons\u003C/code> is an array of icons, each with a \u003Ccode>src\u003C/code> (an HTTPS URL or a \u003Ccode>data:\u003C/code> URI) and optional \u003Ccode>mimeType\u003C/code>, \u003Ccode>sizes\u003C/code> and \u003Ccode>theme\u003C/code>. Clients that render icons must support at least PNG and JPEG.\u003C/p>\n\u003Cp>\u003Ccode>_meta\u003C/code> carries metadata outside the core fields. Extensions use it: in MCP Apps, \u003Ccode>_meta.ui.resourceUri\u003C/code> of a tool points to a \u003Ccode>ui://\u003C/code> resource with an interactive interface. Extensions are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-extensions\" class=\"wiki-link wiki-link--article\">Extensions in MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"tool-names\" class=\"wiki-heading\">Tool names\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"tool-names\" 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 gives recommendations for names (SHOULD, not MUST):\u003C/p>\n\u003Cul>\n\u003Cli>a name is 1 to 128 characters long and case-sensitive;\u003C/li>\n\u003Cli>only Latin letters \u003Ccode>A-Z\u003C/code> and \u003Ccode>a-z\u003C/code>, digits \u003Ccode>0-9\u003C/code>, \u003Ccode>_\u003C/code>, \u003Ccode>-\u003C/code> and \u003Ccode>.\u003C/code> are used, without spaces or commas;\u003C/li>\n\u003Cli>a name is unique within a server.\u003C/li>\n\u003C/ul>\n\u003Cp>Uniqueness is limited to one server. A host that connects several servers can receive two tools named \u003Ccode>search\u003C/code>. The specification recommends that such hosts and proxies disambiguate names, for example with a prefix that identifies the server. The server name from \u003Ccode>serverInfo\u003C/code> is not guaranteed to be unique and should not be used for this.\u003C/p>\n\u003Cp>The rules of model APIs can be narrower. In the Claude API a tool name must match \u003Ccode>^[a-zA-Z0-9_-]{1,128}$\u003C/code>, which does not allow a dot. The MCP specification does not define how a host converts names for the API of its model.\u003C/p>\n\u003Ch2 id=\"listing-tools\" class=\"wiki-heading\">Listing tools\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"listing-tools\" 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 client requests the list with \u003Ccode>tools/list\u003C/code>. If the result contains \u003Ccode>nextCursor\u003C/code>, the client requests the next page with this value in \u003Ccode>cursor\u003C/code>.\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;tools/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;tools&quot;: [\n      {\n        &quot;name&quot;: &quot;get_issue&quot;,\n        &quot;title&quot;: &quot;Get issue&quot;,\n        &quot;description&quot;: &quot;Get one issue by its identifier, with status, assignee and description.&quot;,\n        &quot;inputSchema&quot;: {\n          &quot;type&quot;: &quot;object&quot;,\n          &quot;properties&quot;: {\n            &quot;id&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Issue identifier, for example BUG-142&quot; }\n          },\n          &quot;required&quot;: [&quot;id&quot;]\n        },\n        &quot;annotations&quot;: { &quot;readOnlyHint&quot;: true }\n      }\n    ],\n    &quot;nextCursor&quot;: &quot;page-2&quot;,\n    &quot;ttlMs&quot;: 300000,\n    &quot;cacheScope&quot;: &quot;public&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The specification sets rules for the content of the list:\u003C/p>\n\u003Cul>\n\u003Cli>The list contains the tools currently available to the requesting client. It may be empty and may change over time.\u003C/li>\n\u003Cli>The list must not vary per connection or as a side effect of other requests.\u003C/li>\n\u003Cli>The list may vary by the authorization of the request, for example by the scopes of the token.\u003C/li>\n\u003Cli>The server should return tools in a deterministic order, which helps clients cache the list.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"calling-a-tool\" class=\"wiki-heading\">Calling a tool\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"calling-a-tool\" 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 client calls a tool with \u003Ccode>tools/call\u003C/code>, passing the name of the tool and its arguments:\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;tools/call&quot;,\n  &quot;params&quot;: {\n    &quot;name&quot;: &quot;search_issues&quot;,\n    &quot;arguments&quot;: { &quot;query&quot;: &quot;login timeout&quot;, &quot;status&quot;: &quot;open&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\u003Cp>Over \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"streamable-http\">Streamable HTTP\u003C/span> the request also carries the headers \u003Ccode>Mcp-Method: tools/call\u003C/code> and \u003Ccode>Mcp-Name: search_issues\u003C/code>. The transports are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-transports\" class=\"wiki-link wiki-link--article\">Transports in MCP\u003C/a>.\u003C/p>\n\u003Cp>The server answers with the final result (\u003Ccode>resultType: &quot;complete&quot;\u003C/code>) or with a result of type \u003Ccode>input_required\u003C/code> if it needs additional input, for example from the user. In the second case the client repeats the call with a new \u003Ccode>id\u003C/code> and the answers in \u003Ccode>inputResponses\u003C/code>. This mechanism, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mrtr\">Multi Round-Trip Requests\u003C/span> (MRTR), 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\u003Ch2 id=\"tool-results\" class=\"wiki-heading\">Tool results\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"tool-results\" 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>A result can contain unstructured content, structured content or both.\u003C/p>\n\u003Ch3 id=\"unstructured-content\" class=\"wiki-heading\">Unstructured content\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"unstructured-content\" 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>Unstructured content is the \u003Ccode>content\u003C/code> array, which can hold several items of different types. The table lists the content types of the 2026-07-28 schema.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Type\u003C/th>\n\u003Cth>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>Text\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 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 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> and optional fields of a resource\u003C/td>\n\u003Ctd>Link to a resource that the client can read\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> and \u003Ccode>text\u003C/code> or \u003Ccode>blob\u003C/code>\u003C/td>\n\u003Ctd>Contents of a resource embedded in the result\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>All content types support optional annotations: \u003Ccode>audience\u003C/code>, \u003Ccode>priority\u003C/code> and \u003Ccode>lastModified\u003C/code>. A \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"resource-link\">resource link\u003C/span> returned by a tool is not guaranteed to appear in \u003Ccode>resources/list\u003C/code>. Resources and annotations are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-resources\" class=\"wiki-link wiki-link--article\">Resources and resource templates in MCP\u003C/a>.\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;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;content&quot;: [\n      { &quot;type&quot;: &quot;text&quot;, &quot;text&quot;: &quot;Issue BUG-142 has a log file attached.&quot; },\n      {\n        &quot;type&quot;: &quot;resource_link&quot;,\n        &quot;uri&quot;: &quot;tracker://issues/BUG-142/attachments/server.log&quot;,\n        &quot;name&quot;: &quot;server.log&quot;,\n        &quot;mimeType&quot;: &quot;text/plain&quot;\n      }\n    ]\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Ch3 id=\"structured-content\" class=\"wiki-heading\">Structured content\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"structured-content\" 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>Structured content is a JSON value in the \u003Ccode>structuredContent\u003C/code> field. Since 2026-07-28 it can be any JSON value, not only an object. If the tool declares \u003Ccode>outputSchema\u003C/code>, the value must conform to it. For backward compatibility a tool that returns structured content should also return the serialized JSON in a text block.\u003C/p>\n\u003Cp>The specification notes that \u003Ccode>structuredContent\u003C/code> is unrelated to the structured outputs of models.\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;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;content&quot;: [\n      { &quot;type&quot;: &quot;text&quot;, &quot;text&quot;: &quot;{\\&quot;issues\\&quot;: [{\\&quot;id\\&quot;: \\&quot;BUG-142\\&quot;, \\&quot;title\\&quot;: \\&quot;Login times out\\&quot;, \\&quot;status\\&quot;: \\&quot;open\\&quot;}]}&quot; }\n    ],\n    &quot;structuredContent&quot;: {\n      &quot;issues&quot;: [{ &quot;id&quot;: &quot;BUG-142&quot;, &quot;title&quot;: &quot;Login times out&quot;, &quot;status&quot;: &quot;open&quot; }]\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Ch2 id=\"two-kinds-of-errors\" class=\"wiki-heading\">Two kinds of errors\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"two-kinds-of-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/h2>\n\u003Cp>Tools report errors in two ways. The table shows which errors fall into each.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Kind\u003C/th>\n\u003Cth>Examples\u003C/th>\n\u003Cth>How it is returned\u003C/th>\n\u003Cth>Passed to the model\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Protocol error\u003C/td>\n\u003Ctd>Unknown tool, request that does not match the \u003Ccode>CallToolRequest\u003C/code> schema, server failure\u003C/td>\n\u003Ctd>JSON-RPC error\u003C/td>\n\u003Ctd>The client may pass it\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Tool execution error\u003C/td>\n\u003Ctd>API failure, input validation error (date in a wrong format, value out of range), business logic error\u003C/td>\n\u003Ctd>Result with \u003Ccode>isError: true\u003C/code> and an explanation\u003C/td>\n\u003Ctd>The client should pass it\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\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;: 4,\n  &quot;error&quot;: {\n    &quot;code&quot;: -32602,\n    &quot;message&quot;: &quot;Unknown tool: search_isues&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;: 5,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;content&quot;: [\n      { &quot;type&quot;: &quot;text&quot;, &quot;text&quot;: &quot;Invalid status \\&quot;done\\&quot;. Use one of: open, in_progress, closed.&quot; }\n    ],\n    &quot;isError&quot;: true\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The difference matters because a model can correct its call only if it sees the error. Protocol errors are usually handled by the application, while tool execution errors return to the context of the model.\u003C/p>\n\u003Cp>The current classification comes from \u003Cstrong>SEP-1303\u003C/strong> (created on 5 August 2025, status Final), which entered the specification in version 2025-11-25. Before it, &quot;invalid arguments&quot; were listed among protocol errors and &quot;invalid input data&quot; among tool execution errors. SEP-1303 moved all input validation errors to tool execution errors. The 2026-07-28 schema still lists invalid tool arguments among the uses of code \u003Ccode>-32602\u003C/code>, so the schema and the tools page are not fully consistent on this point. How errors are tested is described in the article \u003Ca href=\"/en/wiki/mcp/testing-mcp-servers\" class=\"wiki-link wiki-link--article\">Testing MCP servers\u003C/a>.\u003C/p>\n\u003Ch2 id=\"state-between-calls\" class=\"wiki-heading\">State between calls\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"state-between-calls\" 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>MCP has no protocol session, so a server cannot relate calls through the connection. The specification gives non-normative guidance for tools that need state, such as a shopping cart or a database transaction. A creation tool returns an explicit handle, for example \u003Ccode>basket_id\u003C/code>, and the following tools accept it as an argument.\u003C/p>\n\u003Cp>According to the guidance, an authenticated server checks the authorization of the caller against the handle on every call. Handles are opaque, their lifetime is stated in the description of the creation tool, and a call with an expired handle returns a tool execution error that says so.\u003C/p>\n\u003Ch2 id=\"x-mcp-header\" class=\"wiki-heading\">x-mcp-header\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"x-mcp-header\" 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>\u003Cstrong>\u003Ccode>x-mcp-header\u003C/code>\u003C/strong> is an extension property inside the schema of a tool parameter. It tells the client to copy the value of the parameter into the HTTP header \u003Ccode>Mcp-Param-{name}\u003C/code> when the call goes over Streamable HTTP; the value of the property is the name part of the header. Load balancers, proxies and web application firewalls can then route requests by the parameter without parsing the body. The property was introduced in version 2026-07-28 by SEP-2243, created on 4 February 2026 by the MCP Transports Working Group.\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;name&quot;: &quot;execute_sql&quot;,\n  &quot;description&quot;: &quot;Execute SQL in the database of the given region&quot;,\n  &quot;inputSchema&quot;: {\n    &quot;type&quot;: &quot;object&quot;,\n    &quot;properties&quot;: {\n      &quot;region&quot;: {\n        &quot;type&quot;: &quot;string&quot;,\n        &quot;description&quot;: &quot;The region to execute the query in&quot;,\n        &quot;x-mcp-header&quot;: &quot;Region&quot;\n      },\n      &quot;query&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;The SQL query to execute&quot; }\n    },\n    &quot;required&quot;: [&quot;region&quot;, &quot;query&quot;]\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>A call with \u003Ccode>&quot;region&quot;: &quot;us-west1&quot;\u003C/code> gets the header \u003Ccode>Mcp-Param-Region: us-west1\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"http\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">HTTP\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>POST /mcp HTTP/1.1\nContent-Type: application/json\nMCP-Protocol-Version: 2026-07-28\nMcp-Method: tools/call\nMcp-Name: execute_sql\nMcp-Param-Region: us-west1\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>The property is optional for servers, but clients must support it. Its value is not empty, follows the token syntax of HTTP field names (RFC 9110), contains no control characters and is unique within the schema, case-insensitively. It is applied only to parameters of type \u003Ccode>string\u003C/code>, \u003Ccode>integer\u003C/code> or \u003Ccode>boolean\u003C/code>, and only to properties reachable from the root through a chain of \u003Ccode>properties\u003C/code> keys, without \u003Ccode>items\u003C/code>, composition keywords or \u003Ccode>$ref\u003C/code>.\u003C/p>\n\u003Cp>A client on Streamable HTTP excludes a tool that violates these constraints from the result of \u003Ccode>tools/list\u003C/code> and should log a warning. Clients on other transports may ignore the property. A value that cannot be sent as plain ASCII is encoded in Base64 in the form \u003Ccode>=?base64?{value}?=\u003C/code>. If the parameter is absent or \u003Ccode>null\u003C/code>, the header is omitted.\u003C/p>\n\u003Cp>A server that processes the body checks that the headers match the arguments. On a mismatch it returns HTTP 400 and JSON-RPC error \u003Ccode>-32020\u003C/code> (\u003Ccode>HeaderMismatch\u003C/code>). Header values are visible to network intermediaries, so the specification recommends against marking passwords, keys, tokens and personal data with \u003Ccode>x-mcp-header\u003C/code>.\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\u003Cp>A server that reports changes to its list declares \u003Ccode>&quot;tools&quot;: { &quot;listChanged&quot;: true }\u003C/code>. Since 2026-07-28 the notification \u003Ccode>notifications/tools/list_changed\u003C/code> reaches only clients that have opened a \u003Ccode>subscriptions/listen\u003C/code> stream with \u003Ccode>toolsListChanged: true\u003C/code>:\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;: 7,\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;toolsListChanged&quot;: true }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>After the notification the client requests \u003Ccode>tools/list\u003C/code> again. The subscription mechanism is common to all primitives and is described in the article \u003Ca href=\"/en/wiki/mcp/mcp-resources\" class=\"wiki-link wiki-link--article\">Resources and resource templates in MCP\u003C/a>.\u003C/p>\n\u003Cp>Each complete result of \u003Ccode>tools/list\u003C/code> carries two caching hints. \u003Ccode>ttlMs\u003C/code> is the time in milliseconds during which the result may be considered fresh, similar to \u003Ccode>Cache-Control: max-age\u003C/code> in HTTP. \u003Ccode>cacheScope\u003C/code> is \u003Ccode>public\u003C/code> if the result contains no user data and may be shared, including by gateways, or \u003Ccode>private\u003C/code> if it may be reused only with the same authorization, for example the same access token. A list change notification invalidates a cached list at once, even before its TTL expires. The result of \u003Ccode>tools/call\u003C/code> carries no caching hints.\u003C/p>\n\u003Ch2 id=\"how-the-description-affects-the-choice-of-a-tool\" class=\"wiki-heading\">How the description affects the choice of a tool\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"how-the-description-affects-the-choice-of-a-tool\" 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 model does not see the code of a tool. It sees what the host puts into its context: the name, the description and the input schema. For example, the Claude API builds a special system prompt from the tool definitions passed with a request. From this text the model decides whether a tool is needed, which one, and how to fill in its arguments. An inaccurate description leads to missed calls, calls of the wrong tool or wrong arguments, even when the tool works correctly.\u003C/p>\n\u003Cp>The documentation of the Claude API calls detailed descriptions by far the most important factor in tool performance. It recommends at least three or four sentences per description: what the tool does, when it should and should not be used, what each parameter means, and which information the tool does not return.\u003C/p>\n\u003Cp>The article &quot;Writing effective tools for agents&quot; (Anthropic, 11 September 2025) adds several practices:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Unambiguous parameter names\u003C/strong>, such as \u003Ccode>user_id\u003C/code> instead of \u003Ccode>user\u003C/code>.\u003C/li>\n\u003Cli>\u003Cstrong>Namespacing\u003C/strong> with common prefixes, such as \u003Ccode>asana_search\u003C/code> and \u003Ccode>jira_search\u003C/code>. According to the authors, the choice between prefixes and suffixes noticeably affects evaluation results, and the effect differs between models.\u003C/li>\n\u003Cli>\u003Cstrong>Fewer, broader tools.\u003C/strong> Tools that merely wrap existing API endpoints are described as a common error.\u003C/li>\n\u003Cli>\u003Cstrong>Meaningful results\u003C/strong>, with readable names instead of opaque identifiers and a choice of a concise or detailed response.\u003C/li>\n\u003Cli>\u003Cstrong>Limited response size\u003C/strong>, with pagination, filtering and truncation. Claude Code limits tool responses to 25,000 tokens by default.\u003C/li>\n\u003Cli>\u003Cstrong>Actionable errors\u003C/strong> that say what to change in the call, instead of opaque codes or stack traces.\u003C/li>\n\u003C/ul>\n\u003Cp>Instructions hidden in a description from an untrusted server also reach the model; this attack, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"tool-poisoning\">tool poisoning\u003C/span>, and the security requirements for tools are described in the article \u003Ca href=\"/en/wiki/mcp/mcp-security\" class=\"wiki-link wiki-link--article\">Security of MCP\u003C/a>. Whether descriptions lead models to the right calls is checked by running models on sets of tasks, as described in the article \u003Ca href=\"/en/wiki/mcp/evaluating-mcp-servers\" class=\"wiki-link wiki-link--article\">Evaluating MCP servers with models\u003C/a>. How to choose and describe tools over an existing API is covered in the article \u003Ca href=\"/en/wiki/mcp/mcp-server-for-existing-api\" class=\"wiki-link wiki-link--article\">MCP server for an existing API\u003C/a>.\u003C/p>\n\u003Ch2 id=\"mcp-tool-and-function-calling-definition\" class=\"wiki-heading\">MCP tool and function calling definition\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"mcp-tool-and-function-calling-definition\" 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>A host passes MCP tools to its model through the function calling of the model API. The table compares an MCP tool definition with a client tool definition in the Claude API, as an example of such an API.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>MCP tool\u003C/th>\n\u003Cth>Claude API client tool\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Who writes the definition\u003C/td>\n\u003Ctd>Author of the MCP server\u003C/td>\n\u003Ctd>Developer of the application\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>How it reaches the model\u003C/td>\n\u003Ctd>\u003Ccode>tools/list\u003C/code>, then the host\u003C/td>\n\u003Ctd>In each API request\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Name\u003C/td>\n\u003Ctd>Recommended 1-128 characters: letters, digits, \u003Ccode>_\u003C/code>, \u003Ccode>-\u003C/code>, \u003Ccode>.\u003C/code>\u003C/td>\n\u003Ctd>Required pattern \u003Ccode>^[a-zA-Z0-9_-]{1,128}$\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Input schema\u003C/td>\n\u003Ctd>\u003Ccode>inputSchema\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>input_schema\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Output schema\u003C/td>\n\u003Ctd>\u003Ccode>outputSchema\u003C/code>\u003C/td>\n\u003Ctd>Not among the documented fields\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Behavior hints\u003C/td>\n\u003Ctd>\u003Ccode>annotations\u003C/code>\u003C/td>\n\u003Ctd>Not among the documented fields\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Usage examples\u003C/td>\n\u003Ctd>No such field\u003C/td>\n\u003Ctd>\u003Ccode>input_examples\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Who executes the call\u003C/td>\n\u003Ctd>MCP server\u003C/td>\n\u003Ctd>Application\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The two definitions work at different levels. Function calling defines how the model asks for a call. An MCP tool definition defines how a server publishes a function so that any host can find it, show it to the user and call it.\u003C/p>\n\u003Cp>Part of the MCP definition is meant for the host rather than the model. The MCP specification does not define which of these fields a host passes to the model.\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>Tool\u003C/td>\n\u003Ctd>Function that a server exposes for the model to call through the host\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Tool annotations\u003C/td>\n\u003Ctd>Hints about the behavior of a tool, such as read-only or destructive; untrusted unless the server is trusted\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Structured content\u003C/td>\n\u003Ctd>JSON value in \u003Ccode>structuredContent\u003C/code> that conforms to the output schema of the tool\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Protocol error\u003C/td>\n\u003Ctd>JSON-RPC error: unknown tool, malformed request, server failure\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Tool execution error\u003C/td>\n\u003Ctd>Tool result with \u003Ccode>isError: true\u003C/code>: invalid input, API failure, business logic error\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>x-mcp-header\u003C/td>\n\u003Ctd>Property in a parameter schema that copies its value into the \u003Ccode>Mcp-Param-{name}\u003C/code> HTTP header\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Handle\u003C/td>\n\u003Ctd>Identifier that a tool returns and later calls accept, to keep state between calls\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Caching hints\u003C/td>\n\u003Ctd>\u003Ccode>ttlMs\u003C/code> and \u003Ccode>cacheScope\u003C/code> in cacheable results, such as lists: how long the result is fresh and who may reuse it\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/tools\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Tools, 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://github.com/modelcontextprotocol/specification/blob/main/schema/2026-07-28/schema.ts\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Schema of the specification 2026-07-28 (schema.ts), GitHub\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\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Overview: JSON Schema usage, \u003Ccode>_meta\u003C/code> and icons, 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/transports/streamable-http\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Streamable HTTP, 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/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/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes, 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/2025-11-25/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes, specification 2025-11-25\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/2025-06-18/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes, specification 2025-06-18\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/2025-03-26/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes, specification 2025-03-26\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/seps/1303-input-validation-errors-as-tool-execution-errors\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">SEP-1303: Input Validation Errors as Tool Execution Errors\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/seps/2243-http-standardization\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">SEP-2243: HTTP Header Standardization for Streamable HTTP Transport\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://platform.claude.com/docs/en/agents-and-tools/tool-use/define-tools\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Define tools, Claude API documentation, Anthropic\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://www.anthropic.com/engineering/writing-tools-for-agents\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Writing effective tools for agents, Anthropic, 11 September 2025\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,65,68,71,74,77],{"id":11,"level":12,"text":13},"overview",2,"Overview",{"id":15,"level":12,"text":16},"the-problem-tools-solve","The problem tools solve",{"id":18,"level":12,"text":19},"history","History",{"id":21,"level":12,"text":22},"tool-definition","Tool definition",{"id":24,"level":25,"text":26},"name-title-and-description",3,"Name, title and description",{"id":28,"level":25,"text":29},"input-schema","Input schema",{"id":31,"level":25,"text":32},"output-schema","Output schema",{"id":34,"level":25,"text":35},"annotations","Annotations",{"id":37,"level":25,"text":38},"icons-and-metadata","Icons and metadata",{"id":40,"level":12,"text":41},"tool-names","Tool names",{"id":43,"level":12,"text":44},"listing-tools","Listing tools",{"id":46,"level":12,"text":47},"calling-a-tool","Calling a tool",{"id":49,"level":12,"text":50},"tool-results","Tool results",{"id":52,"level":25,"text":53},"unstructured-content","Unstructured content",{"id":55,"level":25,"text":56},"structured-content","Structured content",{"id":58,"level":12,"text":59},"two-kinds-of-errors","Two kinds of errors",{"id":61,"level":12,"text":62},"state-between-calls","State between calls",{"id":64,"level":12,"text":64},"x-mcp-header",{"id":66,"level":12,"text":67},"list-changes-and-caching","List changes and caching",{"id":69,"level":12,"text":70},"how-the-description-affects-the-choice-of-a-tool","How the description affects the choice of a tool",{"id":72,"level":12,"text":73},"mcp-tool-and-function-calling-definition","MCP tool and function calling definition",{"id":75,"level":12,"text":76},"terms","Terms",{"id":78,"level":12,"text":79},"sources","Sources",2937,1793718907891]