Interfaces
Формы, конструкторы, публикация и ответы
Подключение: https://mcp.legalstack.ru/mcp/interfaces или в составе агрегированного сервера https://mcp.legalstack.ru/mcp.
Имя сервера: legalstack-interfaces. Инструментов: 12.
create_interface
Создать новый интерфейс (форму/конструктор/рабочее пространство) с набором полей.
Вызывай, когда пользователь хочет создать новую форму или интерфейс сбора данных. НЕ вызывай для правки существующего — это update_interface; создание не публикует интерфейс (используй publish_interface отдельно).
Возвращает: текст-подтверждение с названием и ID созданного интерфейса.
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"form",
"constructor",
"workspace"
],
"description": "Тип интерфейса"
},
"title": {
"type": "string",
"description": "Название интерфейса"
},
"description": {
"description": "Описание",
"type": "string"
},
"registryTypeId": {
"description": "ID реестра: ответы формы падают записями в этот реестр. Поля матчатся по key",
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Название поля"
},
"type": {
"type": "string",
"description": "Тип поля (dataType), напр. text, number, date, select, file"
},
"key": {
"description": "Системный ключ поля. Для связи с реестром задай key = key поля реестра (из get_registry)",
"type": "string"
},
"required": {
"description": "Обязательное поле",
"type": "boolean"
},
"placeholder": {
"description": "Подсказка",
"type": "string"
},
"options": {
"description": "Варианты (для select)",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"label",
"type"
]
},
"description": "Поля интерфейса"
}
},
"required": [
"type",
"title",
"fields"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}delete_interface
⚠ Необратимо удаляет интерфейс вместе со всеми ответами (submissions). Восстановления нет. Если интерфейс опубликован — учти, что публичная ссылка перестанет работать. Возвращает: текст-подтверждение с ID удалённого интерфейса.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID интерфейса"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}delete_submission
⚠ Необратимо удаляет один ответ (заполнение) интерфейса. Восстановления нет. Возвращает: текст-подтверждение с ID удалённого ответа.
{
"type": "object",
"properties": {
"interfaceId": {
"type": "string",
"description": "ID интерфейса"
},
"submissionId": {
"type": "string",
"description": "ID ответа"
}
},
"required": [
"interfaceId",
"submissionId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}get_interface
Получить полную карточку одного интерфейса по ID: поля, тип, статус публикации, настройки.
Вызывай, когда уже известен ID и нужны детали (например, перед update_interface или publish_interface). НЕ вызывай для обзора многих — это list_interfaces; для поиска по тексту — search_interfaces.
Возвращает: объект Interface {id, title, description, fields[], published, publicUrl, createdAt, updatedAt, teamId, type}.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID интерфейса"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}get_submission
Один ответ (заполнение) интерфейса по его ID. Только чтение. Список — list_submissions. Возвращает: объект { id, data, submittedAt, source }.
{
"type": "object",
"properties": {
"interfaceId": {
"type": "string",
"description": "ID интерфейса"
},
"submissionId": {
"type": "string",
"description": "ID ответа"
}
},
"required": [
"interfaceId",
"submissionId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}list_interfaces
Получить список всех интерфейсов (форм, конструкторов, рабочих пространств) текущей команды.
Вызывай для обзора всех интерфейсов без фильтра. НЕ вызывай, если знаешь текстовый запрос — используй search_interfaces; для полной карточки одного интерфейса — get_interface.
Возвращает: { interfaces: [{id, title, type, description, published, publicUrl}] } либо текст "Интерфейсы не найдены".
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}list_submissions
Ответы (заполнения) интерфейса. Только чтение. Для одного ответа по ID — get_submission. Возвращает: объект { total, submissions:[{ id, data, submittedAt, source }] } или текст «Ответов нет».
{
"type": "object",
"properties": {
"interfaceId": {
"type": "string",
"description": "ID интерфейса"
}
},
"required": [
"interfaceId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}publish_interface
⚠ Делает интерфейс публично доступным по ссылке на выбранном канале. Обратное действие — unpublish_interface. Для отправки конкретному пользователю в Telegram — send_interface_to_telegram. Возвращает: текст с каналом, публичным токеном и публичным URL.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID интерфейса"
},
"channel": {
"default": "web",
"description": "Канал публикации",
"type": "string",
"enum": [
"web",
"embed",
"telegram",
"api"
]
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}search_interfaces
Найти интерфейсы по текстовому запросу (по названию/описанию).
Вызывай, когда пользователь называет интерфейс словами, а ID неизвестен. НЕ вызывай для полного списка — это list_interfaces; для деталей найденного — get_interface.
Возвращает: { interfaces: [{id, title, type, published}] } либо текст "Интерфейсы не найдены".
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Поисковый запрос"
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}send_interface_to_telegram
⚠ Outward-facing: отправляет реальному пользователю сообщение в Telegram со ссылкой на форму. Интерфейс должен быть опубликован (publish_interface). userId — член команды с привязанным Telegram. Возвращает: текст-подтверждение об отправке.
{
"type": "object",
"properties": {
"interfaceId": {
"type": "string",
"description": "ID интерфейса (должен быть опубликован)"
},
"userId": {
"type": "string",
"description": "ID пользователя LegalStack"
}
},
"required": [
"interfaceId",
"userId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}unpublish_interface
Снять интерфейс с публикации на канале — публичная ссылка перестаёт работать. Обратное действие к publish_interface. Возвращает: текст-подтверждение по каналу.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID интерфейса"
},
"channel": {
"default": "web",
"description": "Канал",
"type": "string",
"enum": [
"web",
"embed",
"telegram",
"api"
]
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}update_interface
Обновить существующий интерфейс: название, описание и/или полный набор полей.
Вызывай для правки уже созданного интерфейса (ID известен). НЕ вызывай для создания нового — это create_interface. Передача fields ЗАМЕНЯЕТ весь набор полей целиком, а не добавляет; передавай только те аргументы, что нужно изменить.
Возвращает: текст-подтверждение с новым названием интерфейса.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID интерфейса"
},
"title": {
"description": "Новое название",
"type": "string"
},
"description": {
"description": "Новое описание",
"type": "string"
},
"registryTypeId": {
"description": "ID реестра для приёма ответов (поля матчатся по key); null — отвязать реестр",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"fields": {
"description": "Новые поля интерфейса (заменяют весь существующий набор полностью)",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Название поля"
},
"type": {
"type": "string",
"description": "Тип поля (dataType), напр. text, number, date, select, file"
},
"key": {
"description": "Системный ключ поля. Для связи с реестром задай key = key поля реестра (из get_registry)",
"type": "string"
},
"required": {
"description": "Обязательное поле",
"type": "boolean"
},
"placeholder": {
"description": "Подсказка",
"type": "string"
},
"options": {
"description": "Варианты (для select)",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"label",
"type"
]
}
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}