This page covers the four Workspace data tools, how they are enabled, where their credentials live, and the honest state of the setup flow.
Tools
| Tool | Purpose | Actions | Key params |
|---|---|---|---|
google_calendar | List/manage calendar events | list, get, create, update, delete, search | event_id, summary, description, start, end, location, attendees, query, max_results, calendar_id |
google_contacts | Read-only contact lookup | search, list | query, max_results |
google_drive | Browse/read/create Drive files | list, search, read, info, create | file_id, query, name, content, mime_type, max_results |
google_tasks | Manage task lists and tasks | lists, tasks, create, complete, delete | tasklist_id, task_id, title, notes, due, max_results |
Notes:
google_calendarstart/endare ISO 8601 datetimes (e.g.2026-04-10T14:00:00+03:00).attendeesis a comma-separated list of email addresses.calendar_iddefaults toprimary.google_drivequeryuses Drive search syntax. Forcreate,mime_typedefaults totext/plain; useapplication/vnd.google-apps.documentto create a Google Doc.google_taskstasklist_iddefaults to@default.dueis an ISO 8601 date.google_contactsis read-only (search/list only).
API base URLs used: Calendar API v3, People API (contacts), Drive API v3, Tasks API v1.
Enabling the tools
email tool) register together, gated on the email channel being enabled β not on the integrations.googleWorkspace card.
{
"channels": {
"email": { "enabled": true }
}
}When channels.email.enabled is true, Flowly registers email,
google_calendar, google_contacts, google_drive, and google_tasks at agent
boot. Enabling the integrations.googleWorkspace card alone does not register
these native tools.
The integrations.googleWorkspace block is a separate, display/opt-in toggle:
{
"integrations": {
"googleWorkspace": {
"enabled": false,
"email": ""
}
}
}email here is display-only (the connected Google account address); enabled
flags the integration card. Neither field controls native-tool registration.
Credentials
The native tools authenticate with an OAuth 2.0 access token obtained via a refresh-token grant. The credentials file is read from:
~/.flowly/credentials/gmail.jsonIt contains refresh_token, client_id, and client_secret. Flowly exchanges
the refresh token at https://oauth2.googleapis.com/token for a short-lived
access token and sends Authorization: Bearer <token> on every API call. The
same token is shared across Gmail, Calendar, Contacts, Drive, and Tasks.
Unverified: The exact command/flow that writes gmail.json (including the requested OAuth scopes and the OAuth client configuration) is not present in this repository. The file appears to be produced by an external web/gateway OAuth flow (e.g. Flowly Cloud). If you do not have a gmail.json, obtain one through your Flowly Cloud account or the gateway's Google connect flow. The precise scope strings are not documented here because they are not defined in code we can cite β do not assume a specific scope set.
flowly setup google-workspace
A separate setup wizard exists:
flowly setup google-workspaceThis wizard installs and authenticates the Google Workspace CLI (gws):
- Installs
gwsvianpm install -g @googleworkspace/cli(Node.js required). - Installs the
gcloudCLI (Homebrew on macOS, apt on Linux) if missing. - Runs
gws auth setupthengws auth login. - On success, sets
integrations.googleWorkspace.enabled = true, records the detected account email, enables theexectool, and allowlists thegwsbinary so the agent can rungws *commands without per-command approval.
gws command-line path (driven through the exec tool), which is distinct from the native google_calendar/google_drive/google_contacts/google_tasks tools. The native tools still require channels.email.enabled and a valid ~/.flowly/credentials/gmail.json. Both paths can coexist.