Бета · редакция 2026.10-beta1 · MCP 2026-07-28

Elicitation в режиме form

L19 · MCP 2026-07-28 · открытая бета · редакция 2026.10-beta1

Мне всегда неудобно, когда агент угадывает проект или количество задач. Elicitation form позволяет задать человеку понятный вопрос и получить структурированный ответ. Это не окно для пароля или токена: секреты третьей стороны не должны попадать в такую форму.

Предварительно: L05 · L15

Как я это использую

В MRTR сервер возвращает запрос elicitation/create с mode form, message и requestedSchema. Поддерживается ограниченное подмножество схем для плоских полей и вариантов выбора; произвольный вложенный JSON Schema нельзя считать поддерживаемым UI-контрактом. Ответ содержит accept, decline или cancel. При accept сервер повторно валидирует content и полномочия, а затем продолжает исходную операцию.

Не путать два режима

Разбираем конкретный контракт

Это учебный fixture: поля с доменом .example и идентификаторы вымышлены. Если показан фрагмент, его нужно поместить в соответствующий envelope выбранного профиля.

{
  "mode": "form",
  "message": "В каком проекте создать задачи?",
  "requestedSchema": {
    "type": "object",
    "properties": {
      "project": {
        "type": "string"
      },
      "count": {
        "type": "integer",
        "minimum": 1,
        "maximum": 5
      }
    },
    "required": [
      "project",
      "count"
    ]
  }
}

Лаборатория · L19

Измените условия, проверьте результат и разберите ошибку. Все адреса и данные учебные.

Что легко сломать

В проверяемом задании составьте форму project и count от 1 до 5, затем подтвердите данные вашей попытки. Не добавляйте поле password. Даже если браузер уже проверил форму, сервер обязан проверить типы, ограничения и согласие ещё раз.

Практика и самопроверка

Собрать форму по разрешённому подмножеству schema и отправить учебный ответ. Проверяемая задача отвергает запрос секрета через форму.

Я советую сначала предсказать результат, затем изменить один параметр в лаборатории и объяснить разницу. Сохраните небольшой fixture с нормальным и ошибочным случаем для своего проекта. На этом уроке практический результат проверяется сервером: войдите в аккаунт, начните попытку и выполните условия. Без неё урок не завершится.

В конце страницы — три вопроса. После правильных ответов можно завершить урок; ошибка в следующей тренировке не стирает уже полученное подтверждение этой редакции теста.

Попробовать локально

Скачать reference-проект с lockfile и тестами (после входа). Распакуйте в отдельную папку, используйте Node.js 22.14 или новее.

npm ci
npm test
npm start

npm start запускает локальный stdio-сервер задач. Остановите его после практики. Тесты используют официальный TypeScript SDK v2.3.1, проверяют современный HTTP handler, MRTR, отказ и подмену состояния. Fake AS проверяет PKCE, issuer, audience и одноразовый code без внешнего аккаунта. Это учебный проект: production требует долговременного хранилища, настоящей проверки токенов и транзакционной идемпотентности.

На что я опирался

Профиль и ссылки проверены 15 октября 2026. Core, deprecated compatibility и extensions в этом курсе помечены отдельно. Примеры объясняют выбранные сценарии; для реализации сверяйте нормативные MUST/SHOULD и schema соответствующей версии.

Проверка знаний

Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.

Для чего подходит form?

Что проверять после accept?

Можно ли ожидать поддержку любой вложенной схемы?