All integrations

Google Calendar

GOOGLE WORKSPACE · CALENDAR

See availability and book time on the calendar that person owns.

Connect Google Calendar with Fabriq Developer

Your user consents at Google Calendar. The credential lands in a vault your agent cannot read, and the tool list it gets back is the intersection of that user’s grant and the agent’s own scopes.

provider “calendar”
from af_sdk import AgenticFabriq

af = AgenticFabriq()                      # reads AF_APP_ID / AF_APP_SECRET

url = await af.initiate_connection(request, provider="calendar")   # consent at Google Calendar
return redirect(url)

async with await af.for_user(request) as session:
    tools = await session.get_tools()     # only what this user granted

Provider names are surfaces, not vendors, and the authoritative list is the capabilities endpoint rather than any page including this one — an unknown name returns 400 with the valid list. Fabriq Developer is free to start and needs no provider paperwork. Start free or read the quickstart.

Connecting Google Calendar in practice

Reading a user’s calendar events is the example Google’s own verification page gives of a sensitive scope, so even a read-only scheduling agent needs verification before general users can connect, which Google says typically takes 3 to 5 business days. Calendar counts plain requests rather than quota units, and the per-minute quota is a sliding window, so a burst does not just fail, it throttles the following window too.

Scopes that draw scrutiny

  • https://www.googleapis.com/auth/calendar "See, edit, share, and permanently delete all the calendars you can access using Google Calendar". Google’s sensitive-scope verification page names this scope in its sample justification.
  • https://www.googleapis.com/auth/calendar.events "View and edit events on all your calendars", which covers every calendar the user can reach, not the one the agent was pointed at.
  • https://www.googleapis.com/auth/calendar.acls "See and change the sharing permissions of Google calendars you own", so an agent holding it can reshare a calendar outside the company.

Rate limits

  • 600 requests per minute per user per project.
  • 10,000 requests per minute per project.
  • 1,000,000 requests per day per project.
  • Quotas are calculated per minute using a sliding window, so a burst over the per-minute quota is rate limited during the next window as well.

Who has to approve

A Google Workspace admin decides per app, in Admin console API controls, whether it is Trusted, Limited, allowed specific Google data, or Blocked, and an app that has not been configured appears as an "Apps pending review" request resolved per organizational unit.

Worth knowing

  • The Calendar scopes page has only Scope and Meaning columns and never says which scopes are sensitive or restricted, unlike the Gmail and Drive pages, so the classification has to be read off the OAuth verification docs instead.
  • calendar.app.created sounds like a safe narrow scope but only covers secondary calendars the app itself made, so it cannot see the user’s primary calendar at all.
  • The External-plus-Testing 7-day refresh token expiry applies here too, which makes a pilot that worked last week fail on Monday.

Checked against Calendar API scopes (2026-09-29), Calendar API usage quotas (2026-09-29), Sensitive scope verification (2026-09-29), Refresh token expiration (2026-09-29)

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

google_calendar_create_calendarWRITE

Create a new calendar. Returns the new calendar's ID.

calendar
google_calendar_create_eventWRITE

Create a new calendar event. Returns the created event ID and details.

calendar
google_calendar_delete_calendarWRITE

Delete a calendar. WARNING: This deletes the calendar and all its events permanently. Cannot delete 'primary' calendar. IMPORTANT: You must first call google_calendar_list_calendars to get the calendar_id.

calendar
google_calendar_delete_eventWRITE

Delete a calendar event. WARNING: This cannot be undone. IMPORTANT: You must first call google_calendar_list_events to get the event_id.

calendar
google_calendar_get_calendarREAD

Get details about a specific calendar. IMPORTANT: Use 'primary' for the user's main calendar, or call google_calendar_list_calendars to get other calendar IDs.

calendar.readonly
google_calendar_get_eventREAD

Get full details about a specific calendar event, including title, start/end times, location, attendees (email and response status), organizer, creator, conferencing/Meet links, recurrence, attachments, and reminders. IMPORTANT: You must first call google_calendar_list_events to get the event_id.

calendar.readonly
google_calendar_list_calendarsREAD

List all calendars accessible to the user. Returns calendar IDs, names, and access roles.

calendar.readonly
google_calendar_list_eventsREAD

List calendar events from Google Calendar. Returns events with title, start/end times, location, attendees (with email and response status), organizer, conferencing/Meet links, and recurrence.

calendar.readonly
google_calendar_quick_addWRITE

Quickly create an event using natural language. Example: 'Meeting with John tomorrow at 3pm for 1 hour'.

calendar
google_calendar_update_eventWRITE

Update an existing calendar event. IMPORTANT: You must first call google_calendar_list_events to get the event_id.

calendar

Put Google Calendar behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.