Google Calendar
Performs Google Calendar operations - create, read, update, and delete events and calendars.
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
| Field | Type | Default | Description |
|---|---|---|---|
| Service Account JSON | secret | - | Google service account credentials JSON (required) |
| Delegate To | string | - | Email to impersonate via Domain-Wide Delegation |
| Action | select | - | The calendar operation to perform (required) |
| Calendar ID | string | primary | Target calendar ID (required) |
| Event ID | string | - | Event identifier for event-specific actions |
| Destination Calendar ID | string | - | Target calendar for move_event |
| Summary | string | - | Event title |
| Description | string | - | Event description text |
| Location | string | - | Event location |
| Start Time | string | - | Start time in RFC3339 format |
| End Time | string | - | End time in RFC3339 format |
| Time Zone | string | - | IANA time zone (e.g. America/New_York) |
| Attendees | string | - | Comma-separated attendee email addresses |
| Quick Add Text | string | - | Natural language text for quick_add_event |
| Query | string | - | Free text search for find_events |
| Max Results | integer | 25 | Maximum results to return |
| Send Updates | string | none | Notification policy: all, externalOnly, none |
| Recurrence | string | - | Comma-separated RRULE recurrence rules |
| Visibility | string | default | Event visibility: default, public, private, confidential |
| Add Google Meet | boolean | false | Auto-generate a Google Meet conference link |
| Calendar Name | string | - | 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).
Option A: OAuth Connection (recommended)
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
- Go to the Google Cloud Console
- Create a project or select an existing one
- Navigate to IAM & Admin > Service Accounts
- Click Create Service Account, give it a name, and click Done
- Click the service account, go to the Keys tab
- Click Add Key > Create new key > JSON
- Download the JSON key file
Step 2: Enable the Calendar API
- In Google Cloud Console, go to APIs & Services > Library
- Search for Google Calendar API and click Enable
Step 3: Store the Credentials
- Open the downloaded JSON key file and copy its entire contents
- In Qaynaq, go to Settings > Secrets
- Create a new secret (e.g. key:
GOOGLE_CALENDAR_SA) and paste the JSON as the value - In the Google Calendar processor, select
GOOGLE_CALENDAR_SAfrom the Service Account JSON dropdown
Domain-Wide Delegation (Google Workspace only)
To access other users' calendars in a Google Workspace domain:
- In Google Cloud Console, go to the service account details
- Enable Domain-Wide Delegation and note the Client ID
- In Google Workspace Admin Console, go to Security > API Controls > Domain-wide Delegation
- Add the Client ID with the scope
https://www.googleapis.com/auth/calendar - Set the Delegate To field to the email of the user whose calendar you want to access
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.
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
eventobject 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
countfield - find_or_create_event includes a
createdboolean field - delete_event returns
{deleted: true, event_id: "..."}
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.