Сначала найдите ответ самого вызова
Сообщение агента «готово» не заменяет результат инструмента. Откройте подробности вызова, если клиент их показывает. Нужны параметры запроса и ответ на него. В полном сообщении JSON-RPC сопоставьте id запроса и ответа. Если интерфейс показывает только содержимое result, отсутствие внешней оболочки в этом окне ещё не означает ошибку сервера. Не публикуйте журналы с ключами и личными данными.
Ошибка в поле error: запрос не дал обычный результат
В примере ниже сервер вернул ошибку JSON-RPC с кодом −32602: неверные параметры. Это не запись из источника и не ответ «ничего не найдено». Сопоставьте переданные аргументы с описанием инструмента. Не исправляйте такую ошибку заменой ключей или повторными вызовами наугад. Все примеры в этой статье синтетические; id 7 относится к условному запросу, а не к реальному серверу каталога.
{
"jsonrpc": "2.0",
"id": 7,
"error": {
"code": -32602,
"message": "DEMO: invalid params"
}
}Есть result, но isError равен true
Следующее сообщение успешно передаёт результат вызова на уровне протокола, однако сам инструмент сообщает об ошибке выполнения. В выдуманном примере причина — временно недоступный источник. Не превращайте этот текст в «данных нет». Сохраните наблюдение об ошибке и следуйте инструкции сервера: проблема может относиться к входным значениям, внешнему сервису или правилам операции.
{
"jsonrpc": "2.0",
"id": 7,
"result": {
"content": [
{
"type": "text",
"text": "DEMO: source temporarily unavailable"
}
],
"isError": true
}
}Нет отметки об ошибке: проверьте, что означают данные
Здесь инструмент вернул демонстрационное значение и дату источника. isError: false означает, что результат не помечен как ошибка инструмента. Это не доказательство полноты корпуса, свежести сведений или правильности вывода модели. У CallToolResult признак isError необязательный; его отсутствие тоже не подтверждает качество данных. Разберите формат, который документирует конкретный сервер.
{
"jsonrpc": "2.0",
"id": 7,
"result": {
"content": [
{
"type": "text",
"text": "DEMO: value=42; source_date=2026-10-01"
}
],
"isError": false
}
}Нулевой результат требует собственного объяснения
Пустой список может означать отсутствие совпадений в проверенном наборе, фильтр, ограниченный доступ или иной предусмотренный сервером исход. По одному пустому ответу определить причину нельзя. Сопоставьте входной идентификатор, фильтры, дату и охват источника с документацией. Если сервер не различает эти состояния, так и зафиксируйте: причина пустого результата не установлена.
Соберите короткое наблюдение для следующего шага
Запишите инструмент, обезличенные параметры, время и версию протокола или клиента, если они известны. Отдельно укажите результат наблюдения: error, result с isError либо непомеченные данные. Затем добавьте, что удалось независимо сверить. Сбой одного вызова не оценивает все инструменты сервера и другие серверы каталога.
- Ошибка параметров: проверить описание входа и один конкретный аргумент.
- Ошибка выполнения: сохранить причину, указанную инструментом; не выдавать её за отсутствие данных.
- Данные без отметки об ошибке: сверить значение, дату и ограничения с первоисточником.
Граница этих примеров
Оболочки выше иллюстрируют tools/call и CallToolResult в спецификации MCP 2025-11-25. Это не инструкция по всем версиям протокола и не описание подключения любого современного сервера. Клиент может скрывать часть служебных полей, а сервер — возвращать другие предусмотренные форматы содержимого. Для контрольного запроса с заранее известным ответом используйте отдельное руководство «Первая проверка MCP без лишних прав» из раздела руководств.
Источники
Вопросы по этой странице
Нужно ли видеть JSON, чтобы пользоваться инструментом?
Нет. Если клиент показывает понятную ошибку, начните с неё. Сырые поля помогают при разборе спорного результата; их наличие в интерфейсе зависит от клиента.
Чем error отличается от isError?
В показанных сообщениях error — ошибка JSON-RPC вместо result. isError находится внутри результата tools/call и помечает ошибку самого инструмента.
Может ли успешный ответ JSON-RPC содержать ошибку инструмента?
Да. Во втором примере есть result, но внутри него isError: true. Получение такого сообщения не делает операцию успешной по смыслу.
Доказывает ли отсутствие isError правильность ответа?
Нет. Поле необязательно. Непомеченный результат всё равно нужно читать по контракту сервера и сверять с источником, если задача требует подтверждения факта.
Можно ли считать временную недоступность источника отсутствием записи?
Нет. Неудавшееся получение и проверенное отсутствие совпадений — разные состояния. В примере с недоступным источником поиск не подтверждает ни наличие, ни отсутствие записи.
Нужно ли повторять каждый неудачный вызов?
Нет. Сначала прочитайте причину и инструкцию сервера. Повтор может не исправить неверные параметры, права или правила операции; для действий записи он способен создать нежелательное повторное действие.
Что можно приложить к сообщению разработчику?
Название инструмента, обезличенные аргументы, время, известные версии и фрагмент ошибки. Уберите ключи, токены, персональные данные и содержимое других обращений.