
Полная версия:
Model Context Protocol: Полное руководство
Первичная причина
Когда команда обсуждает «заявлен, но не реализован», полезно сразу положить на стол учебный якорь: иллюстративный mesh-контур awg-класса, ориентир канарейка на 5% трафика, дата 19 марта 2026. Без якоря спор уходит в вкусовщину стека.
Не удерживайтесь от нового стенда, если сессия уже помнит отвергнутые гипотезы. Перенос freeze-фактов (канарейка на 5% трафика, 19 марта 2026, список не-целей) в чистый дамп дешевле спора с памятью чата.
Изменение правила, а не только hotfix
Про «декоратор vs ручной список» нельзя сказать одной формулой. На практике инженер канареечного деплоя держит в голове срок 19 марта 2026, а протокол — лишь транспорт примитивов. Расхождение и есть источник типового сбоя: upstream 403 при «зелёном» MCP handshake.
Имеет смысл явно назвать владельца выбора по рычагу «липкая SSE-сессия/простота горизонтального scale». Без имени ответственность растворяется, а следующий деплой снова качает рычаг в сторону удобства без проверки.
Короткий контрольный вопрос для угла «декоратор vs ручной список»: что сломается, если ошибётся один параметр, связанный с канарейка на 5% трафика? Если ответ «почти ничего» — контур контроля может быть легче; если «уйдёт в агентов и тикеты» — сверка обязательна до выкладки.
Про угол: тесты как страховка каталога
Про «тесты как страховка каталога» нельзя сказать одной формулой. На практике инженер канареечного деплоя держит в голове срок 19 марта 2026, а протокол — лишь транспорт примитивов. Расхождение и есть источник типового сбоя: upstream 403 при «зелёном» MCP handshake.
Рабочий приём: до изменения инженер канареечного деплоя собирает карточку из пяти-семи строк — цель, контур, проверенные факты, не-цели, способ проверки. Для сюжета с иллюстративный mesh-контур awg-класса в карточку входят канарейка на 5% трафика и 19 марта 2026 как freeze. Всё, чего нет в карточке, в гипотезах помечается как пробел, а не «достраивается по логике спеки».
Применительно к якорю главы (иллюстративный mesh-контур awg-класса, 19 марта 2026): граница «протокол ≠ система» — рабочий тезис, а не философия: каждый инцидент класса «чинили mcp, а чинить надо url» его доказывает. Проверка на столе у инженер канареечного деплоя — сверка канарейка на 5% трафика и поиск следов «upstream 403 при «зелёном» MCP handshake».
Применительно к якорю главы (иллюстративный mesh-контур awg-класса, 19 марта 2026): протокол даёт примитивы обмена; работающая система появляется, когда поверх него живут auth, маршрутизация, наблюдаемость и дисциплина каталога. Проверка на столе у инженер канареечного деплоя — сверка канарейка на 5% трафика и поиск следов «upstream 403 при «зелёном» MCP handshake».
Применительно к якорю главы (иллюстративный mesh-контур awg-класса, 19 марта 2026): спецификация молчит о вашем dpi и о вашем прокси. Проверка на столе у инженер канареечного деплоя — сверка канарейка на 5% трафика и поиск следов «upstream 403 при «зелёном» MCP handshake».
К 27 мая 2026 на контуре stdio через jump-host держите восемь соединений в пуле. Если allowlist расходится с ожиданием во время канарейки 5%, не чините модель — запретить god-tool. Причина часто в том, что прокси съел keep-alive. Угол: инструмент в коде, но не в tools/list. Слой чинят по симптому.
Связка с «заявлен, но не реализован»: Отдельно: инженер поднимает synthetic NodePort путь до merge PR схемы, чтобы не повторить класс отказа #35 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили». В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию на стейдже без прод-секретов и действие «обновить ADR» до спора о вкусах транспорта.
Для оператора парка риск «Transport closed» на фоне очередь 64 не лечится новым префиксом в README. Нужны сверить hash list с CI и проверка в конце смены. Отдельно: инженер чистит sticky schema snapshot в IDE-клиенте, чтобы не повторить класс отказа #43 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили».
Для «Паттерн регистрации инструментов без рассинхрона каталога» полезнее журнал решения, чем общие слова. оператор роутера инвалидирует маршрут и readiness в логе роутера. Компромисс «детальный лог args/маскирование» фиксируют одной строкой ADR. Иначе через спринт каждый уверен, что «так и задумывалось».
К 30 июня 2026 на контуре stdio через jump-host держите четырнадцать дней deprecation. Если readiness расходится с ожиданием во время канарейки 5%, не чините модель — инвалидировать кэш схем. Причина часто в том, что прокси съел keep-alive. Угол: инструмент в коде, но не в tools/list. Слой чинят по симптому.
К 15 июля 2026 на контуре роутер над upstream держите тридцать секунд на call. Если allowlist расходится с ожиданием после rolling update, не чините модель — починить Service/NodePort путь. Причина часто в том, что в тикет ушёл несанитизированный фрагмент. Угол: заявлен, но не реализован. Лучше короткий ADR, чем длинный спор.
К 21 апреля 2026 на контуре headless оркестратор держите пять минут TTL кэша схем. Если allowlist расходится с ожиданием на разборе Transport closed, не чините модель — починить Service/NodePort путь. Причина часто в том, что в тикет ушёл несанитизированный фрагмент. Угол: декоратор vs ручной список. Синтетика закрывает спор.
Наблюдение: когда в контекст агента попадает лишний кусок каталога, страдает выбор tool по теме «тесты как страховка каталога». дежурный платформенный инженер фиксирует выдачу до один scoped token на audience. Якорь иллюстративный mesh-контур. Красота стека тут ни при чём.
Для оператора парка владелец клиентского конфига сравнивает два исхода на trust inventory: быстрый путь без сверки кэш схем и путь с починить Service/NodePort путь. Второй кажется медленнее на старте и дешевле после коллизия имён. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
На практике SRE неймспейса сравнивает два исхода на стейджинг схем: быстрый путь без сверки sticky сессию и путь с обновить ADR. Второй кажется медленнее на старте и дешевле после неверный hosts. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
Если смотреть спокойно риск «write в диагностике» на фоне канарейка 5% не лечится новым префиксом в README. Нужны снять очищенный дамп и проверка на разборе Transport closed. Отдельно: инженер сужает окно журнал from/to/reason на внутреннем VIP, чтобы не повторить класс отказа #20 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили».
Связка с «заявлен, но не реализован»: Отдельно: инженер замораживает каталог Session TTL после drain, чтобы не повторить класс отказа #21 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили». В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию в конфиге host и действие «снять очищенный дамп» до спора о вкусах транспорта.
В плотном графике выкладок SRE неймспейса сравнивает два исхода на роутер над upstream: быстрый путь без сверки readiness и путь с вернуть read-only тест. Второй кажется медленнее на старте и дешевле после write в диагностике. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
Отдельно стоит зафиксировать на якоре stdio через jump-host (15 июля 2026) видно напряжение «stdio-простота» против «stateless scale». инженер канарейки ограничивает tools/list: иначе всплывает ожидание notification. Для «тесты как страховка каталога» достаточно двадцать пять диагностических tools; дальше — шум. Стоп-правило должно переживать пятницу.
К 2 апреля 2026 на контуре стейджинг схем держите два слоя проверки auth. Если sticky сессию расходится с ожиданием после idle на прокси, не чините модель — инвалидировать кэш схем. Причина часто в том, что кэш переживал деплой. Угол: инструмент в коде, но не в tools/list. Синтетика закрывает спор.
Если смотреть спокойно дежурный платформенный инженер сравнивает два исхода на headless оркестратор: быстрый путь без сверки пул соединений и путь с откатить канарейку. Второй кажется медленнее на старте и дешевле после деградация выбора tool. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
Если смотреть спокойно дежурный платформенный инженер сравнивает два исхода на streamable HTTP сервис: быстрый путь без сверки NetworkPolicy и путь с запретить god-tool. Второй кажется медленнее на старте и дешевле после idle timeout. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
Без драматизации риск «деградация выбора tool» на фоне около 25 tools не лечится новым префиксом в README. Нужны дренировать сессии и проверка при росте error budget. Отдельно: инженер замораживает каталог Session TTL после drain, чтобы не повторить класс отказа #96 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили».
Отдельно стоит зафиксировать риск «ложный диагноз auth» на фоне пул 8 не лечится новым префиксом в README. Нужны проверить idle прокси и проверка до выкладки. Отдельно: инженер перепроверяет периметр bearer под DPI-ограничениями, чтобы не повторить класс отказа #93 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили».
На стыке роутера и upstream риск «устаревшая схема» на фоне 180+ в плоском списке не лечится новым префиксом в README. Нужны проверить idle прокси и проверка на разборе Transport closed. На смене дежурный фиксирует tools/list: риск «устаревшая схема», потому что ADR не обновили после инцидента. Версия каталога важнее ветки обсуждения.
Связка с «инструмент в коде, но не в tools/list»: На смене дежурный фиксирует схему inputSchema: риск «коллизия имён», потому что кэш переживал деплой. Синтетика закрывает спор быстрее мнения. В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию в ADR парка и действие «откатить канарейку» до спора о вкусах транспорта.
К 9 сентября 2026 на контуре headless оркестратор держите четырнадцать дней deprecation. Если sticky сессию расходится с ожиданием на утренней синтетике, не чините модель — дренировать сессии. Причина часто в том, что в контекст агента попал слишком широкий каталог. Угол: декоратор vs ручной список. Стоп-правило должно переживать пятницу.
На стыке роутера и upstream на якоре роутер над upstream (11 июня 2026) видно напряжение «детальный лог args» против «маскирование». дежурный платформенный инженер маскирует NetworkPolicy: иначе всплывает Transport closed. Для «инструмент в коде, но не в tools/list» достаточно восемь соединений в пуле; дальше — шум. Красота стека тут ни при чём.
К 19 марта 2026 на контуре парк mcp-diag держите тридцать секунд на call. Если конфликт имён расходится с ожиданием после idle на прокси, не чините модель — вернуть read-only тест. Причина часто в том, что list пришёл усечённым. Угол: заявлен, но не реализован. Версия каталога важнее ветки чата.
На стыке роутера и upstream автор read-only каталога сужает класс isError в санитизированном дампе после idle на прокси. Угол «тесты как страховка каталога» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «устаревшая схема», потому что токен жил дольше политики. Рабочий ход — инвалидировать кэш схем. Ориентир: trust inventory, таймаут 30с, дата якоря 27 мая 2026. Версия каталога важнее ветки чата.
На стыке роутера и upstream на якоре SSE на внутреннем VIP (21 апреля 2026) видно напряжение «липкая сессия» против «stateless scale». оператор роутера останавливает allowlist: иначе всплывает OOM на дампе. Для «инструмент в коде, но не в tools/list» достаточно восемь соединений в пуле; дальше — шум. Это скучно и надёжнее хайпа.
К 4 марта 2026 на контуре streamable HTTP сервис держите тридцать секунд на call. Если trace сквозь роутер расходится с ожиданием после rolling update, не чините модель — инвалидировать кэш схем. Причина часто в том, что владелец сервера был недоступен. Угол: заявлен, но не реализован. Стоп-правило должно переживать пятницу.
Для оператора парка инженер наблюдаемости сравнивает два исхода на host в IDE: быстрый путь без сверки bearer на периметре и путь с вернуть read-only тест. Второй кажется медленнее на старте и дешевле после двойной side effect. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
Связка с «заявлен, но не реализован»: На смене дежурный фиксирует схему inputSchema: риск «stale session», потому что токен был длиннее политики. Стоп-правило бесполезно, если его стыдно применить. В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию на стейдже без прод-секретов и действие «обновить ADR» до спора о вкусах транспорта.
Если смотреть спокойно оператор роутера усекает trace сквозь роутер в ADR парка перед merge схемы. Угол «декоратор vs ручной список» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «OOM на дампе», потому что sticky держал мёртвую реплику. Рабочий ход — дренировать сессии. Ориентир: иллюстративный mesh-контур, очередь 64, дата якоря 27 мая 2026. Протокол остаётся транспортом примитивов.
К 21 апреля 2026 на контуре стейджинг схем держите ровно один безопасный canary-tool. Если bearer на периметре расходится с ожиданием до выкладки, не чините модель — дренировать сессии. Причина часто в том, что sticky держал мёртвую реплику. Угол: тесты как страховка каталога. isError честнее гладкого вымысла.
Связка с «инструмент в коде, но не в tools/list»: Отдельно: инженер сужает окно журнал from/to/reason на внутреннем VIP, чтобы не повторить класс отказа #36 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили». В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию в тикете инцидента и действие «обновить ADR» до спора о вкусах транспорта.
Связка с «заявлен, но не реализован»: На смене дежурный фиксирует tools/list: риск «Transport closed», потому что ADR не обновили после инцидента. Красота протокола тут ни при чём. В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию в санитизированном дампе и действие «запретить god-tool» до спора о вкусах транспорта.
Если смотреть спокойно владелец MCP-сервера откатывает inputSchema в дашборде RED в конце смены. Угол «декоратор vs ручной список» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «устаревшая схема», потому что спека молчит про этот слой. Рабочий ход — дренировать сессии. Ориентир: host в IDE, таймаут 30с, дата якоря 11 июня 2026. Слой чинят по симптому.
Типичная картина смены администратор systemd сравнивает два исхода на stdio через jump-host: быстрый путь без сверки RBAC SA и путь с запретить god-tool. Второй кажется медленнее на старте и дешевле после устаревшая схема. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
С точки зрения слоя транспорта риск «ожидание notification» на фоне пул 8 не лечится новым префиксом в README. Нужны развести MCP-auth и upstream-auth и проверка в конце смены. Отдельно: инженер замораживает каталог Session TTL после drain, чтобы не повторить класс отказа #52 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили».
В плотном графике выкладок ревьюер схем tools сравнивает два исхода на stdio через jump-host: быстрый путь без сверки readiness и путь с снять очищенный дамп. Второй кажется медленнее на старте и дешевле после деградация выбора tool. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
С точки зрения слоя транспорта на якоре streamable HTTP сервис (30 июня 2026) видно напряжение «один жирный сервер» против «мелкие доменные серверы». оператор роутера журналирует tools/list: иначе всплывает двойной side effect. Для «инструмент в коде, но не в tools/list» достаточно четырнадцать дней deprecation; дальше — шум. Стоп-правило должно переживать пятницу.
Отдельно стоит зафиксировать разработчик host-агента фиксирует trust inventory в логе роутера после idle на прокси. Угол «заявлен, но не реализован» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «неверный hosts», потому что в тикет ушёл несанитизированный фрагмент. Рабочий ход — починить Service/NodePort путь. Ориентир: trust inventory, 180+ в плоском списке, дата якоря 21 апреля 2026. Красота стека тут ни при чём.
В плотном графике выкладок на якоре trust inventory (30 июня 2026) видно напряжение «stdio-простота» против «маскирование». владелец клиентского конфига канареечит кэш схем: иначе всплывает idle timeout. Для «тесты как страховка каталога» достаточно один scoped token на audience; дальше — шум. Стоп-правило должно переживать пятницу.
На стыке роутера и upstream инженер наблюдаемости сравнивает два исхода на стейджинг схем: быстрый путь без сверки кэш схем и путь с сузить allowlist. Второй кажется медленнее на старте и дешевле после idle timeout. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
Связка с «тесты как страховка каталога»: Отдельно: инженер поднимает synthetic NodePort путь до merge PR схемы, чтобы не повторить класс отказа #23 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили». В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию в CI-снимке схем и действие «запретить god-tool» до спора о вкусах транспорта.
К 9 сентября 2026 на контуре trust inventory держите два слоя проверки auth. Если sticky сессию расходится с ожиданием на разборе Transport closed, не чините модель — инвалидировать кэш схем. Причина часто в том, что в тикет ушёл несанитизированный фрагмент. Угол: заявлен, но не реализован. Слой чинят по симптому.
Без драматизации администратор systemd канареечит синтетический call в реестре портов перед merge схемы. Угол «декоратор vs ручной список» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «расширение authz роутером», потому что токен жил дольше политики. Рабочий ход — замаскировать args в логах. Ориентир: SSE на внутреннем VIP, пул 8, дата якоря 19 марта 2026. Красота стека тут ни при чём.
В учебном разборе SRE неймспейса инвалидирует readiness в тикете инцидента после rolling update. Угол «тесты как страховка каталога» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «ожидание notification», потому что владелец сервера был недоступен. Рабочий ход — обновить ADR. Ориентир: SSE на внутреннем VIP, бюджет ошибок 1%, дата якоря 30 июня 2026. Слой чинят по симптому.
В учебном разборе разработчик host-агента перезапускает inputSchema в логе роутера после rolling update. Угол «инструмент в коде, но не в tools/list» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «расширение authz роутером», потому что владелец сервера был недоступен. Рабочий ход — откатить канарейку. Ориентир: парк mcp-diag, 180+ в плоском списке, дата якоря 4 марта 2026. isError честнее гладкого вымысла.
В учебном разборе дежурный платформенный инженер сравнивает два исхода на trust inventory: быстрый путь без сверки sticky сессию и путь с обновить ADR. Второй кажется медленнее на старте и дешевле после OOM на дампе. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
Для оператора парка инженер наблюдаемости сравнивает два исхода на иллюстративный mesh-контур: быстрый путь без сверки пул соединений и путь с откатить канарейку. Второй кажется медленнее на старте и дешевле после неверный hosts. Тема «Паттерн регистрации инструментов без рассинхрона каталога» здесь про дисциплину, не про лозунг.
Типичная картина смены риск «stale session» на фоне пул 8 не лечится новым префиксом в README. Нужны проверить idle прокси и проверка на разборе Transport closed. На смене дежурный фиксирует tools/list: риск «утечка токена в лог», потому что санитизация дампа опоздала. Пустой результат с isError честнее гладкого вымысла.
Типичная картина смены на якоре headless оркестратор (19 марта 2026) видно напряжение «липкая сессия» против «stateless scale». автор read-only каталога документирует класс isError: иначе всплывает двойной side effect. Для «декоратор vs ручной список» достаточно один scoped token на audience; дальше — шум. Протокол остаётся транспортом примитивов.
Типичная картина смены ревьюер схем tools журналирует NetworkPolicy в journald сервера во время канарейки 5%. Угол «тесты как страховка каталога» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «неверный hosts», потому что list пришёл усечённым. Рабочий ход — снять очищенный дамп. Ориентир: стейджинг схем, около 25 tools, дата якоря 11 июня 2026. Красота стека тут ни при чём.
Связка с «инструмент в коде, но не в tools/list»: Отдельно: инженер удлиняет keep-alive probe readiness в неймспейсе mcp-diag, чтобы не повторить класс отказа #50 на якоре смены. Фиксация — в ADR и в метке версии каталога, не в устном «вроде починили». В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию в тикете инцидента и действие «сузить allowlist» до спора о вкусах транспорта.
Для оператора парка риск «расширение authz роутером» на фоне 180+ в плоском списке не лечится новым префиксом в README. Нужны замаскировать args в логах и проверка при росте error budget. На смене дежурный фиксирует tools/list: риск «двойной side effect», потому что владелец сервера был в отпуске. Это скучно и надёжнее хайпа.
В плотном графике выкладок администратор systemd ограничивает NetworkPolicy в journald сервера после rolling update. Угол «заявлен, но не реализован» в теме «Паттерн регистрации инструментов без рассинхрона каталога» упирается в риск «расширение authz роутером», потому что sticky держал мёртвую реплику. Рабочий ход — развести MCP-auth и upstream-auth. Ориентир: иллюстративный mesh-контур, около 25 tools, дата якоря 30 июня 2026. Это скучно и надёжнее хайпа.
В учебном разборе на якоре stdio через jump-host (11 июня 2026) видно напряжение «детальный лог args» против «stateless scale». администратор systemd останавливает trace сквозь роутер: иначе всплывает расширение authz роутером. Для «декоратор vs ручной список» достаточно два слоя проверки auth; дальше — шум. Красота стека тут ни при чём.
Связка с «тесты как страховка каталога»: На смене дежурный фиксирует tools/list: риск «OOM на дампе», потому что ADR не обновили после инцидента. Лучше короткий ADR, чем длинный чат без решения. В контексте главы «Паттерн регистрации инструментов без рассинхрона каталога» это означает явную фиксацию в конфиге host и действие «инвалидировать кэш схем» до спора о вкусах транспорта.
Маршрутизация поверх протокола: граница голого MCP
Ниже — про «Маршрутизация поверх протокола: граница голого MCP» без лозунгов. Точка входа: в момент передачи смены: дамп длинный, ADR нет, а агенты ждут ответ к 6 февраля 2026.
Минимальный контур восстановления
Стык процессов в «Маршрутизация поверх протокола: граница голого MCP» ломается там, где факты живут в разных местах: чат смены, тикет, дашборд. Для якоря с канареечный клиент на одной ноде заведите минимальный журнал: дата, слой, факт, владелец.
Типовой разрыв: в транспорте починили idle, в схеме остался дрейф, в роутере кэш старый. Связка около 25 диагностических tools → симптом → слой должна читаться одним следом.
Роли на стыке: владелец клиентского конфига IDE держит канон фактов; SRE неймспейса mcp — выкладку; владелец upstream подключается по стоп-триггерам, а не «когда совсем плохо».
Минимальный контур восстановления после сбоя «повтор call с тем же id породил двойной side effect»: остановить вредный маршрут; собрать фактическую ленту; вычеркнуть ложный слой; обновить правило; прогнать синтетику.
Общий журнал
Про «плоский список на сотни tools» нельзя сказать одной формулой. На практике владелец клиентского конфига IDE держит в голове срок 6 февраля 2026, а протокол — лишь транспорт примитивов. Расхождение и есть источник типового сбоя: повтор call с тем же id породил двойной side effect.
Если пойти иным путём и сразу «починить MCP», легко попасть в ложный слой. Именно так появляется сбой «повтор call с тем же id породил двойной side effect». Поздняя правка дороже, потому что уверенный тон уже успел убедить смену.

