> ## Documentation Index
> Fetch the complete documentation index at: https://docs.langmail.me/llms.txt
> Use this file to discover all available pages before exploring further.

# create_calendar_event

> Create a calendar event — or a recurring series — and send iMIP invitations to the attendees.

Creates an event with the authenticated user as organizer and sends standard iMIP invitations to all attendees. Pass `recurrence` to create a repeating series in the same call.

## Parameters

<ParamField body="title" type="string" required>
  Event title. 1–200 characters.
</ParamField>

<ParamField body="start" type="string" required>
  Start datetime, ISO 8601 with offset, e.g. `2026-07-14T10:00:00+02:00`. For a series, the first occurrence.
</ParamField>

<ParamField body="end" type="string" required>
  End datetime, ISO 8601 with offset. Must be after `start`.
</ParamField>

<ParamField body="attendees" type="string[]" required>
  1–50 attendee email addresses. Each receives an invitation.
</ParamField>

<ParamField body="calendarUrl" type="string">
  A CalDAV URL from [`list_calendars`](/reference/mcp/list-calendars). Defaults to the user's default calendar.
</ParamField>

<ParamField body="description" type="string">
  Event description, up to 5,000 characters.
</ParamField>

<ParamField body="location" type="string">
  Event location, up to 500 characters.
</ParamField>

<ParamField body="recurrence" type="string | object">
  Turns the event into a repeating series; omit for a one-off event. Two forms:

  **Structured object:**

  | Field       | Type                                           | Notes                                                                 |
  | ----------- | ---------------------------------------------- | --------------------------------------------------------------------- |
  | `frequency` | `"daily" \| "weekly" \| "monthly" \| "yearly"` | Required                                                              |
  | `interval`  | integer 1–1000                                 | Repeat every N periods; defaults to 1 (2 with `weekly` = fortnightly) |
  | `byDay`     | array of `MO` `TU` `WE` `TH` `FR` `SA` `SU`    | 1–7 weekday codes (RFC 5545)                                          |
  | `until`     | ISO 8601 with offset                           | Series stops after this instant. Mutually exclusive with `count`      |
  | `count`     | integer 1–1000                                 | Total occurrences. Mutually exclusive with `until`                    |

  **Raw RRULE string:** a single-line iCalendar RRULE starting with `FREQ=`, up to 1,000 characters, e.g. `FREQ=WEEKLY;BYDAY=TH` or `FREQ=DAILY;COUNT=10`. Express `UNTIL` as a UTC date-time (`UNTIL=20261231T000000Z`). Raw rules are only lightly validated — malformed rules surface as server errors.
</ParamField>

## Example

```json Call theme={null}
{
  "title": "Team standup",
  "start": "2026-07-13T09:00:00+02:00",
  "end": "2026-07-13T09:15:00+02:00",
  "attendees": ["team@example.com"],
  "recurrence": { "frequency": "weekly", "byDay": ["MO"] }
}
```

```text Result theme={null}
Recurring event "Team standup" created and invitations sent to 1 attendee(s): team@example.com.
uid: 3c1e9b2a-77aa-4d55-8a10-2f9d1c0e6b21@langmail.me
calendarUrl: https://mail.langmail.me/dav/cal/you/default/
```

Keep the returned `uid` — it identifies the event for updates, deletion, and RSVPs.

## Errors

* `Event end must be after its start.`
* `No calendar available to create the event in.` — the user has no calendar and none was specified.
* `Calendar not found: <url>` — the `calendarUrl` didn't resolve.
* ``Provide at most one of `until` or `count`, not both.`` — conflicting series bounds.
