Approvals
Согласования и маршруты
Подключение: https://mcp.legalstack.ru/mcp/approvals или в составе агрегированного сервера https://mcp.legalstack.ru/mcp.
Имя сервера: legalstack-approvals. Инструментов: 10.
add_approval_comment
Добавить комментарий к согласованию от имени текущего пользователя. Не меняет статус и не двигает маршрут (для решений — approve_participant/reject_participant). Возвращает: текст «Комментарий добавлен».
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID согласования (UUID)."
},
"text": {
"type": "string",
"minLength": 1,
"description": "Текст комментария."
}
},
"required": [
"id",
"text"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}approve_participant
⚠ Outward-facing: фиксирует решение участника и может продвинуть/завершить маршрут, уведомив следующих участников и инициатора.
Одобрить согласование от имени конкретного участника. Когда одобрили все участники этапа — стартует следующий этап; когда одобрены все этапы — согласование становится completed.
Вызывай для проставления решения «одобрено». stageId и participantId бери из get_approval. Для отказа используй reject_participant.
Возвращает: текст-подтверждение «Согласование одобрено».
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID согласования"
},
"stageId": {
"type": "string",
"description": "ID этапа"
},
"participantId": {
"type": "string",
"description": "ID участника"
},
"comment": {
"description": "Комментарий",
"type": "string"
}
},
"required": [
"id",
"stageId",
"participantId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}create_approval
⚠ Outward-facing: запускает маршрут согласования и уведомляет участников первого этапа.
Создать новое согласование с этапами и участниками. Этапы выполняются последовательно: следующий стартует, только когда все участники текущего одобрили. В каждом этапе нужен минимум один участник с action=approve.
Вызывай когда пользователь хочет запустить процесс согласования. Участникам нужны реальные userId — если даны только имена, сначала найди их через find_user (tasks-сервер); userName — отображаемое имя. НЕ идемпотентно: повторный вызов создаёт ещё одно согласование.
Возвращает: текст-подтверждение с названием и ID созданного согласования.
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Название/предмет согласования"
},
"type": {
"description": "Тип согласования (произвольная метка, по умолчанию 'general')",
"type": "string"
},
"stages": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Название этапа"
},
"participants": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"userId": {
"type": "string",
"description": "ID участника (UUID)"
},
"userName": {
"type": "string",
"description": "Имя участника"
},
"action": {
"description": "Роль: approve — согласует (решает), review — ознакомление. По умолчанию approve",
"type": "string",
"enum": [
"approve",
"review"
]
}
},
"required": [
"userId",
"userName"
]
},
"description": "Участники этапа (минимум один с action=approve)"
}
},
"required": [
"name",
"participants"
]
},
"description": "Этапы согласования (выполняются последовательно)"
},
"data": {
"description": "Дополнительные данные",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"title",
"stages"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}delete_approval
⚠ Необратимо удаляет согласование вместе с этапами и историей. Восстановление невозможно.
Полностью стереть согласование. В отличие от revoke_approval (останавливает, но сохраняет запись и допускает restart_approval) — здесь запись удаляется навсегда.
Вызывай только когда пользователь явно просит удалить, а не просто отменить. Сначала уточни, если намерение неоднозначно.
Возвращает: текст-подтверждение «Согласование удалено».
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID согласования"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}get_approval
Полная карточка одного согласования по ID: этапы, участники, их решения.
Вызывай когда нужны детали конкретного согласования — в частности, чтобы получить stageId и participantId для approve_participant/reject_participant. НЕ вызывай для обзора нескольких — для списка используй list_approvals. Для комментариев — get_approval_comments.
Возвращает: объект {id, title, status, stagesJson, initiatorId, createdAt, updatedAt, teamId, dataJson}; этапы и участники лежат в stagesJson (JSON-строка).
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID согласования"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}get_approval_comments
Комментарии (обсуждение) к согласованию по его ID.
Вызывай когда нужна переписка/обсуждение по согласованию. Для статуса, этапов и участников используй get_approval, для самого согласования — list_approvals.
Возвращает: массив {id, approvalId, userId, userName, text, createdAt} либо текст «Комментариев нет».
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID согласования"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}list_approvals
Список согласований текущей команды, кратко. Опциональный фильтр по статусу.
Вызывай для обзора согласований или поиска нужного по названию/статусу. НЕ вызывай ради деталей одного согласования (этапы, участники, решения) — для этого get_approval по ID. Для комментариев — get_approval_comments.
Возвращает: { approvals: [{id, title, status, initiator, createdAt}] } либо текст «Согласования не найдены».
{
"type": "object",
"properties": {
"status": {
"description": "Фильтр по статусу согласования. Без значения — все статусы.",
"type": "string",
"enum": [
"in_progress",
"completed",
"rejected",
"revoked"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}reject_participant
⚠ Outward-facing: отклонение завершает весь маршрут со статусом rejected и уведомляет инициатора.
Отклонить согласование от имени конкретного участника. Один отказ обрывает процесс — остальные этапы не выполняются.
Вызывай для проставления решения «отклонено». stageId и participantId бери из get_approval. Для одобрения используй approve_participant. Перезапустить отклонённое можно через restart_approval.
Возвращает: текст-подтверждение «Согласование отклонено».
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID согласования"
},
"stageId": {
"type": "string",
"description": "ID этапа"
},
"participantId": {
"type": "string",
"description": "ID участника"
},
"comment": {
"description": "Причина отклонения",
"type": "string"
}
},
"required": [
"id",
"stageId",
"participantId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}restart_approval
⚠ Outward-facing: заново запускает маршрут с первого этапа и повторно уведомляет участников.
Перезапустить отклонённое (rejected) или отозванное (revoked) согласование: статус сбрасывается в in_progress, текущий этап — первый, прежние решения обнуляются.
Вызывай для повторного прогона после reject_participant или revoke_approval. Не применимо к completed/in_progress.
Возвращает: текст-подтверждение «Согласование перезапущено».
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID согласования"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}revoke_approval
⚠ Outward-facing: останавливает идущий маршрут (статус revoked) и уведомляет участников/инициатора.
Отозвать согласование. Разрешено только инициатору; вызывающий берётся из текущего пользователя.
Вызывай когда инициатор хочет отменить запущенное согласование до его завершения. Отличие от delete_approval: revoke сохраняет запись и допускает restart_approval, delete стирает запись безвозвратно.
Возвращает: текст-подтверждение «Согласование отозвано».
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID согласования"
},
"reason": {
"description": "Причина отзыва",
"type": "string"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}