LegalStack
MCP

Approvals

Согласования и маршруты

Подключение: https://mcp.legalstack.ru/mcp/approvals или в составе агрегированного сервера https://mcp.legalstack.ru/mcp.

Имя сервера: legalstack-approvals. Инструментов: 10.

add_approval_comment

Добавить комментарий к согласованию от имени текущего пользователя. Не меняет статус и не двигает маршрут (для решений — approve_participant/reject_participant). Возвращает: текст «Комментарий добавлен».

Параметры (JSON Schema)
{
  "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.

Возвращает: текст-подтверждение «Согласование одобрено».

Параметры (JSON Schema)
{
  "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 созданного согласования.

Параметры (JSON Schema)
{
  "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) — здесь запись удаляется навсегда.

Вызывай только когда пользователь явно просит удалить, а не просто отменить. Сначала уточни, если намерение неоднозначно.

Возвращает: текст-подтверждение «Согласование удалено».

Параметры (JSON Schema)
{
  "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-строка).

Параметры (JSON Schema)
{
  "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} либо текст «Комментариев нет».

Параметры (JSON Schema)
{
  "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}] } либо текст «Согласования не найдены».

Параметры (JSON Schema)
{
  "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.

Возвращает: текст-подтверждение «Согласование отклонено».

Параметры (JSON Schema)
{
  "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.

Возвращает: текст-подтверждение «Согласование перезапущено».

Параметры (JSON Schema)
{
  "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 стирает запись безвозвратно.

Возвращает: текст-подтверждение «Согласование отозвано».

Параметры (JSON Schema)
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "ID согласования"
    },
    "reason": {
      "description": "Причина отзыва",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

На этой странице