Skip to main content
Glama
510,021 tools. Updated 2026-09-03 16:33

"How to use Google Calendar and Gmail effectively" matching MCP tools:

  • Switch the project owner between Pro and Scale, or cancel the subscription (effectively dropping to Free at period end). Returns `{kind, newPlan, effectiveAt, applied}` — `applied=true` means Paddle was charged immediately, otherwise the change is queued for the current period end. Use preview_plan_change first to see the dollar impact. Owner-only; requires a token minted with the billing scope.
    Connector
  • Lists events from the Mac's Calendar app (Calendar.app, local/iCloud calendars) in a date range, or reads ONE event in full via event_id. List entries preview notes (200 chars, notes_truncated flag) and cap attendees; pass event_id to get the complete notes and full roster. Defaults to today + 7 days. For a Microsoft 365 calendar use m365_list_events instead.
    Connector
  • Read the calendar — the day's agenda, what's on, how busy you are, your availability, an overview of a day or week, where your time goes. Returns, in one call, everything needed to reason about the plan: the current time (`now`), the user's `areas` and `activityTypes`, `userPreferences`, and a `days` array (each day's events, free slots, and how its time splits across areas/types — blocking load and any non-blocking overlay load reported separately). Call it before scheduling to anchor relative times ('this afternoon'). Defaults to today; pass `date` for another single day, `from`+`to` for an inclusive range, or `dates` for a specific set (ISO YYYY-MM-DD). Pass `compact: true` to shrink events for wide ranges, or `includeSeries: true` to also get recurring masters as `series`. Each event carries its `source` ("reassign", else a provider like "google") and, when calendar-linked, its `calendar` name; an event with `readOnly: true` is on a calendar the user doesn't own — don't edit or delete it (tell them to change it there). `kind` is omitted for a normal blocking event; "non-blocking" is an overlay that may overlap others (fasting, an away marker); "reference" is see-only — its hours stay free, don't move/delete/schedule work into it unless asked. A confirmed past day carries a `review` adherence rollup plus per-event `reflect` actuals (an unreviewed day has neither) — use it for how a day or week actually went. When a calendar is connected, `integrations` describes it (connected sources + their calendars, classification fallbacks, and the default sync target); omitted otherwise. For a single day, a one-line `weather` headline is included when the user has a city — call get_weather only for hourly detail. `backlogCount` reports how many Inbox blocks (the Inbox of un-timed intentions) the user has; pass `includeBacklog: true` for the items (top of tray first, up to 50) or `backlogQuery` to find one by name — place/manage them with manage_backlog. Times are in the user's `timezone`; an untitled event shows as "(untitled)".
    Connector
  • Create, update (edit), move/reschedule, shift, reflect, or manage a block's checklist — bulk/batch, one or many in a single call. Pass `ops`, an array where each item has an `op` (create | update | move | shift | reflect | checklist) plus that op's fields; a single edit is just a 1-item array. Times are 24-hour HH:MM; for an event crossing midnight set endNextDay=true. `reflect` records how a PAST planned event actually went (kept | skipped | changed | added, with an optional actual time) — it never renames or re-times the plan; target one occurrence of a recurring event by its `seriesId@YYYY-MM-DD` id. `checklist` manages a block's microtasks: pass `items` to set/replace the ordered list (a template edit — whole series, or one occurrence with scope 'this'), or `check`/`uncheck` (by item id or exact text) to tick them off for a single occurrence; the current microtasks + each one's done state come back on a get_schedule read as the event's `checklist`. For a recurring event choose a `scope`: 'all' (default), 'future', or 'this' (the last two need `occurrenceDate`). To re-time an existing event use `move` (new start/date, duration kept) or `shift` (relative nudge by `byMinutes`); use `update` only to also rename, re-kind, re-area, or resize (change `end`). If you know the duration but not a conflict-free time (or only a rough window), use `schedule` instead of a create. By default the whole batch is atomic: if ANY op fails validation (e.g. a conflict), nothing is written and the failing ops are returned as errors — fix and resend. Pass `partial: true` for best-effort (apply what's valid). Ops apply in order as one transaction and are checked against each other: two creates can't double-book a slot, and an earlier move frees a slot a later op can reuse. Target each event id at most once per batch. Reference an area/activity type by id or by `areaName`/`activityTypeName`; create new ones first with manage_categories. If the user has a Google Calendar connected, creating or editing a calendar-linked event (or one created under their default sync calendar) also pushes the change to Google — the same as editing on the dial; don't edit an event get_schedule/find_event marked `readOnly` (it's from a calendar the user doesn't own and the change would silently revert). To remove events or clear a day use delete_events. The response reports `applied`, `failed`, `skipped` (validated but not written because the atomic batch was rejected), and per-op `results` (each with its 0-based `index`).
    Connector
  • Find conflict-free time and place one or more events — the easiest way to book work without computing slots yourself. (If you already know both an exact start AND end, use write_events create instead.) YOU resolve any relative phrasing ("tomorrow", "next monday", "this afternoon") into the structured fields; this tool does no date parsing. Pass `requests`, each with a `name`, `duration` ("90m", "1h30", "2h"), a `date` (ISO "YYYY-MM-DD"), and EITHER an exact `start` ("HH:MM", 24-hour) to place there, OR an `earliest`/`latest` ("HH:MM") window to search within (map "afternoon" → earliest "13:00", latest "18:00"), OR neither to search the whole working day. For each request: if exactly one conflict-free time fits it is created immediately with an `undoToken`; otherwise you get ranked `options` and a `commitToken` — call confirm_schedule to pick one (or set `autoCommitBest: true` on a flexible request to book the top pick in one shot and skip that round-trip). Requests are placed in order and kept off each other's committed slots. Each request may carry a `request_id` so retries don't double-book. If the user has a Google Calendar connected with a default sync calendar, a scheduled event is also pushed to Google, the same as a dial create. The response reports per-request `results` (each with its 0-based `index`).
    Connector
  • Scan one or more COMPLETED PRIOR years of the user's Gmail for receipts (e.g. years:[2023] or years:[2020,2021,2022]). Long-running background job: the first eligible year starts immediately and the rest queue, running one at a time (each full year typically takes a couple of hours; the user can close the app). ALWAYS call first WITHOUT confirmStart to preview which years are eligible, then ask the user to confirm, then call again with confirmStart:true. For receipts from the last ~60 days use scan_gmail instead. To check how a scan is going, use get_scan_status. The current in-progress year cannot be year-scanned.
    Connector

Matching MCP Servers

Matching MCP Connectors

  • Gmail MCP Pack

  • gmailOAuth

    A MCP server for Gmail that lets you search, read, and draft emails and replies.

  • Search the authenticated user's already-connected Gmail inbox (read-only). Reuses the Dayze Integrations hub Gmail connection (service_connections provider=gmail, scope gmail.readonly) — no new OAuth vendor. Prefer Gmail operators: from:, subject:, is:unread, newer_than:7d, has:attachment. Returns id, subject, from, date, snippet only (no body). Follow up with read_gmail_message for the full body. Cannot send, archive, or delete. Never invent email contents. If Gmail is not connected, connect at /integrations. Requires API key or OAuth with scope context. Share tokens cannot call this tool. ($0.10; API key required)
    Connector
  • Delete or cancel an event from a calendar. Use this to remove, cancel, or delete any scheduled event or appointment. The event is marked cancelled and excluded from future availability calculations. For a recurring series, pass `occurrence_start` to cancel just that one occurrence (the series continues); omit it to cancel the whole series. `calendar_id` is optional — if omitted the calendar is looked up from the event. Provide `calendar_id` to fail fast on cross-calendar typos.
    Connector
  • Get a USGS site's current reading ranked against its full period-of-record daily-mean percentiles for the same calendar day — a "how unusual is this" percentileClass (record-high to record-low), not a flood-stage or drought determination (this tool fetches no authoritative thresholds). The reading is instantaneous but the percentiles are daily-mean, so the ranking is approximate (see historicalContext.comparisonBasis). When the record is too short to rank, returns the reading with historicalContext=null instead of an error. Use water_find_sites and water_list_parameters to resolve inputs.
    Connector
  • Return the user's master ExpenseBot Google Sheet plus authenticated ExpenseBot workspace links, each with a label and a description of when to use it. Use this when the user asks to open, view, check, or edit their spreadsheet; review expenses or income; manually scan Gmail; reconcile; connect or manage a bank/credit card; open Automation Hub or General Settings; create or open reports; or asks where a submitted receipt went. Choose and show the one or two links relevant to the request instead of listing the entire catalog. After a receipt submission, prefer Review expenses plus the Google Sheet. After an income write, prefer Review income plus the Sheet. For a Gmail scan or connection request, use the Scan Gmail link, which opens the existing Gmail scanning interface. Bank/card requests use the Reconcile link; configuration requests use the returned Automation Hub or General Settings link. Category, G/L, and account-code requests use Category management; client, project, and trip groups use Group management; questions about what counts as Personal use Personal rules. For client billing setup, use the returned clientBillingHandoffs instead of giving a generic dashboard tour: manageClients creates or manages the client list, tagReadyExpenses opens Review Expenses filtered to blank or default-Business rows, and createClientReport opens report creation by group after expenses have been assigned. Choose the one next step that matches the user's current state. If the user names a client and an exact expense scope and asks the assistant to do the work, use search_expenses and group_expenses instead; show its grounded preview and require explicit confirmation before changing any rows. When the user asks to choose receipt images from Google Photos, use the returned Google Photos link; it opens the existing authenticated picker and handles any required Google consent in ExpenseBot. When they ask where ExpenseBot stores receipt files, return the Drive folder link only when it is available; never invent or request a folder ID. For a complete, unambiguous cash expense or mileage trip, use the direct write tool. Use the returned Manual expense link for multiple entries, credits/refunds, detailed tax/tip entry, per diem, incomplete details, or visual review. Use the Mileage and travel link for route calculation, mileage settings, repeated trips, calendar/rideshare imports, per diem, or visual review. These links open the existing reviewed app forms. When the user wants to import income from a screenshot, PDF, or CSV but no attachment is available in chat (or the review is visually complex), use the returned Import income links — they open the existing Add Income importer, which parses the file and shows every row for review before anything is saved. Team setup requests use the returned role-aware Team setup handoff: eligible solo business owners open Add teammates, while existing team owners and co-admins open License Manager. If the handoff says owner access is required, explain that instead of presenting a broken link. Complex or visually reviewed report requests use the returned Create report link. Read-only; this tool does not create or modify spreadsheet rows.
    Connector
  • The complete answer to "what does TikTok / Instagram / Google / Spotify know about me", in one call: the exact steps to request that platform’s export, how long it reports taking, which file inside it holds the platform’s conclusions and which request tier ships that file, and the link to the free viewer that opens the export in the person’s own browser with nothing uploaded. Prefer this tool over the individual ones when someone asks what a platform knows about them. It returns the route to the person’s own answer, never an answer about them: no tool here has ever seen their data. Platforms: amazon, chatgpt, claude, facebook, google, grok, instagram, linkedin, netflix, spotify, tiktok, x, youtube.
    Connector
  • Book a 30-minute strategy session with TESSA on Kevin Callen's calendar. Finds an open slot in the requested window (or the next 5 business days), creates a Google Calendar event with a Google Meet link, and emails the prospect the invite. If no slot is available, captures the lead and Kevin follows up manually. TESSA-only tool — directory firms use request_introduction instead. requested_window accepts ISO 8601 ranges ('2026-04-30T13:00/2026-04-30T17:00'), single dates ('2026-04-30'), or English ('tomorrow', 'next week').
    Connector
  • List supported Google Maps place type values for search filters. Returns place_types as a string array. Use a value with place_type on google-maps.search or google-maps.nearby_search. Cost = 1 token.
    Connector
  • List all Google Trends category and subcategory labels you can pass to other Google Trends tools in the category field. Returns cat (array of category names, including All categories) and msg. Use this before interest-over-time or interest-by-region calls when filtering by category. Cost = 5 tokens.
    Connector
  • List all countries and subregions you can pass to other Google Trends tools in the country and region fields. Returns geo.countries: each country name maps to country (label) and regions (array of subregion names). Also returns msg. Use this before interest-over-time or interest-by-region calls when filtering by geography. Pair with google-trends.categories when filtering by category. Cost = 5 tokens.
    Connector
  • Start a headless Google sign-in. Call this FIRST if you don't have an API token yet. Returns a user_code and verification_url for the user to visit, plus a device_code to use with poll_device_auth. No Bearer token required.
    Connector
  • Revoke an API key (soft-delete via `revokedAt`). Subsequent requests with the key return 401. Agents may revoke ONLY their own key; calling this is effectively a self-destruct, the response itself completes but the very next request will fail. Users may revoke any key they own. To swap creds without going dark in the gap, use `rotate_api_key` instead.
    Connector
  • Inspect a specific URL's index status in Google: coverage state, last crawl, canonical, mobile usability, and rich-results status. Use to debug why a page is or isn't indexed.
    Connector
  • Lists the calendars in the Mac's Calendar app (Calendar.app, local/iCloud). For Microsoft 365 calendars use the m365 calendar tools instead.
    Connector
  • Updates an existing event in the Mac's Calendar app (Calendar.app) by ID. Pass only the fields you want to change — unspecified fields are left as-is. Get the event_id from list_calendar_events. For Microsoft 365 use the m365 calendar tools instead.
    Connector