Skip to main content

Google Calendar

Performs Google Calendar operations - create, read, update, and delete events and calendars.

MCP Tool Pack Available

Want to expose Google Calendar actions as MCP tools for AI assistants? Use the Google Calendar MCP Tool Pack to deploy all 13 tools in one step - no manual configuration needed.

Configuration

FieldTypeDefaultDescription
Service Account JSONsecret-Google service account credentials JSON (required)
Delegate Tostring-Email to impersonate via Domain-Wide Delegation
Actionselect-The calendar operation to perform (required)
Calendar IDstringprimaryTarget calendar ID (required)
Event IDstring-Event identifier for event-specific actions
Destination Calendar IDstring-Target calendar for move_event
Summarystring-Event title
Descriptionstring-Event description text
Locationstring-Event location
Start Timestring-Start time in RFC3339 format
End Timestring-End time in RFC3339 format
Time Zonestring-IANA time zone (e.g. America/New_York)
Attendeesstring-Comma-separated attendee email addresses
Quick Add Textstring-Natural language text for quick_add_event
Querystring-Free text search for find_events
Max Resultsinteger25Maximum results to return
Send UpdatesstringnoneNotification policy: all, externalOnly, none
Recurrencestring-Comma-separated RRULE recurrence rules
VisibilitystringdefaultEvent visibility: default, public, private, confidential
Add Google MeetbooleanfalseAuto-generate a Google Meet conference link
Calendar Namestring-Name for create_calendar

Authentication

This processor supports two authentication methods: OAuth Connection (recommended for personal accounts) and Service Account (for server-to-server automation).

OAuth lets you authorize Qaynaq to act as your Google account. Events are owned by you, using your quota. You authorize once and it works indefinitely.

Follow the Google OAuth Setup guide to create a connection. Make sure to enable the Google Calendar API and add the auth/calendar scope. Then select your connection from the OAuth Connection dropdown in the processor configuration.

Option B: Service Account

Service accounts are best for Google Workspace organizations with Domain-Wide Delegation.

Step 1: Create a Service Account

  1. Go to the Google Cloud Console
  2. Create a project or select an existing one
  3. Navigate to IAM & Admin > Service Accounts
  4. Click Create Service Account, give it a name, and click Done
  5. Click the service account, go to the Keys tab
  6. Click Add Key > Create new key > JSON
  7. Download the JSON key file

Step 2: Enable the Calendar API

  1. In Google Cloud Console, go to APIs & Services > Library
  2. Search for Google Calendar API and click Enable

Step 3: Store the Credentials

  1. Open the downloaded JSON key file and copy its entire contents
  2. In Qaynaq, go to Settings > Secrets
  3. Create a new secret (e.g. key: GOOGLE_CALENDAR_SA) and paste the JSON as the value
  4. In the Google Calendar processor, select GOOGLE_CALENDAR_SA from the Service Account JSON dropdown

Domain-Wide Delegation (Google Workspace only)

To access other users' calendars in a Google Workspace domain:

  1. In Google Cloud Console, go to the service account details
  2. Enable Domain-Wide Delegation and note the Client ID
  3. In Google Workspace Admin Console, go to Security > API Controls > Domain-wide Delegation
  4. Add the Client ID with the scope https://www.googleapis.com/auth/calendar
  5. Set the Delegate To field to the email of the user whose calendar you want to access
tip

Without Domain-Wide Delegation, the service account can only access calendars that have been explicitly shared with the service account's email address (found in the client_email field of the JSON key).

Actions

Create Detailed Event

Create an event by defining each field.

Quick Add Event

Create an event from a piece of text. Google parses the text for date, time, and description info.

Retrieve Event by ID

Finds a specific event by its ID in your calendar.

Delete Event

Deletes an event.

Update Event

Updates an event. Only filled fields are updated.

Add Attendee(s) to Event

Invites one or more person to an existing event.

Find Events

Finds events in your calendar. Returns up to 25 matching events.

Find or Create Events

Finds or creates events.

Find Busy Periods in Calendar

Finds busy time periods in your calendar for a specific timeframe.

Move Event to Another Calendar

Move an event from one calendar to another calendar.

Create Calendar

Creates a new calendar.

Get Calendar Information

Retrieve calendar properties including timezone, access permissions, default settings, and metadata.

Find Calendars

Get comprehensive list of calendars accessible to the user with their properties and access levels. Returns up to 250 matching calendars.

info

Create Calendar and Move Event to Another Calendar are only available with Domain-Wide Delegation on Google Workspace enterprise accounts.

Dynamic Fields

All action parameter fields support Bento interpolation functions, allowing dynamic values from message content using ${!this.field_name} syntax. This enables processing batches of events or reacting to upstream data. For example, setting Event ID to ${!this.event_id} will read the event ID from the incoming message.

Comma-separated fields (Attendees, Recurrence) also support interpolation. For example, set Attendees to ${!this.email} for a single attendee from the message, or ${!this.attendees.join(",")} for an array field.

Static fields (not interpolated): Service Account JSON, Delegate To, Action, Max Results, Add Google Meet.

Output Format

All actions return a structured JSON object:

  • Event actions return an event object containing the full Google Calendar event data (id, summary, start, end, attendees, etc.)
  • List actions (find_events, find_calendars, find_busy_periods) return an array and a count field
  • find_or_create_event includes a created boolean field
  • delete_event returns {deleted: true, event_id: "..."}
tip

Use a Mapping processor after Google Calendar to extract specific fields from the response, such as the event ID or the list of attendee responses.