Skip to content

Commit d16abec

Browse files
authored
Expand first-party Google Workspace support (#1663)
1 parent 586a9c0 commit d16abec

11 files changed

Lines changed: 324 additions & 31 deletions

File tree

apps/cloud/src/engine/execution-stack.ts

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,34 @@ export const CloudPluginsProvider: Layer.Layer<PluginsProvider> = Layer.succeed(
9494
*/
9595
export const CLOUD_MOUNT_PREFIX = "/api" as const;
9696

97-
// Initial Google launch boundary. Gmail uses gmail.modify for read, send, and
98-
// trash operations while immediate permanent deletion remains absent until the
99-
// broader mail.google.com scope is approved. Account-wide Drive remains absent.
100-
// The same scope source builds the catalog auth templates, preventing drift.
97+
// Consumer Google launch boundary. Keep this list aligned with the scopes
98+
// submitted for the Executor-owned production app: ordinary Workspace services
99+
// plus Photos, Meet, and Search Console. Admin, Classroom, YouTube, Apps Script,
100+
// BigQuery, and Cloud Resource Manager have materially different audiences or
101+
// provider requirements and remain BYO OAuth. The same scope source builds each
102+
// catalog auth template, preventing picker/start drift.
103+
const GOOGLE_FIRST_PARTY_PRESET_IDS = [
104+
"google-calendar",
105+
"google-meet",
106+
"google-gmail",
107+
"google-sheets",
108+
"google-drive",
109+
"google-docs",
110+
"google-slides",
111+
"google-forms",
112+
"google-tasks",
113+
"google-people",
114+
"google-photos-library",
115+
"google-photos-picker",
116+
"google-search-console",
117+
] as const;
118+
101119
const GOOGLE_FIRST_PARTY_ALLOWED_SCOPES: readonly string[] = [
102120
...new Set([
103-
...googleCatalogOAuthScopesForPreset("google-calendar"),
104-
...googleCatalogOAuthScopesForPreset("google-gmail"),
105-
...googleCatalogOAuthScopesForPreset("google-sheets"),
121+
...GOOGLE_FIRST_PARTY_PRESET_IDS.flatMap(googleCatalogOAuthScopesForPreset),
122+
// Connections created before the full-Gmail review retain this declared
123+
// scope on reconnect. New Gmail presets request `mail.google.com`.
124+
"https://www.googleapis.com/auth/gmail.modify",
106125
]),
107126
];
108127

apps/marketing/src/pages/about-executor.astro

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
const pageTitle = "Executor";
33
const pageDescription =
4-
"Executor is a web application that lets people connect AI assistants to Google Calendar, Gmail, Google Sheets, and other software, then control the actions those assistants can take.";
4+
"Executor is a web application that lets people connect AI assistants to Google Workspace, related Google services, and other software, then control the actions those assistants can take.";
55
---
66

77
<!doctype html>
@@ -106,9 +106,9 @@ const pageDescription =
106106
<section aria-labelledby="what-heading">
107107
<h2 id="what-heading">What Executor does</h2>
108108
<p>
109-
A person can use Executor to connect an AI assistant to services such as Google
110-
Calendar, Gmail, and Google Sheets. The person can then ask the assistant to manage a
111-
schedule, organize email, or update a spreadsheet through Executor.
109+
A person can use Executor to connect an AI assistant to Google Workspace and related
110+
Google services. The person can then ask the assistant to manage schedules, email,
111+
files, documents, contacts, tasks, meetings, photos, or website data through Executor.
112112
</p>
113113
<p>
114114
Executor performs only the actions the person requests and permits. It does not give an
@@ -125,8 +125,13 @@ const pageDescription =
125125
</p>
126126
<ul>
127127
<li><strong>Google Calendar:</strong> read calendars and events, or create, update, and remove events.</li>
128-
<li><strong>Gmail:</strong> read and search messages, compose and send mail, manage labels, archive messages, or move messages to trash.</li>
128+
<li><strong>Gmail:</strong> read and search messages, compose and send mail, manage labels, archive or trash messages, or permanently delete messages only when explicitly requested.</li>
129129
<li><strong>Google Sheets:</strong> read spreadsheet data and update cells, ranges, and worksheets.</li>
130+
<li><strong>Google Drive, Docs, Slides, and Forms:</strong> find and manage files and folders, edit documents and presentations, and create or read forms and responses.</li>
131+
<li><strong>Google Contacts and Tasks:</strong> read or update contacts and contact groups, read other contacts or an available Workspace directory, and manage task lists and tasks.</li>
132+
<li><strong>Google Meet:</strong> create and configure meeting spaces or read meeting records, participants, recordings, and transcripts.</li>
133+
<li><strong>Google Photos:</strong> upload and manage app-created media or read media explicitly selected through Google Photos Picker.</li>
134+
<li><strong>Google Search Console:</strong> inspect verified sites, sitemaps, indexed URLs, and search-performance data.</li>
130135
</ul>
131136
</section>
132137

apps/marketing/src/pages/google-oauth.astro

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ const googleServices = [
1313
index: "02",
1414
name: "Gmail",
1515
purpose:
16-
"Executor can read, search, compose, send, label, archive, and move messages to trash when you instruct an agent to work with your email.",
17-
scope: "googleapis.com/auth/gmail.modify",
16+
"Executor can read, search, compose, send, organize, trash, and permanently delete messages only when you explicitly instruct an agent to work with your email.",
17+
scope: "mail.google.com",
1818
},
1919
{
2020
index: "03",
@@ -23,12 +23,54 @@ const googleServices = [
2323
"Executor can read spreadsheet data and update cells, ranges, and worksheets when you ask an agent to work with a spreadsheet.",
2424
scope: "googleapis.com/auth/spreadsheets",
2525
},
26+
{
27+
index: "04",
28+
name: "Google Drive",
29+
purpose:
30+
"Executor can find, create, download, organize, share, or delete files and folders when you ask an agent to manage your Drive.",
31+
scope: "googleapis.com/auth/drive",
32+
},
33+
{
34+
index: "05",
35+
name: "Google Docs, Slides, and Forms",
36+
purpose:
37+
"Executor can read and edit documents and presentations, and create or read forms and responses, when you ask an agent to work with that content.",
38+
scope: "documents · presentations · forms.body · forms.responses.readonly",
39+
},
40+
{
41+
index: "06",
42+
name: "Google Contacts and Tasks",
43+
purpose:
44+
"Executor can read or update contacts and contact groups, read other contacts or an available Workspace directory, and manage task lists and tasks when you ask an agent to organize people or work.",
45+
scope: "contacts · contacts.other.readonly · directory.readonly · tasks",
46+
},
47+
{
48+
index: "07",
49+
name: "Google Meet",
50+
purpose:
51+
"Executor can create and configure meeting spaces or read meeting records, participants, recordings, and transcripts when you request meeting-related work.",
52+
scope: "meetings.space.created · readonly · settings",
53+
},
54+
{
55+
index: "08",
56+
name: "Google Photos",
57+
purpose:
58+
"Executor can upload and manage app-created media or read media that you explicitly select through Google Photos Picker.",
59+
scope: "photoslibrary.app-created read/write · photospicker.readonly",
60+
},
61+
{
62+
index: "09",
63+
name: "Google Search Console",
64+
purpose:
65+
"Executor can inspect verified sites, sitemaps, indexed URLs, and search-performance data when you request website analysis.",
66+
scope: "googleapis.com/auth/webmasters",
67+
},
2668
] as const;
2769
---
2870

2971
<Layout
3072
title="Executor"
31-
description="How Executor connects AI agents to Google Calendar, Gmail, and Google Sheets with your permission."
73+
description="How Executor connects AI agents to Google Workspace and related Google services with your permission."
3274
>
3375
<main class="google-page">
3476
<div class="grid-field" aria-hidden="true"></div>
@@ -57,7 +99,7 @@ const googleServices = [
5799
<h1>Executor</h1>
58100
<p class="hero-copy">
59101
Executor is an integration platform and MCP gateway for AI agents. It lets you
60-
securely connect Google Calendar, Gmail, and Google Sheets so an agent can read
102+
securely connect Google Workspace and related Google services so an agent can read
61103
data and take the actions <em>you request</em>.
62104
</p>
63105
<div class="hero-rule">

apps/marketing/src/pages/google-workspace.astro

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,38 @@ const services = [
88
{
99
name: "Gmail",
1010
description:
11-
"Read, search, compose, send, label, archive, or move messages to trash when you ask an agent to work with your email.",
11+
"Read, search, compose, send, label, archive, trash, or permanently delete messages when you explicitly ask an agent to work with your email.",
1212
},
1313
{
1414
name: "Google Sheets",
1515
description:
1616
"Read spreadsheet data and update cells, ranges, or worksheets when you ask an agent to work with a spreadsheet.",
1717
},
18+
{
19+
name: "Google Drive, Docs, Slides, and Forms",
20+
description:
21+
"Find and manage files and folders, edit documents and presentations, and create or read forms and responses when you ask an agent to work with them.",
22+
},
23+
{
24+
name: "Google Contacts and Tasks",
25+
description:
26+
"Read or update contacts and contact groups, read other contacts or an available Workspace directory, and manage task lists and tasks when you ask an agent to organize people or work.",
27+
},
28+
{
29+
name: "Google Meet",
30+
description:
31+
"Create and configure meeting spaces or read meeting records, participants, recordings, and transcripts when you request meeting-related work.",
32+
},
33+
{
34+
name: "Google Photos",
35+
description:
36+
"Upload and manage app-created photos or read media you explicitly select through Google Photos Picker.",
37+
},
38+
{
39+
name: "Google Search Console",
40+
description:
41+
"Read and manage verified sites, sitemaps, URL inspection results, and search-performance data when you request website analysis.",
42+
},
1843
] as const;
1944
---
2045

@@ -26,7 +51,7 @@ const services = [
2651
<meta name="robots" content="index, follow" />
2752
<meta
2853
name="description"
29-
content="Executor connects AI agents to Google Calendar, Gmail, and Google Sheets with your permission."
54+
content="Executor connects AI agents to Google Workspace and related Google services with your permission."
3055
/>
3156
<link rel="canonical" href="https://executor.sh/google-workspace" />
3257
<title>Executor</title>
@@ -134,7 +159,7 @@ const services = [
134159
<h1>Executor</h1>
135160
<p class="purpose">
136161
Executor is an integration platform and MCP gateway for AI agents. Executor lets you
137-
securely connect Google Calendar, Gmail, and Google Sheets so an agent can read your
162+
securely connect Google Workspace and related Google services so an agent can read your
138163
Google data and take only the actions you request.
139164
</p>
140165
</header>

apps/marketing/src/pages/privacy.astro

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,12 @@ import LegalLayout from "../components/LegalLayout.astro";
5757
<p>
5858
If you connect a Google Workspace service, Executor uses the permissions you grant to perform the actions you
5959
request through that integration. Depending on the service and permissions you choose, this may include accessing
60-
or modifying Google Calendar events, Google Sheets spreadsheets, Gmail messages, drafts, threads, attachments,
61-
labels, or other Google Workspace content. For Gmail, this can include reading and searching email, composing and
62-
sending messages, and organizing or moving messages to Trash when you request those actions.
60+
or modifying Google Calendar events; Gmail messages, drafts, threads, attachments, labels, and settings; Google
61+
Drive files and folders; Docs documents; Sheets spreadsheets; Slides presentations; Forms and responses; Contacts,
62+
other contacts, and an available Workspace directory; Tasks; Meet spaces, participants, recordings, and transcripts; app-created or user-selected Photos media; Search
63+
Console sites, sitemaps, indexed URLs, and performance data; or other Google content made available by the service
64+
you connect. For Gmail, this can include permanently deleting messages or threads only when you explicitly request
65+
that irreversible action.
6366
</p>
6467
<p>
6568
Executor stores OAuth credentials and connection metadata so the integration can continue working. It processes

0 commit comments

Comments
 (0)