[{"data":1,"prerenderedAt":81},["ShallowReactive",2],{"wiki-mcp-mcp-tools-ru":3},{"meta":4,"html":8,"headings":9,"words":80},{"title":5,"description":6,"published":7,"updated":7,"sourceUpdated":7},"Инструменты (tools) в MCP","Инструмент MCP - функция, которую сервер открывает модели для вызова. Поля определения, tools/list и tools/call, результаты, ошибки, имена и x-mcp-header.","2026-11-03","\u003Cp>\u003Cstrong>Инструмент (tool)\u003C/strong> в Model Context Protocol (MCP) - функция, которую сервер предоставляет, чтобы языковая модель могла вызвать её через хост: найти задачу в баг-трекере, выполнить запрос к базе данных, отправить сообщение, обратиться к внешнему API. У каждого инструмента есть уникальное имя, описание и JSON Schema входных параметров. Клиент получает список инструментов методом \u003Ccode>tools/list\u003C/code> и вызывает инструмент методом \u003Ccode>tools/call\u003C/code>.\u003C/p>\n\u003Cp>Инструменты входят в MCP с первой опубликованной версии спецификации, 2024-11-05. Последующие редакции добавили аннотации, структурированный результат, иконки, правила имён и подсказки для кеширования. Статья соответствует текущей версии спецификации, \u003Cstrong>2026-07-28\u003C/strong>. Базовые понятия протокола (хост, клиент, сервер, примитивы) описаны в статье \u003Ca href=\"/ru/wiki/mcp/what-is-mcp\" class=\"wiki-link wiki-link--article\">Что такое MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"кратко\" class=\"wiki-heading\">Кратко\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"кратко\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Параметр\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Вид\u003C/td>\n\u003Ctd>Примитив сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Кто решает вызвать\u003C/td>\n\u003Ctd>Модель, под контролем хоста и пользователя\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Методы\u003C/td>\n\u003Ctd>\u003Ccode>tools/list\u003C/code>, \u003Ccode>tools/call\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Уведомление\u003C/td>\n\u003Ctd>\u003Ccode>notifications/tools/list_changed\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Возможность сервера\u003C/td>\n\u003Ctd>\u003Ccode>tools\u003C/code>, необязательный \u003Ccode>listChanged\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Поля определения\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>Поля результата\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>Диалект схем\u003C/td>\n\u003Ctd>JSON Schema 2020-12 по умолчанию\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Спецификация\u003C/td>\n\u003Ctd>2026-07-28\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"какую-задачу-решают-инструменты\" class=\"wiki-heading\">Какую задачу решают инструменты\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"какую-задачу-решают-инструменты\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Языковая модель порождает текст. Чтобы действовать во внешнем мире, ей нужны функции, которые приложение выполняет от её имени. API моделей поддерживают это через function calling: приложение передаёт описания функций вместе с запросом, а модель возвращает запрос на вызов одной из них.\u003C/p>\n\u003Cp>Откуда берутся функции, function calling не определяет. Инструмент MCP переносит описание на сторону сервиса. Автор сервера описывает инструмент один раз, и любой хост с поддержкой MCP получает это описание во время работы через \u003Ccode>tools/list\u003C/code>.\u003C/p>\n\u003Cp>Спецификация называет инструменты управляемыми моделью (model-controlled): модель сама решает, когда их вызвать, исходя из контекста и запроса пользователя. Протокол не задаёт пользовательский интерфейс, но рекомендует участие человека, который может отклонить вызов.\u003C/p>\n\u003Ch2 id=\"история\" class=\"wiki-heading\">История\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"история\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>В таблице - изменения инструментов по версиям спецификации.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Дата\u003C/th>\n\u003Cth>Событие\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Ноябрь 2024\u003C/td>\n\u003Ctd>Первая версия спецификации, 2024-11-05: \u003Ccode>tools/list\u003C/code>, \u003Ccode>tools/call\u003C/code>, результаты с текстом, изображениями и встроенными ресурсами, \u003Ccode>isError\u003C/code>, \u003Ccode>notifications/tools/list_changed\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Март 2025\u003C/td>\n\u003Ctd>Спецификация 2025-03-26: аннотации инструментов, аудио в результатах\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Июнь 2025\u003C/td>\n\u003Ctd>Спецификация 2025-06-18: \u003Ccode>title\u003C/code>, структурированный результат с \u003Ccode>outputSchema\u003C/code> и \u003Ccode>structuredContent\u003C/code>, ссылки на ресурсы в результатах\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Ноябрь 2025\u003C/td>\n\u003Ctd>Спецификация 2025-11-25: иконки (SEP-973), рекомендации по именам инструментов (SEP-986), ошибки проверки входных данных как ошибки выполнения инструмента (SEP-1303), JSON Schema 2020-12 как диалект по умолчанию (SEP-1613)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>28 июля 2026\u003C/td>\n\u003Ctd>Спецификация 2026-07-28: \u003Ccode>x-mcp-header\u003C/code> (SEP-2243), подсказки для кеширования (SEP-2549), детерминированный порядок списка, уведомления об изменениях через \u003Ccode>subscriptions/listen\u003C/code>, любые ключевые слова JSON Schema 2020-12 в схемах и любое значение JSON в \u003Ccode>structuredContent\u003C/code> (SEP-2106)\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"определение-инструмента\" class=\"wiki-heading\">Определение инструмента\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"определение-инструмента\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Определение инструмента - объект JSON. В примере показаны основные поля:\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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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>В таблице - назначение каждого поля по схеме 2026-07-28.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Поле\u003C/th>\n\u003Cth>Обязательно\u003C/th>\n\u003Cth>Назначение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>name\u003C/code>\u003C/td>\n\u003Ctd>Да\u003C/td>\n\u003Ctd>Уникальный идентификатор инструмента в пределах сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>title\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Отображаемое имя для людей\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>description\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Текст для модели: что делает инструмент и когда его применять\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>inputSchema\u003C/code>\u003C/td>\n\u003Ctd>Да\u003C/td>\n\u003Ctd>JSON Schema аргументов\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>outputSchema\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>JSON Schema структурированного результата\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>annotations\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Подсказки о поведении инструмента\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>icons\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Иконки для пользовательского интерфейса\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>_meta\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Дополнительные метаданные, например расширений\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch3 id=\"имя-заголовок-и-описание\" class=\"wiki-heading\">Имя, заголовок и описание\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"имя-заголовок-и-описание\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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> - идентификатор, который клиент передаёт в \u003Ccode>tools/call\u003C/code>. \u003Ccode>title\u003C/code> предназначен для пользовательского интерфейса. Отображаемое имя выбирается в таком порядке: \u003Ccode>title\u003C/code>, затем \u003Ccode>annotations.title\u003C/code>, затем \u003Ccode>name\u003C/code>. Схема называет \u003Ccode>description\u003C/code> подсказкой модели о назначении инструмента. Формально поле необязательно, но без него модель видит только имя и схему.\u003C/p>\n\u003Ch3 id=\"схема-входных-параметров\" class=\"wiki-heading\">Схема входных параметров\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"схема-входных-параметров\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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> задаёт аргументы инструмента. Аргументы всегда передаются объектом JSON, поэтому в корне схемы стоит \u003Ccode>&quot;type&quot;: &quot;object&quot;\u003C/code>. С версии 2026-07-28 рядом могут быть любые ключевые слова JSON Schema 2020-12, в том числе \u003Ccode>oneOf\u003C/code>, \u003Ccode>anyOf\u003C/code>, \u003Ccode>if\u003C/code>/\u003Ccode>then\u003C/code>/\u003Ccode>else\u003C/code> и \u003Ccode>$ref\u003C/code> с \u003Ccode>$defs\u003C/code>.\u003C/p>\n\u003Cp>Схема без поля \u003Ccode>$schema\u003C/code> следует JSON Schema 2020-12; другой диалект объявляется в \u003Ccode>$schema\u003C/code>. Схема обязана быть корректным объектом, а не \u003Ccode>null\u003C/code>. Для инструмента без параметров спецификация рекомендует \u003Ccode>{ &quot;type&quot;: &quot;object&quot;, &quot;additionalProperties&quot;: false }\u003C/code>: такая схема принимает только пустой объект. Реализации не должны автоматически разыменовывать \u003Ccode>$ref\u003C/code>, который указывает на сетевой URI.\u003C/p>\n\u003Ch3 id=\"схема-результата\" class=\"wiki-heading\">Схема результата\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"схема-результата\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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> описывает структурированный результат инструмента и может быть любой корректной JSON Schema 2020-12, в том числе схемой массива. Если инструмент объявил схему результата, сервер обязан возвращать структурированные результаты, соответствующие ей, а клиенту следует их проверять.\u003C/p>\n\u003Ch3 id=\"аннотации\" class=\"wiki-heading\">Аннотации\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"аннотации\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>ToolAnnotations\u003C/code> и значения по умолчанию.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Поле\u003C/th>\n\u003Cth>Смысл\u003C/th>\n\u003Cth>По умолчанию\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>title\u003C/code>\u003C/td>\n\u003Ctd>Заголовок для человека\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>readOnlyHint\u003C/code>\u003C/td>\n\u003Ctd>Инструмент не изменяет своё окружение\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>Инструмент может выполнять разрушающие изменения; имеет смысл только при \u003Ccode>readOnlyHint\u003C/code>, равном \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>Повторный вызов с теми же аргументами не даёт дополнительного эффекта; имеет смысл только при \u003Ccode>readOnlyHint\u003C/code>, равном \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>Инструмент взаимодействует с открытым миром внешних сущностей, например с вебом\u003C/td>\n\u003Ctd>\u003Ccode>true\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Все аннотации - подсказки, и точность описания поведения они не гарантируют. Клиенты обязаны считать аннотации недоверенными, если они получены не от доверенного сервера.\u003C/p>\n\u003Ch3 id=\"иконки-и-метаданные\" class=\"wiki-heading\">Иконки и метаданные\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"иконки-и-метаданные\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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> - массив иконок. У каждой есть \u003Ccode>src\u003C/code> (адрес HTTPS или URI \u003Ccode>data:\u003C/code>) и необязательные \u003Ccode>mimeType\u003C/code>, \u003Ccode>sizes\u003C/code> и \u003Ccode>theme\u003C/code>. Клиенты, которые показывают иконки, обязаны поддерживать как минимум PNG и JPEG.\u003C/p>\n\u003Cp>\u003Ccode>_meta\u003C/code> несёт метаданные за пределами основных полей. Его используют расширения: в MCP Apps поле \u003Ccode>_meta.ui.resourceUri\u003C/code> инструмента указывает на ресурс \u003Ccode>ui://\u003C/code> с интерактивным интерфейсом. Расширения описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-extensions\" class=\"wiki-link wiki-link--article\">Расширения MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"имена-инструментов\" class=\"wiki-heading\">Имена инструментов\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"имена-инструментов\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Спецификация даёт рекомендации для имён (SHOULD, а не MUST):\u003C/p>\n\u003Cul>\n\u003Cli>длина имени - от 1 до 128 символов, регистр учитывается;\u003C/li>\n\u003Cli>используются только латинские буквы \u003Ccode>A-Z\u003C/code> и \u003Ccode>a-z\u003C/code>, цифры \u003Ccode>0-9\u003C/code>, \u003Ccode>_\u003C/code>, \u003Ccode>-\u003C/code> и \u003Ccode>.\u003C/code>, без пробелов и запятых;\u003C/li>\n\u003Cli>имя уникально в пределах сервера.\u003C/li>\n\u003C/ul>\n\u003Cp>Уникальность ограничена одним сервером. Хост, подключённый к нескольким серверам, может получить два инструмента с именем \u003Ccode>search\u003C/code>. Спецификация рекомендует таким хостам и прокси различать имена, например добавлять префикс, который обозначает сервер. Имя сервера из \u003Ccode>serverInfo\u003C/code> не обязательно уникально, и опираться на него для этого не следует.\u003C/p>\n\u003Cp>Правила API моделей бывают строже. В Claude API имя инструмента обязано соответствовать выражению \u003Ccode>^[a-zA-Z0-9_-]{1,128}$\u003C/code>, где точка не допускается. Как хост преобразует имена для API своей модели, спецификация MCP не определяет.\u003C/p>\n\u003Ch2 id=\"получение-списка-инструментов\" class=\"wiki-heading\">Получение списка инструментов\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"получение-списка-инструментов\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Клиент запрашивает список методом \u003Ccode>tools/list\u003C/code>. Если в результате есть \u003Ccode>nextCursor\u003C/code>, клиент запрашивает следующую страницу с этим значением в \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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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>Спецификация задаёт правила для содержимого списка:\u003C/p>\n\u003Cul>\n\u003Cli>В списке - инструменты, которые сейчас доступны запрашивающему клиенту. Список может быть пустым и может меняться со временем.\u003C/li>\n\u003Cli>Список не должен зависеть от соединения или меняться как побочный эффект других запросов.\u003C/li>\n\u003Cli>Список может зависеть от авторизации запроса, например от прав (scopes) токена.\u003C/li>\n\u003Cli>Серверу следует возвращать инструменты в детерминированном порядке, это помогает клиентам кешировать список.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"вызов-инструмента\" class=\"wiki-heading\">Вызов инструмента\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"вызов-инструмента\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Клиент вызывает инструмент методом \u003Ccode>tools/call\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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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>По \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"streamable-http\">Streamable HTTP\u003C/span> запрос также несёт заголовки \u003Ccode>Mcp-Method: tools/call\u003C/code> и \u003Ccode>Mcp-Name: search_issues\u003C/code>. Транспорты описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-transports\" class=\"wiki-link wiki-link--article\">Транспорты MCP\u003C/a>.\u003C/p>\n\u003Cp>Сервер отвечает окончательным результатом (\u003Ccode>resultType: &quot;complete&quot;\u003C/code>) или результатом типа \u003Ccode>input_required\u003C/code>, если ему нужны дополнительные данные, например от пользователя. Во втором случае клиент повторяет вызов с новым \u003Ccode>id\u003C/code> и ответами в \u003Ccode>inputResponses\u003C/code>. Этот механизм, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mrtr\">Multi Round-Trip Requests\u003C/span> (MRTR), описан в статье \u003Ca href=\"/ru/wiki/mcp/stateless-mcp\" class=\"wiki-link wiki-link--article\">MCP без состояния\u003C/a>.\u003C/p>\n\u003Ch2 id=\"результат-инструмента\" class=\"wiki-heading\">Результат инструмента\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"результат-инструмента\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Результат может содержать неструктурированное содержимое, структурированное или оба сразу.\u003C/p>\n\u003Ch3 id=\"неструктурированный-результат\" class=\"wiki-heading\">Неструктурированный результат\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"неструктурированный-результат\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>content\u003C/code>, в котором может быть несколько элементов разных типов. В таблице - типы содержимого по схеме 2026-07-28.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Тип\u003C/th>\n\u003Cth>Поля\u003C/th>\n\u003Cth>Что несёт\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>Текст\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>Изображение в 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>Аудио в 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> и необязательные поля ресурса\u003C/td>\n\u003Ctd>Ссылку на ресурс, который клиент может прочитать\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>resource\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>resource\u003C/code> с \u003Ccode>uri\u003C/code> и \u003Ccode>text\u003C/code> или \u003Ccode>blob\u003C/code>\u003C/td>\n\u003Ctd>Содержимое ресурса, встроенное в результат\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Все типы содержимого поддерживают необязательные аннотации: \u003Ccode>audience\u003C/code>, \u003Ccode>priority\u003C/code> и \u003Ccode>lastModified\u003C/code>. \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"resource-link\">Ссылка на ресурс\u003C/span>, которую вернул инструмент, не обязательно есть в выдаче \u003Ccode>resources/list\u003C/code>. Ресурсы и аннотации описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-resources\" class=\"wiki-link wiki-link--article\">Ресурсы и шаблоны ресурсов\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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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=\"структурированный-результат\" class=\"wiki-heading\">Структурированный результат\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"структурированный-результат\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Структурированное содержимое - значение JSON в поле \u003Ccode>structuredContent\u003C/code>. С версии 2026-07-28 это может быть любое значение JSON, а не только объект. Если инструмент объявил \u003Ccode>outputSchema\u003C/code>, значение обязано ей соответствовать. Для обратной совместимости инструменту, который возвращает структурированный результат, следует вернуть и сериализованный JSON в текстовом блоке.\u003C/p>\n\u003Cp>Спецификация уточняет, что к структурированному выводу моделей (structured outputs) поле \u003Ccode>structuredContent\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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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=\"два-вида-ошибок\" class=\"wiki-heading\">Два вида ошибок\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"два-вида-ошибок\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Инструменты сообщают об ошибках двумя способами. В таблице - какие ошибки к какому виду относятся.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Вид\u003C/th>\n\u003Cth>Примеры\u003C/th>\n\u003Cth>Как возвращается\u003C/th>\n\u003Cth>Передаётся модели\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Ошибка протокола\u003C/td>\n\u003Ctd>Неизвестный инструмент, запрос не по схеме \u003Ccode>CallToolRequest\u003C/code>, сбой сервера\u003C/td>\n\u003Ctd>Ошибка JSON-RPC\u003C/td>\n\u003Ctd>Клиент может передать\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Ошибка выполнения инструмента\u003C/td>\n\u003Ctd>Сбой API, ошибка проверки входных данных (дата в неверном формате, значение вне диапазона), ошибка бизнес-логики\u003C/td>\n\u003Ctd>Результат с \u003Ccode>isError: true\u003C/code> и пояснением\u003C/td>\n\u003Ctd>Клиенту следует передать\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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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>Разница важна, потому что модель может исправить вызов, только если видит ошибку. Ошибки протокола обычно обрабатывает приложение, а ошибки выполнения инструмента возвращаются в контекст модели.\u003C/p>\n\u003Cp>Нынешнее разделение ввёл \u003Cstrong>SEP-1303\u003C/strong> (создан 5 августа 2025, статус Final), который вошёл в спецификацию в версии 2025-11-25. До него «неверные аргументы» числились среди ошибок протокола, а «неверные входные данные» - среди ошибок выполнения инструмента. SEP-1303 отнёс все ошибки проверки входных данных к ошибкам выполнения инструмента. Схема 2026-07-28 всё ещё называет неверные аргументы инструмента среди случаев кода \u003Ccode>-32602\u003C/code>, так что схема и страница об инструментах в этом месте расходятся. Как проверять ошибки в тестах, описано в статье \u003Ca href=\"/ru/wiki/mcp/testing-mcp-servers\" class=\"wiki-link wiki-link--article\">Тестирование MCP-серверов\u003C/a>.\u003C/p>\n\u003Ch2 id=\"состояние-между-вызовами\" class=\"wiki-heading\">Состояние между вызовами\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"состояние-между-вызовами\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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 нет, поэтому сервер не может связать вызовы через соединение. Спецификация даёт ненормативные рекомендации для инструментов, которым нужно состояние, например корзина покупок или транзакция в базе данных. Инструмент создания возвращает явный идентификатор, например \u003Ccode>basket_id\u003C/code>, а следующие инструменты принимают его аргументом.\u003C/p>\n\u003Cp>Согласно рекомендациям, сервер с аутентификацией при каждом вызове проверяет права вызывающего на этот идентификатор. Идентификаторы непрозрачны, срок их жизни указан в описании инструмента создания, а вызов с истёкшим идентификатором возвращает ошибку выполнения инструмента, которая прямо об этом говорит.\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=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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> - свойство-расширение внутри схемы параметра инструмента. Оно сообщает клиенту, что значение параметра нужно скопировать в HTTP-заголовок \u003Ccode>Mcp-Param-{name}\u003C/code>, когда вызов идёт по Streamable HTTP; значение свойства - часть имени заголовка. Балансировщики нагрузки, прокси и межсетевые экраны веб-приложений могут маршрутизировать запросы по этому параметру, не разбирая тело. Свойство появилось в версии 2026-07-28 по SEP-2243, который 4 февраля 2026 года создала рабочая группа MCP по транспортам (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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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>Вызов с \u003Ccode>&quot;region&quot;: &quot;us-west1&quot;\u003C/code> получает заголовок \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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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>Для серверов свойство необязательно, а клиенты обязаны его поддерживать. Значение свойства не пустое, соответствует синтаксису имён полей HTTP (RFC 9110), не содержит управляющих символов и уникально в пределах схемы без учёта регистра. Свойство применяется только к параметрам типов \u003Ccode>string\u003C/code>, \u003Ccode>integer\u003C/code> или \u003Ccode>boolean\u003C/code> и только к свойствам, достижимым от корня по цепочке ключей \u003Ccode>properties\u003C/code>, без \u003Ccode>items\u003C/code>, ключевых слов композиции и \u003Ccode>$ref\u003C/code>.\u003C/p>\n\u003Cp>Клиент на Streamable HTTP исключает инструмент, нарушающий эти ограничения, из результата \u003Ccode>tools/list\u003C/code> и записывает предупреждение в журнал. Клиенты на других транспортах могут свойство игнорировать. Значение, которое нельзя передать как обычный ASCII, кодируется в Base64 в виде \u003Ccode>=?base64?{value}?=\u003C/code>. Если параметра нет в аргументах или он равен \u003Ccode>null\u003C/code>, заголовок не передаётся.\u003C/p>\n\u003Cp>Сервер, который обрабатывает тело запроса, проверяет, что заголовки совпадают с аргументами. При расхождении он возвращает HTTP 400 и ошибку JSON-RPC \u003Ccode>-32020\u003C/code> (\u003Ccode>HeaderMismatch\u003C/code>). Значения заголовков видны сетевым посредникам, поэтому спецификация не рекомендует помечать \u003Ccode>x-mcp-header\u003C/code> пароли, ключи, токены и персональные данные.\u003C/p>\n\u003Ch2 id=\"изменения-списка-и-кеширование\" class=\"wiki-heading\">Изменения списка и кеширование\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"изменения-списка-и-кеширование\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Сервер, который сообщает об изменениях своего списка, объявляет \u003Ccode>&quot;tools&quot;: { &quot;listChanged&quot;: true }\u003C/code>. С версии 2026-07-28 уведомление \u003Ccode>notifications/tools/list_changed\u003C/code> получают только клиенты, открывшие поток \u003Ccode>subscriptions/listen\u003C/code> с \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=\"Скопировано\">\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\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\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>Получив уведомление, клиент заново запрашивает \u003Ccode>tools/list\u003C/code>. Механизм подписок общий для всех примитивов и подробнее описан в статье \u003Ca href=\"/ru/wiki/mcp/mcp-resources\" class=\"wiki-link wiki-link--article\">Ресурсы и шаблоны ресурсов\u003C/a>.\u003C/p>\n\u003Cp>Каждый окончательный результат \u003Ccode>tools/list\u003C/code> несёт две подсказки для кеширования. \u003Ccode>ttlMs\u003C/code> - время в миллисекундах, в течение которого результат можно считать актуальным, по смыслу близкое к \u003Ccode>Cache-Control: max-age\u003C/code> в HTTP. \u003Ccode>cacheScope\u003C/code> равен \u003Ccode>public\u003C/code>, если в результате нет пользовательских данных и его можно использовать совместно, в том числе шлюзам, или \u003Ccode>private\u003C/code>, если повторно использовать его можно только при той же авторизации, например с тем же токеном доступа. Уведомление об изменении списка сразу делает закешированный список устаревшим, даже если TTL ещё не истёк. Результат \u003Ccode>tools/call\u003C/code> подсказок для кеширования не несёт.\u003C/p>\n\u003Ch2 id=\"как-описание-влияет-на-выбор-инструмента\" class=\"wiki-heading\">Как описание влияет на выбор инструмента\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"как-описание-влияет-на-выбор-инструмента\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Модель не видит код инструмента. Она видит то, что хост поместил в её контекст: имя, описание и схему входных параметров. Например, Claude API строит из определений инструментов, переданных с запросом, специальный системный промпт. По этому тексту модель решает, нужен ли инструмент, какой именно и как заполнить аргументы. Неточное описание приводит к пропущенным вызовам, вызовам не того инструмента или неверным аргументам, даже когда сам инструмент работает правильно.\u003C/p>\n\u003Cp>Документация Claude API называет подробные описания самым важным фактором качества работы с инструментами. Она рекомендует не меньше трёх-четырёх предложений на описание: что делает инструмент, когда его применять и когда нет, что означает каждый параметр, какую информацию инструмент не возвращает.\u003C/p>\n\u003Cp>Статья «Writing effective tools for agents» (Anthropic, 11 сентября 2025) добавляет несколько практик:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Однозначные имена параметров\u003C/strong>, например \u003Ccode>user_id\u003C/code> вместо \u003Ccode>user\u003C/code>.\u003C/li>\n\u003Cli>\u003Cstrong>Пространства имён\u003C/strong> с общими префиксами, например \u003Ccode>asana_search\u003C/code> и \u003Ccode>jira_search\u003C/code>. По данным авторов, выбор между префиксами и суффиксами заметно влияет на результаты оценки, причём по-разному для разных моделей.\u003C/li>\n\u003Cli>\u003Cstrong>Меньше инструментов, но шире.\u003C/strong> Инструменты, которые просто оборачивают существующие эндпоинты API, авторы называют частой ошибкой.\u003C/li>\n\u003Cli>\u003Cstrong>Осмысленные результаты\u003C/strong>: читаемые имена вместо непрозрачных идентификаторов и выбор между кратким и подробным ответом.\u003C/li>\n\u003Cli>\u003Cstrong>Ограниченный размер ответа\u003C/strong>: постраничная выдача, фильтры и усечение. Claude Code по умолчанию ограничивает ответы инструментов 25 000 токенов.\u003C/li>\n\u003Cli>\u003Cstrong>Понятные ошибки\u003C/strong>, которые говорят, что изменить в вызове, вместо непрозрачных кодов и трассировок стека.\u003C/li>\n\u003C/ul>\n\u003Cp>Инструкции, скрытые в описании от недоверенного сервера, тоже доходят до модели; эта атака, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"tool-poisoning\">отравление инструментов\u003C/span> (tool poisoning), и требования безопасности к инструментам описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-security\" class=\"wiki-link wiki-link--article\">Безопасность MCP\u003C/a>. Приводят ли описания модели к правильным вызовам, проверяют прогонами моделей на наборах задач, как описано в статье \u003Ca href=\"/ru/wiki/mcp/evaluating-mcp-servers\" class=\"wiki-link wiki-link--article\">Оценка MCP-сервера на моделях\u003C/a>. Как выбирать и описывать инструменты поверх существующего API, разобрано в статье \u003Ca href=\"/ru/wiki/mcp/mcp-server-for-existing-api\" class=\"wiki-link wiki-link--article\">MCP поверх существующего API\u003C/a>.\u003C/p>\n\u003Ch2 id=\"инструмент-mcp-и-определение-функции-для-function-calling\" class=\"wiki-heading\">Инструмент MCP и определение функции для function calling\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"инструмент-mcp-и-определение-функции-для-function-calling\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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 своей модели через function calling её API. В таблице определение инструмента MCP сравнивается с определением клиентского инструмента в Claude API как примером такого API.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>Инструмент MCP\u003C/th>\n\u003Cth>Клиентский инструмент Claude API\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Кто пишет определение\u003C/td>\n\u003Ctd>Автор MCP-сервера\u003C/td>\n\u003Ctd>Разработчик приложения\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Как попадает к модели\u003C/td>\n\u003Ctd>\u003Ccode>tools/list\u003C/code>, затем хост\u003C/td>\n\u003Ctd>В каждом запросе к API\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Имя\u003C/td>\n\u003Ctd>Рекомендуется 1-128 символов: буквы, цифры, \u003Ccode>_\u003C/code>, \u003Ccode>-\u003C/code>, \u003Ccode>.\u003C/code>\u003C/td>\n\u003Ctd>Обязательный шаблон \u003Ccode>^[a-zA-Z0-9_-]{1,128}$\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Схема входных параметров\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>Схема результата\u003C/td>\n\u003Ctd>\u003Ccode>outputSchema\u003C/code>\u003C/td>\n\u003Ctd>Нет среди описанных полей\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Подсказки о поведении\u003C/td>\n\u003Ctd>\u003Ccode>annotations\u003C/code>\u003C/td>\n\u003Ctd>Нет среди описанных полей\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Примеры использования\u003C/td>\n\u003Ctd>Такого поля нет\u003C/td>\n\u003Ctd>\u003Ccode>input_examples\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Кто выполняет вызов\u003C/td>\n\u003Ctd>MCP-сервер\u003C/td>\n\u003Ctd>Приложение\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Два определения работают на разных уровнях. Function calling определяет, как модель просит о вызове. Определение инструмента MCP определяет, как сервер публикует функцию, чтобы любой хост мог её найти, показать пользователю и вызвать.\u003C/p>\n\u003Cp>Часть определения MCP предназначена хосту, а не модели. Какие из этих полей хост передаёт модели, спецификация MCP не определяет.\u003C/p>\n\u003Ch2 id=\"термины\" class=\"wiki-heading\">Термины\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"термины\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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>Термин\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Инструмент\u003C/td>\n\u003Ctd>Функция, которую сервер предоставляет модели для вызова через хост\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Аннотации инструмента\u003C/td>\n\u003Ctd>Подсказки о поведении инструмента, например только чтение или разрушающие изменения; недоверенные, если сервер не доверенный\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Структурированный результат\u003C/td>\n\u003Ctd>Значение JSON в \u003Ccode>structuredContent\u003C/code>, соответствующее схеме результата инструмента\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Ошибка протокола\u003C/td>\n\u003Ctd>Ошибка JSON-RPC: неизвестный инструмент, некорректный запрос, сбой сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Ошибка выполнения инструмента\u003C/td>\n\u003Ctd>Результат инструмента с \u003Ccode>isError: true\u003C/code>: неверные входные данные, сбой API, ошибка бизнес-логики\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>x-mcp-header\u003C/td>\n\u003Ctd>Свойство в схеме параметра, которое копирует его значение в HTTP-заголовок \u003Ccode>Mcp-Param-{name}\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Идентификатор состояния\u003C/td>\n\u003Ctd>Идентификатор, который возвращает инструмент и принимают следующие вызовы, чтобы сохранить состояние между ними\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Подсказки для кеширования\u003C/td>\n\u003Ctd>Поля \u003Ccode>ttlMs\u003C/code> и \u003Ccode>cacheScope\u003C/code> в кешируемых результатах, например списков: сколько результат актуален и кто может использовать его повторно\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"источники\" class=\"wiki-heading\">Источники\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"источники\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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\">(откроется в новой вкладке)\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},"кратко",2,"Кратко",{"id":15,"level":12,"text":16},"какую-задачу-решают-инструменты","Какую задачу решают инструменты",{"id":18,"level":12,"text":19},"история","История",{"id":21,"level":12,"text":22},"определение-инструмента","Определение инструмента",{"id":24,"level":25,"text":26},"имя-заголовок-и-описание",3,"Имя, заголовок и описание",{"id":28,"level":25,"text":29},"схема-входных-параметров","Схема входных параметров",{"id":31,"level":25,"text":32},"схема-результата","Схема результата",{"id":34,"level":25,"text":35},"аннотации","Аннотации",{"id":37,"level":25,"text":38},"иконки-и-метаданные","Иконки и метаданные",{"id":40,"level":12,"text":41},"имена-инструментов","Имена инструментов",{"id":43,"level":12,"text":44},"получение-списка-инструментов","Получение списка инструментов",{"id":46,"level":12,"text":47},"вызов-инструмента","Вызов инструмента",{"id":49,"level":12,"text":50},"результат-инструмента","Результат инструмента",{"id":52,"level":25,"text":53},"неструктурированный-результат","Неструктурированный результат",{"id":55,"level":25,"text":56},"структурированный-результат","Структурированный результат",{"id":58,"level":12,"text":59},"два-вида-ошибок","Два вида ошибок",{"id":61,"level":12,"text":62},"состояние-между-вызовами","Состояние между вызовами",{"id":64,"level":12,"text":64},"x-mcp-header",{"id":66,"level":12,"text":67},"изменения-списка-и-кеширование","Изменения списка и кеширование",{"id":69,"level":12,"text":70},"как-описание-влияет-на-выбор-инструмента","Как описание влияет на выбор инструмента",{"id":72,"level":12,"text":73},"инструмент-mcp-и-определение-функции-для-function-calling","Инструмент MCP и определение функции для function calling",{"id":75,"level":12,"text":76},"термины","Термины",{"id":78,"level":12,"text":79},"источники","Источники",2485,1793718888618]