MCP-сервер DecisionPing

Решения человека для автономных агентов

DecisionPing — это удалённый MCP-сервер на Streamable HTTP. Он даёт агенту надёжный способ уведомить человека, запросить явное решение и продолжить работу со структурированным ответом.

Эндпоинтhttps://mcp.decisionping.com/mcp
АутентификацияBearer, API-ключ проекта
ТранспортStreamable HTTP
ПротоколСогласованная версия MCP

Настройка

Создайте проект и API-ключ в приложении администрирования. Сохраните ключ как DECISIONPING_API_KEY, затем настройте удалённый эндпоинт с Authorization: Bearer <key>.

Держите ключи проекта в секрете.Не помещайте ключи в систему контроля версий, не выводите их в логи и не включайте в запросы к агенту. Используйте поддержку секретов или переменных окружения в клиенте.
Открыть руководство по настройке клиента →

Справочник инструментов

Каждый инструмент публикует аннотации безопасности MCP. Клиентам всё равно следует применять собственные политики подтверждения и доверия.

notify
Отправить информацию, не блокируя агента.Создаёт и доставляет уведомление
Внешний побочный эффект
ask_user
Запросить подтверждение, выбор или произвольный текст.Создаёт и доставляет запрос на решение
Внешний побочный эффект
get_request
Прочитать текущий статус запроса и ответ.Не изменяет запрос
Только чтение
wait_for_response
Опрашивать, пока человек не ответит или не истечёт время вызова.Ожидает до 120 секунд за вызов
Только чтение
cancel_request
Отменить ожидающий запрос, который больше не нужен.Переводит ожидающий запрос в статус «отменён»
Внешний побочный эффект

Жизненный цикл решения

  1. 1Создайте один разВызовите ask_user со стабильным externalId.
  2. 2Сохраните идентификатор запросаВозвращённый UUID идентифицирует это решение во всех последующих вызовах.
  3. 3ОжидайтеВызовите wait_for_response; повторяйте, если результат остаётся в ожидании.
  4. 4Продолжайте только при статусе «отвечено»Никогда не выводите согласие из тайм-аута, статуса доставки или молчания.

Конечные статусы — answered, expired и cancelled. Тайм-аут из wait_for_response не меняет статус запроса.

Рабочие примеры

01 · Подтверждение

Одобрить развёртывание в продакшн

{
  "title": "Deploy production?",
  "message": "Version 2.4.1 passed all checks.",
  "kind": "confirmation",
  "externalId": "deploy-2.4.1",
  "expiresInSeconds": 1800
}
02 · Выбор

Выбрать один из нескольких безопасных планов

{
  "title": "Choose a migration strategy",
  "message": "Both plans passed the dry run.",
  "kind": "choice",
  "choices": [
    { "id": "rolling", "label": "Rolling migration" },
    { "id": "maintenance", "label": "Maintenance window" }
  ],
  "externalId": "migration-plan-42"
}
03 · Текст

Запросить недостающий контекст инцидента

{
  "title": "Incident context needed",
  "message": "What changed immediately before the alert?",
  "kind": "text",
  "allowText": true,
  "externalId": "incident-inc-1842-context"
}

Статусы и обработка ошибок

  • 401 API-ключ проекта отсутствует, некорректен, отозван или недействителен.
  • 404 Запрос не существует или принадлежит другому проекту.
  • 409 Запрошенный переход больше недействителен.
  • pending Человек ещё не ответил; ожидайте снова, не создавая дубликат.
  • expired Срок истёк без действительного ответа.

Безопасность и потоки данных

Запросы могут содержать заголовок, сообщение, варианты выбора, метаданные и итоговый ответ человека. Они доставляются только в подключённые чаты рабочего пространства проекта. Telegram и WWChat обрабатывают содержимое сообщений, когда эти каналы включены.

Пароли хешируются алгоритмом bcrypt, API-ключи проектов хранятся в виде хешей SHA-256, публичный трафик использует HTTPS, а PostgreSQL не доступен публично в продакшн-инфраструктуре.