# Календарь

> Инструменты раздела «Календарь»: 7

Подключение: `https://mcp.legalstack.ru/mcp/calendar` или в составе общего подключения `https://mcp.legalstack.ru/mcp`.

## Создать событие

`create_event` · изменяет данные

Описание для модели: Create a calendar event or meeting. Participants are notified. Without end a timed event lasts one hour.

**Параметры**

| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `title` | string | да | Event title. Длина: 1–500. |
| `start` | string | да | Start, YYYY-MM-DDTHH:MM in the team time zone, or YYYY-MM-DD for an all-day event. Длина: 10–40. |
| `end` | string | нет | End, YYYY-MM-DDTHH:MM in the team time zone, or YYYY-MM-DD for an all-day event. Длина: 10–40. |
| `kind` | string | нет | Meeting or reserved focus time. Значения: `Встреча`, `Фокус-время`. |
| `description` | string | нет | Description, plain text. Длина: до 20000. |
| `location` | string | нет | Place or meeting link. Длина: до 500. |
| `participant_ids` | массив string | нет | Participants, member ids from list_members. Элементов: до 100. |
| `repeat_rule` | string | нет | Recurrence as RRULE, for example FREQ=WEEKLY;BYDAY=MO,WE. Длина: до 500. |
| `reminders_minutes` | массив integer | нет | Minutes before the start. Элементов: до 10. |
| `visibility` | string | нет | Who sees the details. Значения: `Видно всем`, `Только занятость`, `Только участникам`. |

<details>
<summary>JSON Schema параметров</summary>

```json
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Event title"
    },
    "start": {
      "type": "string",
      "minLength": 10,
      "maxLength": 40,
      "description": "Start, YYYY-MM-DDTHH:MM in the team time zone, or YYYY-MM-DD for an all-day event"
    },
    "end": {
      "description": "End, YYYY-MM-DDTHH:MM in the team time zone, or YYYY-MM-DD for an all-day event",
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "kind": {
      "type": "string",
      "enum": [
        "Встреча",
        "Фокус-время"
      ],
      "description": "Meeting or reserved focus time"
    },
    "description": {
      "type": "string",
      "maxLength": 20000,
      "description": "Description, plain text"
    },
    "location": {
      "type": "string",
      "maxLength": 500,
      "description": "Place or meeting link"
    },
    "participant_ids": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "description": "Team member id"
      },
      "description": "Participants, member ids from list_members"
    },
    "repeat_rule": {
      "type": "string",
      "maxLength": 500,
      "description": "Recurrence as RRULE, for example FREQ=WEEKLY;BYDAY=MO,WE"
    },
    "reminders_minutes": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 40320
      },
      "description": "Minutes before the start"
    },
    "visibility": {
      "type": "string",
      "enum": [
        "Видно всем",
        "Только занятость",
        "Только участникам"
      ],
      "description": "Who sees the details"
    }
  },
  "required": [
    "title",
    "start"
  ],
  "additionalProperties": false
}
```

</details>

## Удалить событие

`delete_event` · необратимое действие

Описание для модели: Delete a calendar event or its occurrences. For a repeating event choose the scope. The event cannot be restored.

**Параметры**

| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `event_id` | string | да | Event id. Длина: 1–64. |
| `scope` | string | нет | For a repeating event: one occurrence, it and later ones, or all. Значения: `this`, `following`, `all`. |
| `occurrence` | string | нет | Start of the occurrence the scope applies to, YYYY-MM-DDTHH:MM in the team time zone unless an offset is given. |

<details>
<summary>JSON Schema параметров</summary>

```json
{
  "type": "object",
  "properties": {
    "event_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Event id"
    },
    "scope": {
      "description": "For a repeating event: one occurrence, it and later ones, or all",
      "type": "string",
      "enum": [
        "this",
        "following",
        "all"
      ]
    },
    "occurrence": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}",
      "description": "Start of the occurrence the scope applies to, YYYY-MM-DDTHH:MM in the team time zone unless an offset is given"
    }
  },
  "required": [
    "event_id"
  ],
  "additionalProperties": false
}
```

</details>

## Свободное время участников

`find_free_slots` · только чтение

Описание для модели: Find free meeting slots in calendars of team members. With together all members are free at once, otherwise a slot needs any one of them.

**Параметры**

| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `member_ids` | массив string | да | Member ids from list_members. Элементов: 1–20. |
| `from` | string | да | Start of the search window, YYYY-MM-DDTHH:MM in the team time zone unless an offset is given. |
| `to` | string | да | End of the search window, YYYY-MM-DDTHH:MM in the team time zone unless an offset is given. |
| `duration_minutes` | integer | да | Meeting length in minutes. Диапазон: 5–1440. |
| `step_minutes` | integer | нет | Grid step, the meeting length by default. Диапазон: 5–1440. |
| `together` | boolean | нет | All members must be free at once, on by default. |

<details>
<summary>JSON Schema параметров</summary>

```json
{
  "type": "object",
  "properties": {
    "member_ids": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "description": "Team member id"
      },
      "description": "Member ids from list_members"
    },
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}",
      "description": "Start of the search window, YYYY-MM-DDTHH:MM in the team time zone unless an offset is given"
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}",
      "description": "End of the search window, YYYY-MM-DDTHH:MM in the team time zone unless an offset is given"
    },
    "duration_minutes": {
      "type": "integer",
      "minimum": 5,
      "maximum": 1440,
      "description": "Meeting length in minutes"
    },
    "step_minutes": {
      "description": "Grid step, the meeting length by default",
      "type": "integer",
      "minimum": 5,
      "maximum": 1440
    },
    "together": {
      "description": "All members must be free at once, on by default",
      "type": "boolean"
    }
  },
  "required": [
    "member_ids",
    "from",
    "to",
    "duration_minutes"
  ],
  "additionalProperties": false
}
```

</details>

## Карточка события

`get_event` · только чтение

Описание для модели: Get one calendar event with participants and their replies.

**Параметры**

| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `event_id` | string | да | Event id. Длина: 1–64. |

<details>
<summary>JSON Schema параметров</summary>

```json
{
  "type": "object",
  "properties": {
    "event_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Event id"
    }
  },
  "required": [
    "event_id"
  ],
  "additionalProperties": false
}
```

</details>

## Пригласить гостя на событие

`invite_event_guest` · необратимое действие

Описание для модели: Invite an external guest to a calendar event by email. The guest receives an invitation by email. Team members are added with update_event instead.

**Параметры**

| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `event_id` | string | да | Event id. Длина: 1–64. |
| `name` | string | да | Guest name. Длина: 1–200. |
| `email` | string | да | Guest email. Длина: 3–320. |

<details>
<summary>JSON Schema параметров</summary>

```json
{
  "type": "object",
  "properties": {
    "event_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Event id"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Guest name"
    },
    "email": {
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "description": "Guest email"
    }
  },
  "required": [
    "event_id",
    "name",
    "email"
  ],
  "additionalProperties": false
}
```

</details>

## События календаря

`list_events` · только чтение

Описание для модели: List calendar events within a range of dates. Both dates are inclusive. Repeating events come as separate occurrences, the start of an occurrence identifies it in update_event and delete_event.

**Параметры**

| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `from` | string | да | First day, a calendar date YYYY-MM-DD. |
| `to` | string | да | Last day, a calendar date YYYY-MM-DD. |
| `mine` | boolean | нет | Only events of the current user. |
| `limit` | integer | нет | Maximum number of items to return, 50 by default. По умолчанию: `50`. Диапазон: 1–200. |

<details>
<summary>JSON Schema параметров</summary>

```json
{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First day, a calendar date YYYY-MM-DD"
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day, a calendar date YYYY-MM-DD"
    },
    "mine": {
      "description": "Only events of the current user",
      "type": "boolean"
    },
    "limit": {
      "default": 50,
      "description": "Maximum number of items to return, 50 by default",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false
}
```

</details>

## Изменить событие

`update_event` · изменяет данные

Описание для модели: Update or reschedule a calendar event. Pass only the fields to change, list fields to empty in clear. participant_ids replaces the whole list. For a repeating event choose the scope.

**Параметры**

| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `event_id` | string | да | Event id. Длина: 1–64. |
| `title` | string | нет | New title. Длина: 1–500. |
| `start` | string | нет | New start, YYYY-MM-DDTHH:MM in the team time zone, or YYYY-MM-DD for an all-day event. Длина: 10–40. |
| `end` | string | нет | New end, YYYY-MM-DDTHH:MM in the team time zone, or YYYY-MM-DD for an all-day event. Длина: 10–40. |
| `description` | string | нет | Description, plain text. Длина: до 20000. |
| `location` | string | нет | Place or meeting link. Длина: до 500. |
| `participant_ids` | массив string | нет | Participants, member ids from list_members. Элементов: 1–100. |
| `repeat_rule` | string | нет | Recurrence as RRULE, for example FREQ=WEEKLY;BYDAY=MO,WE. Длина: до 500. |
| `reminders_minutes` | массив integer | нет | Minutes before the start. Элементов: 1–10. |
| `visibility` | string | нет | Who sees the details. Значения: `Видно всем`, `Только занятость`, `Только участникам`. |
| `clear` | массив string | нет | Fields to empty. Элементов: от 1. |
| `scope` | string | нет | For a repeating event: one occurrence, it and later ones, or all. Значения: `this`, `following`, `all`. |
| `occurrence` | string | нет | Start of the occurrence the scope applies to, YYYY-MM-DDTHH:MM in the team time zone unless an offset is given. |

<details>
<summary>JSON Schema параметров</summary>

```json
{
  "type": "object",
  "properties": {
    "event_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Event id"
    },
    "title": {
      "description": "New title",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "start": {
      "description": "New start, YYYY-MM-DDTHH:MM in the team time zone, or YYYY-MM-DD for an all-day event",
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "end": {
      "description": "New end, YYYY-MM-DDTHH:MM in the team time zone, or YYYY-MM-DD for an all-day event",
      "type": "string",
      "minLength": 10,
      "maxLength": 40
    },
    "description": {
      "type": "string",
      "maxLength": 20000,
      "description": "Description, plain text"
    },
    "location": {
      "type": "string",
      "maxLength": 500,
      "description": "Place or meeting link"
    },
    "participant_ids": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "description": "Team member id"
      },
      "description": "Participants, member ids from list_members"
    },
    "repeat_rule": {
      "type": "string",
      "maxLength": 500,
      "description": "Recurrence as RRULE, for example FREQ=WEEKLY;BYDAY=MO,WE"
    },
    "reminders_minutes": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 40320
      },
      "description": "Minutes before the start"
    },
    "visibility": {
      "type": "string",
      "enum": [
        "Видно всем",
        "Только занятость",
        "Только участникам"
      ],
      "description": "Who sees the details"
    },
    "clear": {
      "description": "Fields to empty",
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "description",
          "end",
          "location",
          "participants",
          "repeat_rule",
          "reminders"
        ]
      }
    },
    "scope": {
      "description": "For a repeating event: one occurrence, it and later ones, or all",
      "type": "string",
      "enum": [
        "this",
        "following",
        "all"
      ]
    },
    "occurrence": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}",
      "description": "Start of the occurrence the scope applies to, YYYY-MM-DDTHH:MM in the team time zone unless an offset is given"
    }
  },
  "required": [
    "event_id"
  ],
  "additionalProperties": false
}
```

</details>
