Tool: create_event
Creates a calendar event.
Use this tool for queries like:
- Create an event on my calendar for tomorrow at 2pm called 'Meeting with Jane'.
- Schedule a meeting with john.doe@google.com next Monday from 10am to 11am.
Example:
create_event(
summary='Meeting with Jane',
start_time='2024-09-17T14:00:00',
end_time='2024-09-17T15:00:00'
)
# Creates an event on the primary calendar for September 17, 2024 from 2pm to 3pm called 'Meeting with Jane'.
The following sample demonstrate how to use curl to invoke the create_event MCP tool.
| Curl Request |
|---|
curl --location 'https://calendarmcp.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "create_event", "arguments": { // provide these details according to the tool MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Input Schema
Request message for CreateEvent.
CreateEventRequest
| JSON representation |
|---|
{
"summary": string,
"startTime": string,
"endTime": string,
"timeZone": string,
"attendeeEmails": [
string
],
"recurrenceData": [
string
],
"calendarId": string
"description": string
"location": string
"allDay": boolean
"notificationLevel": enum ( |
| Fields | |
|---|---|
summary |
Required. Title of the event. |
startTime |
Required. The start time of the event formatted as per ISO 8601. |
endTime |
Required. The end time of the event formatted as per ISO 8601. |
timeZone |
Required. Time zone of the event (formatted as an IANA Time Zone Database name, e.g. |
attendeeEmails[] |
Optional. The additional attendees of the event, as email addresses. |
recurrenceData[] |
Optional. The recurrence data of the event as |
Union field
|
|
calendarId |
Optional. The calendar ID to create the event on. The default is the user's primary calendar. |
Union field
|
|
description |
Optional. Description of the event. Can contain HTML. |
Union field
|
|
location |
Optional. Geographic location of the event as free-form text. |
Union field
|
|
allDay |
Optional. Whether the event is an all-day event. The default is False. If true, the start and end time must be set to midnight UTC. |
Union field
|
|
notificationLevel |
Optional. Which email notification should be sent for this event update. Possible values are:
|
Union field
|
|
addGoogleMeetUrl |
Optional. Allows to create a Google Meet url for the event. By default, no Google Meet url is created. No Google Meet url is created if Meet is disabled for the user, but the event creation will succeed. |
Union field
|
|
visibility |
Optional. Visibility of the event. Possible values are:
|
Union field
|
|
colorId |
Optional. The color of the event. This is an ID referring to an entry in the calendar's color palette. Event color ID (string
|
Output Schema
Event
| JSON representation |
|---|
{ "id": string, "status": string, "htmlLink": string, "created": string, "updated": string, "summary": string, "description": string, "location": string, "creator": { object ( |
| Fields | |
|---|---|
id |
Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules:
Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122. If you do not specify an ID, it will be automatically generated by the server. Note that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs. |
status |
Status of the event. Optional. Possible values are:
A cancelled status represents two different states depending on the event type:
On the organizer's calendar, cancelled events continue to expose event details (summary, location, etc.) so that they can be restored (undeleted). Similarly, the events to which the user was invited and that they manually removed continue to provide details. However, incremental sync requests with showDeleted set to false will not return these details. If an event changes its organizer (for example via the move operation) and the original organizer is not on the attendee list, it will leave behind a cancelled event where only the id field is guaranteed to be populated. |
htmlLink |
An absolute link to this event in the Google Calendar Web UI. Read-only. |
created |
Creation time of the event (as a ISO 8601 formatted timestamp). Read-only. |
updated |
Last modification time of the main event data (as a ISO 8601 formatted timestamp). Updating event reminders will not cause this to change. Read-only. |
summary |
Title of the event. |
description |
Description of the event. Can contain HTML. Optional. |
location |
Geographic location of the event as free-form text. Optional. |
creator |
The creator of the event. Read-only. |
organizer |
The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. Read-only. |
start |
The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance. |
end |
The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance. |
recurrence[] |
List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events. |
recurringEventId |
For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable. |
originalStartTime |
For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. It uniquely identifies the instance within the recurring event series even if the instance was moved to a different time. Immutable. |
transparency |
Whether the event blocks time on the calendar. Optional. Possible values are:
|
visibility |
Visibility of the event. Optional. Possible values are:
|
attendees[] |
The attendees of the event. |
eventType |
Specific type of the event. This cannot be modified after the event is created. Possible values are:
|
conferenceUrl |
The Google Meet link for the event. |
colorId |
Event color ID (string
In Google Calendar, event colors function as categories — settable per-event or per-series. Users may assign custom labels to colors in the web UI (e.g., |
Principal
| JSON representation |
|---|
{ "email": string, "displayName": string, "self": boolean } |
| Fields | |
|---|---|
email |
Email address of the principal (calendar). |
displayName |
The principal's name, if available. |
self |
Whether this principal corresponds to the calendar on which this copy of the event appears. Read-only. The default is False. |
DateOrDateTime
| JSON representation |
|---|
{ "date": string, "dateTime": string, "timeZone": string } |
| Fields | |
|---|---|
date |
An ISO 8601 formatted date at midnight UTC such as |
dateTime |
An ISO 8601 formatted timestamp such as |
timeZone |
TZDB timezone name if available. |
Attendee
| JSON representation |
|---|
{ "id": string, "email": string, "displayName": string, "organizer": boolean, "self": boolean, "resource": boolean, "optionalAttendee": boolean, "responseStatus": string, "comment": string, "additionalGuests": integer } |
| Fields | |
|---|---|
id |
The attendee's Profile ID, if available. |
email |
The attendee's email address, if available. This field must be present when adding an attendee. It must be a valid email address as per RFC5322. Required when adding an attendee. |
displayName |
The attendee's name, if available. Optional. |
organizer |
Whether the attendee is the organizer of the event. Read-only. The default is False. |
self |
Whether this entry represents the calendar on which this copy of the event appears. Read-only. The default is False. |
resource |
Whether the attendee is a resource. Can only be set when the attendee is added to the event for the first time. Subsequent modifications are ignored. Optional. The default is False. |
optionalAttendee |
Whether this is an optional attendee. Optional. The default is False. |
responseStatus |
The attendee's response status. Possible values are:
|
comment |
The attendee's response comment. Optional. |
additionalGuests |
Number of additional guests. Optional. The default is 0. |
Tool Annotations
Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ❌ | Open World Hint: ❌