@aaronsb/google-workspace-mcp 2.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +193 -0
- package/build/__helpers__/testSetup.d.ts +1 -0
- package/build/__helpers__/testSetup.js +6 -0
- package/build/__helpers__/testSetup.js.map +1 -0
- package/build/__tests__/accounts/credentials.test.d.ts +1 -0
- package/build/__tests__/accounts/credentials.test.js +129 -0
- package/build/__tests__/accounts/credentials.test.js.map +1 -0
- package/build/__tests__/accounts/registry.test.d.ts +1 -0
- package/build/__tests__/accounts/registry.test.js +74 -0
- package/build/__tests__/accounts/registry.test.js.map +1 -0
- package/build/__tests__/executor/errors.test.d.ts +1 -0
- package/build/__tests__/executor/errors.test.js +42 -0
- package/build/__tests__/executor/errors.test.js.map +1 -0
- package/build/__tests__/executor/gws.test.d.ts +1 -0
- package/build/__tests__/executor/gws.test.js +178 -0
- package/build/__tests__/executor/gws.test.js.map +1 -0
- package/build/__tests__/executor/paths.test.d.ts +1 -0
- package/build/__tests__/executor/paths.test.js +60 -0
- package/build/__tests__/executor/paths.test.js.map +1 -0
- package/build/__tests__/executor/workspace.test.d.ts +1 -0
- package/build/__tests__/executor/workspace.test.js +117 -0
- package/build/__tests__/executor/workspace.test.js.map +1 -0
- package/build/__tests__/factory/generator.test.d.ts +1 -0
- package/build/__tests__/factory/generator.test.js +178 -0
- package/build/__tests__/factory/generator.test.js.map +1 -0
- package/build/__tests__/factory/patch-coverage.test.d.ts +10 -0
- package/build/__tests__/factory/patch-coverage.test.js +148 -0
- package/build/__tests__/factory/patch-coverage.test.js.map +1 -0
- package/build/__tests__/factory/safety.test.d.ts +1 -0
- package/build/__tests__/factory/safety.test.js +107 -0
- package/build/__tests__/factory/safety.test.js.map +1 -0
- package/build/__tests__/integration/executor.test.d.ts +5 -0
- package/build/__tests__/integration/executor.test.js +46 -0
- package/build/__tests__/integration/executor.test.js.map +1 -0
- package/build/__tests__/integration/handlers.test.d.ts +6 -0
- package/build/__tests__/integration/handlers.test.js +95 -0
- package/build/__tests__/integration/handlers.test.js.map +1 -0
- package/build/__tests__/integration/setup.d.ts +19 -0
- package/build/__tests__/integration/setup.js +61 -0
- package/build/__tests__/integration/setup.js.map +1 -0
- package/build/__tests__/server/formatting/markdown.test.d.ts +1 -0
- package/build/__tests__/server/formatting/markdown.test.js +149 -0
- package/build/__tests__/server/formatting/markdown.test.js.map +1 -0
- package/build/__tests__/server/formatting/next-steps.test.d.ts +1 -0
- package/build/__tests__/server/formatting/next-steps.test.js +42 -0
- package/build/__tests__/server/formatting/next-steps.test.js.map +1 -0
- package/build/__tests__/server/handler.test.d.ts +1 -0
- package/build/__tests__/server/handler.test.js +97 -0
- package/build/__tests__/server/handler.test.js.map +1 -0
- package/build/__tests__/server/handlers/__mocks__/executor.d.ts +147 -0
- package/build/__tests__/server/handlers/__mocks__/executor.js +114 -0
- package/build/__tests__/server/handlers/__mocks__/executor.js.map +1 -0
- package/build/__tests__/server/handlers/accounts.test.d.ts +1 -0
- package/build/__tests__/server/handlers/accounts.test.js +127 -0
- package/build/__tests__/server/handlers/accounts.test.js.map +1 -0
- package/build/__tests__/server/handlers/calendar.test.d.ts +1 -0
- package/build/__tests__/server/handlers/calendar.test.js +95 -0
- package/build/__tests__/server/handlers/calendar.test.js.map +1 -0
- package/build/__tests__/server/handlers/drive.test.d.ts +1 -0
- package/build/__tests__/server/handlers/drive.test.js +81 -0
- package/build/__tests__/server/handlers/drive.test.js.map +1 -0
- package/build/__tests__/server/handlers/email.test.d.ts +1 -0
- package/build/__tests__/server/handlers/email.test.js +99 -0
- package/build/__tests__/server/handlers/email.test.js.map +1 -0
- package/build/__tests__/server/handlers/validate.test.d.ts +1 -0
- package/build/__tests__/server/handlers/validate.test.js +88 -0
- package/build/__tests__/server/handlers/validate.test.js.map +1 -0
- package/build/__tests__/server/queue.test.d.ts +1 -0
- package/build/__tests__/server/queue.test.js +194 -0
- package/build/__tests__/server/queue.test.js.map +1 -0
- package/build/__tests__/server/server.test.d.ts +7 -0
- package/build/__tests__/server/server.test.js +135 -0
- package/build/__tests__/server/server.test.js.map +1 -0
- package/build/__tests__/server/tools.test.d.ts +1 -0
- package/build/__tests__/server/tools.test.js +91 -0
- package/build/__tests__/server/tools.test.js.map +1 -0
- package/build/accounts/auth.d.ts +24 -0
- package/build/accounts/auth.js +118 -0
- package/build/accounts/auth.js.map +1 -0
- package/build/accounts/credentials.d.ts +11 -0
- package/build/accounts/credentials.js +52 -0
- package/build/accounts/credentials.js.map +1 -0
- package/build/accounts/index.d.ts +6 -0
- package/build/accounts/index.js +4 -0
- package/build/accounts/index.js.map +1 -0
- package/build/accounts/registry.d.ts +11 -0
- package/build/accounts/registry.js +62 -0
- package/build/accounts/registry.js.map +1 -0
- package/build/executor/errors.d.ts +15 -0
- package/build/executor/errors.js +37 -0
- package/build/executor/errors.js.map +1 -0
- package/build/executor/file-output.d.ts +23 -0
- package/build/executor/file-output.js +67 -0
- package/build/executor/file-output.js.map +1 -0
- package/build/executor/gws.d.ts +23 -0
- package/build/executor/gws.js +144 -0
- package/build/executor/gws.js.map +1 -0
- package/build/executor/index.d.ts +4 -0
- package/build/executor/index.js +4 -0
- package/build/executor/index.js.map +1 -0
- package/build/executor/paths.d.ts +6 -0
- package/build/executor/paths.js +25 -0
- package/build/executor/paths.js.map +1 -0
- package/build/executor/workspace.d.ts +38 -0
- package/build/executor/workspace.js +146 -0
- package/build/executor/workspace.js.map +1 -0
- package/build/factory/defaults.d.ts +8 -0
- package/build/factory/defaults.js +101 -0
- package/build/factory/defaults.js.map +1 -0
- package/build/factory/generator.d.ts +23 -0
- package/build/factory/generator.js +253 -0
- package/build/factory/generator.js.map +1 -0
- package/build/factory/manifest.yaml +852 -0
- package/build/factory/patches.d.ts +6 -0
- package/build/factory/patches.js +13 -0
- package/build/factory/patches.js.map +1 -0
- package/build/factory/registry.d.ts +12 -0
- package/build/factory/registry.js +18 -0
- package/build/factory/registry.js.map +1 -0
- package/build/factory/safety.d.ts +68 -0
- package/build/factory/safety.js +157 -0
- package/build/factory/safety.js.map +1 -0
- package/build/factory/types.d.ts +102 -0
- package/build/factory/types.js +6 -0
- package/build/factory/types.js.map +1 -0
- package/build/factory/yaml.d.ts +2 -0
- package/build/factory/yaml.js +3 -0
- package/build/factory/yaml.js.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +14 -0
- package/build/index.js.map +1 -0
- package/build/server/formatting/markdown.d.ts +21 -0
- package/build/server/formatting/markdown.js +324 -0
- package/build/server/formatting/markdown.js.map +1 -0
- package/build/server/formatting/next-steps.d.ts +9 -0
- package/build/server/formatting/next-steps.js +123 -0
- package/build/server/formatting/next-steps.js.map +1 -0
- package/build/server/handler.d.ts +3 -0
- package/build/server/handler.js +24 -0
- package/build/server/handler.js.map +1 -0
- package/build/server/handlers/accounts.d.ts +2 -0
- package/build/server/handlers/accounts.js +181 -0
- package/build/server/handlers/accounts.js.map +1 -0
- package/build/server/handlers/calendar.d.ts +2 -0
- package/build/server/handlers/calendar.js +93 -0
- package/build/server/handlers/calendar.js.map +1 -0
- package/build/server/handlers/drive.d.ts +2 -0
- package/build/server/handlers/drive.js +74 -0
- package/build/server/handlers/drive.js.map +1 -0
- package/build/server/handlers/email.d.ts +2 -0
- package/build/server/handlers/email.js +115 -0
- package/build/server/handlers/email.js.map +1 -0
- package/build/server/handlers/validate.d.ts +3 -0
- package/build/server/handlers/validate.js +22 -0
- package/build/server/handlers/validate.js.map +1 -0
- package/build/server/handlers/workspace.d.ts +9 -0
- package/build/server/handlers/workspace.js +110 -0
- package/build/server/handlers/workspace.js.map +1 -0
- package/build/server/index.d.ts +4 -0
- package/build/server/index.js +4 -0
- package/build/server/index.js.map +1 -0
- package/build/server/queue.d.ts +11 -0
- package/build/server/queue.js +141 -0
- package/build/server/queue.js.map +1 -0
- package/build/server/server.d.ts +3 -0
- package/build/server/server.js +214 -0
- package/build/server/server.js.map +1 -0
- package/build/server/tools.d.ts +13 -0
- package/build/server/tools.js +99 -0
- package/build/server/tools.js.map +1 -0
- package/build/services/calendar/patch.d.ts +11 -0
- package/build/services/calendar/patch.js +116 -0
- package/build/services/calendar/patch.js.map +1 -0
- package/build/services/drive/patch.d.ts +10 -0
- package/build/services/drive/patch.js +131 -0
- package/build/services/drive/patch.js.map +1 -0
- package/build/services/gmail/attachments.d.ts +19 -0
- package/build/services/gmail/attachments.js +90 -0
- package/build/services/gmail/attachments.js.map +1 -0
- package/build/services/gmail/patch.d.ts +10 -0
- package/build/services/gmail/patch.js +226 -0
- package/build/services/gmail/patch.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,852 @@
|
|
|
1
|
+
# Service manifest — declarative registry for the tool factory (ADR-300).
|
|
2
|
+
# Each entry produces one MCP tool via the generator.
|
|
3
|
+
# gws 0.13.3 — 6 services, 51 operations
|
|
4
|
+
#
|
|
5
|
+
# Note: People (contacts) and Meet are supported by gws but excluded here
|
|
6
|
+
# because gws auth login doesn't offer their required OAuth scopes.
|
|
7
|
+
# See https://github.com/googleworkspace/cli/issues/556
|
|
8
|
+
# Re-add when gws supports contacts.readonly and meetings.space.created scopes.
|
|
9
|
+
|
|
10
|
+
services:
|
|
11
|
+
gmail:
|
|
12
|
+
tool_name: manage_email
|
|
13
|
+
description: "Search, read, send, forward, or manage emails in a Google Workspace account. Supports Gmail search syntax."
|
|
14
|
+
requires_email: true
|
|
15
|
+
gws_service: gmail
|
|
16
|
+
operations:
|
|
17
|
+
|
|
18
|
+
# --- Core message operations ---
|
|
19
|
+
|
|
20
|
+
search:
|
|
21
|
+
type: list
|
|
22
|
+
description: "find emails by query"
|
|
23
|
+
resource: users.messages.list
|
|
24
|
+
params:
|
|
25
|
+
query:
|
|
26
|
+
type: string
|
|
27
|
+
description: 'Gmail search query (e.g. "from:alice subject:meeting has:attachment")'
|
|
28
|
+
maps_to: q
|
|
29
|
+
maxResults:
|
|
30
|
+
type: number
|
|
31
|
+
description: "Max results (default: 10, max: 50)"
|
|
32
|
+
default: 10
|
|
33
|
+
max: 50
|
|
34
|
+
defaults:
|
|
35
|
+
userId: me
|
|
36
|
+
hydration:
|
|
37
|
+
resource: users.messages.get
|
|
38
|
+
format: metadata
|
|
39
|
+
headers: [From, Subject, Date]
|
|
40
|
+
|
|
41
|
+
read:
|
|
42
|
+
type: detail
|
|
43
|
+
description: "get full email by ID"
|
|
44
|
+
resource: users.messages.get
|
|
45
|
+
params:
|
|
46
|
+
messageId:
|
|
47
|
+
type: string
|
|
48
|
+
description: "Email message ID"
|
|
49
|
+
required: true
|
|
50
|
+
maps_to: id
|
|
51
|
+
defaults:
|
|
52
|
+
userId: me
|
|
53
|
+
|
|
54
|
+
send:
|
|
55
|
+
type: action
|
|
56
|
+
description: "compose and send a new email"
|
|
57
|
+
helper: "+send"
|
|
58
|
+
params:
|
|
59
|
+
to:
|
|
60
|
+
type: string
|
|
61
|
+
description: "Recipient email(s), comma-separated"
|
|
62
|
+
required: true
|
|
63
|
+
subject:
|
|
64
|
+
type: string
|
|
65
|
+
description: "Email subject line"
|
|
66
|
+
required: true
|
|
67
|
+
body:
|
|
68
|
+
type: string
|
|
69
|
+
description: "Email body text"
|
|
70
|
+
required: true
|
|
71
|
+
cc:
|
|
72
|
+
type: string
|
|
73
|
+
description: "CC email(s), comma-separated"
|
|
74
|
+
bcc:
|
|
75
|
+
type: string
|
|
76
|
+
description: "BCC email(s), comma-separated"
|
|
77
|
+
cli_args:
|
|
78
|
+
to: "--to"
|
|
79
|
+
subject: "--subject"
|
|
80
|
+
body: "--body"
|
|
81
|
+
cc: "--cc"
|
|
82
|
+
bcc: "--bcc"
|
|
83
|
+
|
|
84
|
+
reply:
|
|
85
|
+
type: action
|
|
86
|
+
description: "reply to a message (thread-aware)"
|
|
87
|
+
helper: "+reply"
|
|
88
|
+
params:
|
|
89
|
+
messageId:
|
|
90
|
+
type: string
|
|
91
|
+
description: "Message ID to reply to"
|
|
92
|
+
required: true
|
|
93
|
+
body:
|
|
94
|
+
type: string
|
|
95
|
+
description: "Reply body text"
|
|
96
|
+
required: true
|
|
97
|
+
cli_args:
|
|
98
|
+
messageId: "--message-id"
|
|
99
|
+
body: "--body"
|
|
100
|
+
|
|
101
|
+
replyAll:
|
|
102
|
+
type: action
|
|
103
|
+
description: "reply-all to a message (thread-aware, includes all recipients)"
|
|
104
|
+
helper: "+reply-all"
|
|
105
|
+
params:
|
|
106
|
+
messageId:
|
|
107
|
+
type: string
|
|
108
|
+
description: "Message ID to reply to"
|
|
109
|
+
required: true
|
|
110
|
+
body:
|
|
111
|
+
type: string
|
|
112
|
+
description: "Reply body text"
|
|
113
|
+
required: true
|
|
114
|
+
cc:
|
|
115
|
+
type: string
|
|
116
|
+
description: "Additional CC email(s), comma-separated"
|
|
117
|
+
cli_args:
|
|
118
|
+
messageId: "--message-id"
|
|
119
|
+
body: "--body"
|
|
120
|
+
cc: "--cc"
|
|
121
|
+
|
|
122
|
+
forward:
|
|
123
|
+
type: action
|
|
124
|
+
description: "forward a message to new recipients"
|
|
125
|
+
helper: "+forward"
|
|
126
|
+
params:
|
|
127
|
+
messageId:
|
|
128
|
+
type: string
|
|
129
|
+
description: "Message ID to forward"
|
|
130
|
+
required: true
|
|
131
|
+
to:
|
|
132
|
+
type: string
|
|
133
|
+
description: "Recipient email(s), comma-separated"
|
|
134
|
+
required: true
|
|
135
|
+
body:
|
|
136
|
+
type: string
|
|
137
|
+
description: "Optional note to prepend above forwarded message"
|
|
138
|
+
cli_args:
|
|
139
|
+
messageId: "--message-id"
|
|
140
|
+
to: "--to"
|
|
141
|
+
body: "--body"
|
|
142
|
+
|
|
143
|
+
# --- Inbox management ---
|
|
144
|
+
|
|
145
|
+
triage:
|
|
146
|
+
type: list
|
|
147
|
+
description: "unread inbox summary (sender, subject, date)"
|
|
148
|
+
helper: "+triage"
|
|
149
|
+
|
|
150
|
+
trash:
|
|
151
|
+
type: action
|
|
152
|
+
description: "move a message to trash"
|
|
153
|
+
resource: users.messages.trash
|
|
154
|
+
params:
|
|
155
|
+
messageId:
|
|
156
|
+
type: string
|
|
157
|
+
description: "Message ID to trash"
|
|
158
|
+
required: true
|
|
159
|
+
maps_to: id
|
|
160
|
+
defaults:
|
|
161
|
+
userId: me
|
|
162
|
+
|
|
163
|
+
untrash:
|
|
164
|
+
type: action
|
|
165
|
+
description: "restore a message from trash"
|
|
166
|
+
resource: users.messages.untrash
|
|
167
|
+
params:
|
|
168
|
+
messageId:
|
|
169
|
+
type: string
|
|
170
|
+
description: "Message ID to restore"
|
|
171
|
+
required: true
|
|
172
|
+
maps_to: id
|
|
173
|
+
defaults:
|
|
174
|
+
userId: me
|
|
175
|
+
|
|
176
|
+
getAttachment:
|
|
177
|
+
type: detail
|
|
178
|
+
description: "download an email attachment to workspace directory (use read first to see attachment list)"
|
|
179
|
+
resource: users.messages.attachments.get
|
|
180
|
+
params:
|
|
181
|
+
messageId:
|
|
182
|
+
type: string
|
|
183
|
+
description: "Message ID containing the attachment"
|
|
184
|
+
required: true
|
|
185
|
+
filename:
|
|
186
|
+
type: string
|
|
187
|
+
description: "Filename to save as (from the read response, e.g. 'invoice_template.md')"
|
|
188
|
+
required: true
|
|
189
|
+
defaults:
|
|
190
|
+
userId: me
|
|
191
|
+
|
|
192
|
+
modify:
|
|
193
|
+
type: action
|
|
194
|
+
description: "add or remove labels on a message (e.g. archive, mark read/unread)"
|
|
195
|
+
resource: users.messages.modify
|
|
196
|
+
params:
|
|
197
|
+
messageId:
|
|
198
|
+
type: string
|
|
199
|
+
description: "Message ID to modify"
|
|
200
|
+
required: true
|
|
201
|
+
maps_to: id
|
|
202
|
+
addLabelIds:
|
|
203
|
+
type: string
|
|
204
|
+
description: "Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123)"
|
|
205
|
+
removeLabelIds:
|
|
206
|
+
type: string
|
|
207
|
+
description: "Comma-separated label IDs to remove (e.g. UNREAD, INBOX to archive)"
|
|
208
|
+
defaults:
|
|
209
|
+
userId: me
|
|
210
|
+
|
|
211
|
+
# --- Labels ---
|
|
212
|
+
|
|
213
|
+
labels:
|
|
214
|
+
type: list
|
|
215
|
+
description: "list all labels in the mailbox"
|
|
216
|
+
resource: users.labels.list
|
|
217
|
+
defaults:
|
|
218
|
+
userId: me
|
|
219
|
+
|
|
220
|
+
# --- Threads ---
|
|
221
|
+
|
|
222
|
+
threads:
|
|
223
|
+
type: list
|
|
224
|
+
description: "list email threads by query"
|
|
225
|
+
resource: users.threads.list
|
|
226
|
+
params:
|
|
227
|
+
query:
|
|
228
|
+
type: string
|
|
229
|
+
description: "Gmail search query to filter threads"
|
|
230
|
+
maps_to: q
|
|
231
|
+
maxResults:
|
|
232
|
+
type: number
|
|
233
|
+
description: "Max threads to return (default: 10, max: 50)"
|
|
234
|
+
default: 10
|
|
235
|
+
max: 50
|
|
236
|
+
defaults:
|
|
237
|
+
userId: me
|
|
238
|
+
|
|
239
|
+
getThread:
|
|
240
|
+
type: detail
|
|
241
|
+
description: "get all messages in a thread"
|
|
242
|
+
resource: users.threads.get
|
|
243
|
+
params:
|
|
244
|
+
threadId:
|
|
245
|
+
type: string
|
|
246
|
+
description: "Thread ID to retrieve"
|
|
247
|
+
required: true
|
|
248
|
+
maps_to: id
|
|
249
|
+
defaults:
|
|
250
|
+
userId: me
|
|
251
|
+
format: metadata
|
|
252
|
+
metadataHeaders: "From,Subject,Date,To"
|
|
253
|
+
|
|
254
|
+
calendar:
|
|
255
|
+
tool_name: manage_calendar
|
|
256
|
+
description: "List events, view agenda, check availability, or manage calendar events."
|
|
257
|
+
requires_email: true
|
|
258
|
+
gws_service: calendar
|
|
259
|
+
operations:
|
|
260
|
+
|
|
261
|
+
# --- Event viewing ---
|
|
262
|
+
|
|
263
|
+
list:
|
|
264
|
+
type: list
|
|
265
|
+
description: "upcoming events on primary calendar"
|
|
266
|
+
resource: events.list
|
|
267
|
+
params:
|
|
268
|
+
timeMin:
|
|
269
|
+
type: string
|
|
270
|
+
description: "Start of range (ISO 8601) — defaults to today"
|
|
271
|
+
timeMax:
|
|
272
|
+
type: string
|
|
273
|
+
description: "End of range (ISO 8601)"
|
|
274
|
+
maxResults:
|
|
275
|
+
type: number
|
|
276
|
+
description: "Max events (default: 10, max: 50)"
|
|
277
|
+
default: 10
|
|
278
|
+
max: 50
|
|
279
|
+
query:
|
|
280
|
+
type: string
|
|
281
|
+
description: "Free-text search terms to filter events"
|
|
282
|
+
maps_to: q
|
|
283
|
+
defaults:
|
|
284
|
+
calendarId: primary
|
|
285
|
+
singleEvents: true
|
|
286
|
+
orderBy: startTime
|
|
287
|
+
|
|
288
|
+
agenda:
|
|
289
|
+
type: list
|
|
290
|
+
description: "today's schedule at a glance (all calendars)"
|
|
291
|
+
helper: "+agenda"
|
|
292
|
+
|
|
293
|
+
get:
|
|
294
|
+
type: detail
|
|
295
|
+
description: "full event details by ID"
|
|
296
|
+
resource: events.get
|
|
297
|
+
params:
|
|
298
|
+
eventId:
|
|
299
|
+
type: string
|
|
300
|
+
description: "Event ID"
|
|
301
|
+
required: true
|
|
302
|
+
defaults:
|
|
303
|
+
calendarId: primary
|
|
304
|
+
|
|
305
|
+
# --- Event management ---
|
|
306
|
+
|
|
307
|
+
create:
|
|
308
|
+
type: action
|
|
309
|
+
description: "create a new calendar event"
|
|
310
|
+
helper: "+insert"
|
|
311
|
+
params:
|
|
312
|
+
summary:
|
|
313
|
+
type: string
|
|
314
|
+
description: "Event title"
|
|
315
|
+
required: true
|
|
316
|
+
start:
|
|
317
|
+
type: string
|
|
318
|
+
description: "Start time (ISO 8601)"
|
|
319
|
+
required: true
|
|
320
|
+
end:
|
|
321
|
+
type: string
|
|
322
|
+
description: "End time (ISO 8601)"
|
|
323
|
+
required: true
|
|
324
|
+
description:
|
|
325
|
+
type: string
|
|
326
|
+
description: "Event description or notes"
|
|
327
|
+
location:
|
|
328
|
+
type: string
|
|
329
|
+
description: "Event location"
|
|
330
|
+
attendees:
|
|
331
|
+
type: string
|
|
332
|
+
description: "Comma-separated attendee emails"
|
|
333
|
+
cli_args:
|
|
334
|
+
summary: "--summary"
|
|
335
|
+
start: "--start"
|
|
336
|
+
end: "--end"
|
|
337
|
+
description: "--description"
|
|
338
|
+
location: "--location"
|
|
339
|
+
attendees: "--attendees"
|
|
340
|
+
|
|
341
|
+
quickAdd:
|
|
342
|
+
type: action
|
|
343
|
+
description: "create event from natural language (e.g. 'Lunch with Alice tomorrow at noon')"
|
|
344
|
+
resource: events.quickAdd
|
|
345
|
+
params:
|
|
346
|
+
text:
|
|
347
|
+
type: string
|
|
348
|
+
description: "Natural language event description"
|
|
349
|
+
required: true
|
|
350
|
+
defaults:
|
|
351
|
+
calendarId: primary
|
|
352
|
+
|
|
353
|
+
update:
|
|
354
|
+
type: action
|
|
355
|
+
description: "update an existing event (patch semantics — only changed fields needed)"
|
|
356
|
+
resource: events.patch
|
|
357
|
+
params:
|
|
358
|
+
eventId:
|
|
359
|
+
type: string
|
|
360
|
+
description: "Event ID to update"
|
|
361
|
+
required: true
|
|
362
|
+
summary:
|
|
363
|
+
type: string
|
|
364
|
+
description: "Updated event title"
|
|
365
|
+
start:
|
|
366
|
+
type: string
|
|
367
|
+
description: "Updated start time (ISO 8601)"
|
|
368
|
+
end:
|
|
369
|
+
type: string
|
|
370
|
+
description: "Updated end time (ISO 8601)"
|
|
371
|
+
description:
|
|
372
|
+
type: string
|
|
373
|
+
description: "Updated description"
|
|
374
|
+
location:
|
|
375
|
+
type: string
|
|
376
|
+
description: "Updated location"
|
|
377
|
+
defaults:
|
|
378
|
+
calendarId: primary
|
|
379
|
+
|
|
380
|
+
delete:
|
|
381
|
+
type: action
|
|
382
|
+
description: "delete an event"
|
|
383
|
+
resource: events.delete
|
|
384
|
+
params:
|
|
385
|
+
eventId:
|
|
386
|
+
type: string
|
|
387
|
+
description: "Event ID to delete"
|
|
388
|
+
required: true
|
|
389
|
+
defaults:
|
|
390
|
+
calendarId: primary
|
|
391
|
+
|
|
392
|
+
# --- Calendar management ---
|
|
393
|
+
|
|
394
|
+
calendars:
|
|
395
|
+
type: list
|
|
396
|
+
description: "list all calendars the user has access to"
|
|
397
|
+
resource: calendarList.list
|
|
398
|
+
|
|
399
|
+
freebusy:
|
|
400
|
+
type: detail
|
|
401
|
+
description: "check availability (free/busy) for a time range"
|
|
402
|
+
resource: freebusy.query
|
|
403
|
+
params:
|
|
404
|
+
timeMin:
|
|
405
|
+
type: string
|
|
406
|
+
description: "Start of range (ISO 8601)"
|
|
407
|
+
required: true
|
|
408
|
+
timeMax:
|
|
409
|
+
type: string
|
|
410
|
+
description: "End of range (ISO 8601)"
|
|
411
|
+
required: true
|
|
412
|
+
|
|
413
|
+
drive:
|
|
414
|
+
tool_name: manage_drive
|
|
415
|
+
description: "Search, upload, download, share, or manage files in Google Drive."
|
|
416
|
+
requires_email: true
|
|
417
|
+
gws_service: drive
|
|
418
|
+
operations:
|
|
419
|
+
|
|
420
|
+
# --- File discovery ---
|
|
421
|
+
|
|
422
|
+
search:
|
|
423
|
+
type: list
|
|
424
|
+
description: "find files by query"
|
|
425
|
+
resource: files.list
|
|
426
|
+
params:
|
|
427
|
+
query:
|
|
428
|
+
type: string
|
|
429
|
+
description: "Drive search query (e.g. \"name contains 'budget'\" or \"mimeType='application/pdf'\")"
|
|
430
|
+
maps_to: q
|
|
431
|
+
maxResults:
|
|
432
|
+
type: number
|
|
433
|
+
description: "Max results (default: 10, max: 50)"
|
|
434
|
+
default: 10
|
|
435
|
+
max: 50
|
|
436
|
+
maps_to: pageSize
|
|
437
|
+
defaults:
|
|
438
|
+
fields: "files(id, name, mimeType, modifiedTime, size, webViewLink)"
|
|
439
|
+
|
|
440
|
+
get:
|
|
441
|
+
type: detail
|
|
442
|
+
description: "get file metadata"
|
|
443
|
+
resource: files.get
|
|
444
|
+
params:
|
|
445
|
+
fileId:
|
|
446
|
+
type: string
|
|
447
|
+
description: "File ID"
|
|
448
|
+
required: true
|
|
449
|
+
defaults:
|
|
450
|
+
fields: "id, name, mimeType, modifiedTime, size, webViewLink, owners, shared, parents"
|
|
451
|
+
|
|
452
|
+
# --- File operations ---
|
|
453
|
+
|
|
454
|
+
upload:
|
|
455
|
+
type: action
|
|
456
|
+
description: "upload a local file to Drive"
|
|
457
|
+
helper: "+upload"
|
|
458
|
+
params:
|
|
459
|
+
filePath:
|
|
460
|
+
type: string
|
|
461
|
+
description: "Local file path to upload"
|
|
462
|
+
required: true
|
|
463
|
+
name:
|
|
464
|
+
type: string
|
|
465
|
+
description: "File name in Drive (defaults to local name)"
|
|
466
|
+
parentFolderId:
|
|
467
|
+
type: string
|
|
468
|
+
description: "Destination folder ID"
|
|
469
|
+
cli_args:
|
|
470
|
+
name: "--name"
|
|
471
|
+
parentFolderId: "--parent"
|
|
472
|
+
|
|
473
|
+
download:
|
|
474
|
+
type: detail
|
|
475
|
+
description: "download file content to local path"
|
|
476
|
+
resource: files.get
|
|
477
|
+
params:
|
|
478
|
+
fileId:
|
|
479
|
+
type: string
|
|
480
|
+
description: "File ID to download"
|
|
481
|
+
required: true
|
|
482
|
+
outputPath:
|
|
483
|
+
type: string
|
|
484
|
+
description: "Local path to save the file"
|
|
485
|
+
defaults:
|
|
486
|
+
alt: media
|
|
487
|
+
|
|
488
|
+
copy:
|
|
489
|
+
type: action
|
|
490
|
+
description: "create a copy of a file"
|
|
491
|
+
resource: files.copy
|
|
492
|
+
params:
|
|
493
|
+
fileId:
|
|
494
|
+
type: string
|
|
495
|
+
description: "File ID to copy"
|
|
496
|
+
required: true
|
|
497
|
+
name:
|
|
498
|
+
type: string
|
|
499
|
+
description: "Name for the copy"
|
|
500
|
+
|
|
501
|
+
delete:
|
|
502
|
+
type: action
|
|
503
|
+
description: "permanently delete a file (cannot be undone)"
|
|
504
|
+
resource: files.delete
|
|
505
|
+
params:
|
|
506
|
+
fileId:
|
|
507
|
+
type: string
|
|
508
|
+
description: "File ID to delete"
|
|
509
|
+
required: true
|
|
510
|
+
|
|
511
|
+
export:
|
|
512
|
+
type: action
|
|
513
|
+
description: "export a Google Workspace document (Docs, Sheets, Slides) to a file format"
|
|
514
|
+
resource: files.export
|
|
515
|
+
params:
|
|
516
|
+
fileId:
|
|
517
|
+
type: string
|
|
518
|
+
description: "File ID to export"
|
|
519
|
+
required: true
|
|
520
|
+
mimeType:
|
|
521
|
+
type: string
|
|
522
|
+
description: "Target format (e.g. application/pdf, text/csv, text/plain, application/vnd.openxmlformats-officedocument.wordprocessingml.document)"
|
|
523
|
+
required: true
|
|
524
|
+
outputPath:
|
|
525
|
+
type: string
|
|
526
|
+
description: "Local path to save exported file"
|
|
527
|
+
|
|
528
|
+
# --- Sharing ---
|
|
529
|
+
|
|
530
|
+
listPermissions:
|
|
531
|
+
type: list
|
|
532
|
+
description: "list sharing permissions on a file"
|
|
533
|
+
resource: permissions.list
|
|
534
|
+
params:
|
|
535
|
+
fileId:
|
|
536
|
+
type: string
|
|
537
|
+
description: "File ID"
|
|
538
|
+
required: true
|
|
539
|
+
|
|
540
|
+
share:
|
|
541
|
+
type: action
|
|
542
|
+
description: "share a file with a user or group"
|
|
543
|
+
resource: permissions.create
|
|
544
|
+
params:
|
|
545
|
+
fileId:
|
|
546
|
+
type: string
|
|
547
|
+
description: "File ID to share"
|
|
548
|
+
required: true
|
|
549
|
+
shareEmail:
|
|
550
|
+
type: string
|
|
551
|
+
description: "Email address to share with"
|
|
552
|
+
required: true
|
|
553
|
+
role:
|
|
554
|
+
type: string
|
|
555
|
+
description: "Permission level"
|
|
556
|
+
enum: [reader, commenter, writer, organizer]
|
|
557
|
+
default: reader
|
|
558
|
+
|
|
559
|
+
unshare:
|
|
560
|
+
type: action
|
|
561
|
+
description: "remove sharing permission from a file"
|
|
562
|
+
resource: permissions.delete
|
|
563
|
+
params:
|
|
564
|
+
fileId:
|
|
565
|
+
type: string
|
|
566
|
+
description: "File ID"
|
|
567
|
+
required: true
|
|
568
|
+
permissionId:
|
|
569
|
+
type: string
|
|
570
|
+
description: "Permission ID to remove (from listPermissions)"
|
|
571
|
+
required: true
|
|
572
|
+
|
|
573
|
+
# ========================================================================
|
|
574
|
+
# Sheets
|
|
575
|
+
# ========================================================================
|
|
576
|
+
|
|
577
|
+
sheets:
|
|
578
|
+
tool_name: manage_sheets
|
|
579
|
+
description: "Read, write, and manage Google Sheets spreadsheets."
|
|
580
|
+
requires_email: true
|
|
581
|
+
gws_service: sheets
|
|
582
|
+
operations:
|
|
583
|
+
|
|
584
|
+
get:
|
|
585
|
+
type: detail
|
|
586
|
+
description: "get spreadsheet metadata and sheet names"
|
|
587
|
+
resource: spreadsheets.get
|
|
588
|
+
params:
|
|
589
|
+
spreadsheetId:
|
|
590
|
+
type: string
|
|
591
|
+
description: "Spreadsheet ID"
|
|
592
|
+
required: true
|
|
593
|
+
|
|
594
|
+
create:
|
|
595
|
+
type: action
|
|
596
|
+
description: "create a new empty spreadsheet"
|
|
597
|
+
resource: spreadsheets.create
|
|
598
|
+
|
|
599
|
+
read:
|
|
600
|
+
type: detail
|
|
601
|
+
description: "read cell values from a range"
|
|
602
|
+
helper: "+read"
|
|
603
|
+
params:
|
|
604
|
+
spreadsheetId:
|
|
605
|
+
type: string
|
|
606
|
+
description: "Spreadsheet ID"
|
|
607
|
+
required: true
|
|
608
|
+
range:
|
|
609
|
+
type: string
|
|
610
|
+
description: "Range to read (e.g. 'Sheet1!A1:D10' or just 'Sheet1')"
|
|
611
|
+
required: true
|
|
612
|
+
cli_args:
|
|
613
|
+
spreadsheetId: "--spreadsheet"
|
|
614
|
+
range: "--range"
|
|
615
|
+
|
|
616
|
+
append:
|
|
617
|
+
type: action
|
|
618
|
+
description: "append rows to a spreadsheet"
|
|
619
|
+
helper: "+append"
|
|
620
|
+
params:
|
|
621
|
+
spreadsheetId:
|
|
622
|
+
type: string
|
|
623
|
+
description: "Spreadsheet ID"
|
|
624
|
+
required: true
|
|
625
|
+
values:
|
|
626
|
+
type: string
|
|
627
|
+
description: "Comma-separated values for a single row (e.g. 'Alice,100,true')"
|
|
628
|
+
jsonValues:
|
|
629
|
+
type: string
|
|
630
|
+
description: "JSON array of rows for bulk insert (e.g. '[[\"a\",\"b\"],[\"c\",\"d\"]]')"
|
|
631
|
+
cli_args:
|
|
632
|
+
spreadsheetId: "--spreadsheet"
|
|
633
|
+
values: "--values"
|
|
634
|
+
jsonValues: "--json-values"
|
|
635
|
+
|
|
636
|
+
getValues:
|
|
637
|
+
type: detail
|
|
638
|
+
description: "get values from a specific range (raw API)"
|
|
639
|
+
resource: spreadsheets.values.get
|
|
640
|
+
params:
|
|
641
|
+
spreadsheetId:
|
|
642
|
+
type: string
|
|
643
|
+
description: "Spreadsheet ID"
|
|
644
|
+
required: true
|
|
645
|
+
range:
|
|
646
|
+
type: string
|
|
647
|
+
description: "A1 notation range (e.g. 'Sheet1!A1:B10')"
|
|
648
|
+
required: true
|
|
649
|
+
|
|
650
|
+
updateValues:
|
|
651
|
+
type: action
|
|
652
|
+
description: "write values to a specific range"
|
|
653
|
+
resource: spreadsheets.values.update
|
|
654
|
+
params:
|
|
655
|
+
spreadsheetId:
|
|
656
|
+
type: string
|
|
657
|
+
description: "Spreadsheet ID"
|
|
658
|
+
required: true
|
|
659
|
+
range:
|
|
660
|
+
type: string
|
|
661
|
+
description: "A1 notation range to write to"
|
|
662
|
+
required: true
|
|
663
|
+
|
|
664
|
+
# ========================================================================
|
|
665
|
+
# Docs
|
|
666
|
+
# ========================================================================
|
|
667
|
+
|
|
668
|
+
docs:
|
|
669
|
+
tool_name: manage_docs
|
|
670
|
+
description: "Read and write Google Docs documents."
|
|
671
|
+
requires_email: true
|
|
672
|
+
gws_service: docs
|
|
673
|
+
operations:
|
|
674
|
+
|
|
675
|
+
get:
|
|
676
|
+
type: detail
|
|
677
|
+
description: "get document content and metadata"
|
|
678
|
+
resource: documents.get
|
|
679
|
+
params:
|
|
680
|
+
documentId:
|
|
681
|
+
type: string
|
|
682
|
+
description: "Document ID"
|
|
683
|
+
required: true
|
|
684
|
+
|
|
685
|
+
create:
|
|
686
|
+
type: action
|
|
687
|
+
description: "create a new blank document"
|
|
688
|
+
resource: documents.create
|
|
689
|
+
|
|
690
|
+
write:
|
|
691
|
+
type: action
|
|
692
|
+
description: "append text to the end of a document"
|
|
693
|
+
helper: "+write"
|
|
694
|
+
params:
|
|
695
|
+
documentId:
|
|
696
|
+
type: string
|
|
697
|
+
description: "Document ID"
|
|
698
|
+
required: true
|
|
699
|
+
text:
|
|
700
|
+
type: string
|
|
701
|
+
description: "Text to append (plain text)"
|
|
702
|
+
required: true
|
|
703
|
+
cli_args:
|
|
704
|
+
documentId: "--document"
|
|
705
|
+
text: "--text"
|
|
706
|
+
|
|
707
|
+
# ========================================================================
|
|
708
|
+
# Tasks
|
|
709
|
+
# ========================================================================
|
|
710
|
+
|
|
711
|
+
tasks:
|
|
712
|
+
tool_name: manage_tasks
|
|
713
|
+
description: "Manage task lists and tasks in Google Tasks."
|
|
714
|
+
requires_email: true
|
|
715
|
+
gws_service: tasks
|
|
716
|
+
operations:
|
|
717
|
+
|
|
718
|
+
# --- Task lists ---
|
|
719
|
+
|
|
720
|
+
listTaskLists:
|
|
721
|
+
type: list
|
|
722
|
+
description: "list all task lists"
|
|
723
|
+
resource: tasklists.list
|
|
724
|
+
|
|
725
|
+
getTaskList:
|
|
726
|
+
type: detail
|
|
727
|
+
description: "get a task list by ID"
|
|
728
|
+
resource: tasklists.get
|
|
729
|
+
params:
|
|
730
|
+
taskListId:
|
|
731
|
+
type: string
|
|
732
|
+
description: "Task list ID"
|
|
733
|
+
required: true
|
|
734
|
+
maps_to: tasklist
|
|
735
|
+
|
|
736
|
+
createTaskList:
|
|
737
|
+
type: action
|
|
738
|
+
description: "create a new task list"
|
|
739
|
+
resource: tasklists.insert
|
|
740
|
+
|
|
741
|
+
deleteTaskList:
|
|
742
|
+
type: action
|
|
743
|
+
description: "delete a task list and all its tasks"
|
|
744
|
+
resource: tasklists.delete
|
|
745
|
+
params:
|
|
746
|
+
taskListId:
|
|
747
|
+
type: string
|
|
748
|
+
description: "Task list ID to delete"
|
|
749
|
+
required: true
|
|
750
|
+
maps_to: tasklist
|
|
751
|
+
|
|
752
|
+
# --- Tasks ---
|
|
753
|
+
|
|
754
|
+
list:
|
|
755
|
+
type: list
|
|
756
|
+
description: "list tasks in a task list"
|
|
757
|
+
resource: tasks.list
|
|
758
|
+
params:
|
|
759
|
+
taskListId:
|
|
760
|
+
type: string
|
|
761
|
+
description: "Task list ID (use listTaskLists to find)"
|
|
762
|
+
required: true
|
|
763
|
+
maps_to: tasklist
|
|
764
|
+
showCompleted:
|
|
765
|
+
type: boolean
|
|
766
|
+
description: "Include completed tasks (default: true)"
|
|
767
|
+
maxResults:
|
|
768
|
+
type: number
|
|
769
|
+
description: "Max tasks to return (default: 20, max: 100)"
|
|
770
|
+
default: 20
|
|
771
|
+
max: 100
|
|
772
|
+
|
|
773
|
+
get:
|
|
774
|
+
type: detail
|
|
775
|
+
description: "get a specific task"
|
|
776
|
+
resource: tasks.get
|
|
777
|
+
params:
|
|
778
|
+
taskListId:
|
|
779
|
+
type: string
|
|
780
|
+
description: "Task list ID"
|
|
781
|
+
required: true
|
|
782
|
+
maps_to: tasklist
|
|
783
|
+
taskId:
|
|
784
|
+
type: string
|
|
785
|
+
description: "Task ID"
|
|
786
|
+
required: true
|
|
787
|
+
maps_to: task
|
|
788
|
+
|
|
789
|
+
create:
|
|
790
|
+
type: action
|
|
791
|
+
description: "create a new task"
|
|
792
|
+
resource: tasks.insert
|
|
793
|
+
params:
|
|
794
|
+
taskListId:
|
|
795
|
+
type: string
|
|
796
|
+
description: "Task list ID"
|
|
797
|
+
required: true
|
|
798
|
+
maps_to: tasklist
|
|
799
|
+
|
|
800
|
+
update:
|
|
801
|
+
type: action
|
|
802
|
+
description: "update a task (patch semantics)"
|
|
803
|
+
resource: tasks.patch
|
|
804
|
+
params:
|
|
805
|
+
taskListId:
|
|
806
|
+
type: string
|
|
807
|
+
description: "Task list ID"
|
|
808
|
+
required: true
|
|
809
|
+
maps_to: tasklist
|
|
810
|
+
taskId:
|
|
811
|
+
type: string
|
|
812
|
+
description: "Task ID"
|
|
813
|
+
required: true
|
|
814
|
+
maps_to: task
|
|
815
|
+
|
|
816
|
+
complete:
|
|
817
|
+
type: action
|
|
818
|
+
description: "mark a task as completed"
|
|
819
|
+
resource: tasks.patch
|
|
820
|
+
params:
|
|
821
|
+
taskListId:
|
|
822
|
+
type: string
|
|
823
|
+
description: "Task list ID"
|
|
824
|
+
required: true
|
|
825
|
+
maps_to: tasklist
|
|
826
|
+
taskId:
|
|
827
|
+
type: string
|
|
828
|
+
description: "Task ID"
|
|
829
|
+
required: true
|
|
830
|
+
maps_to: task
|
|
831
|
+
defaults:
|
|
832
|
+
status: completed
|
|
833
|
+
|
|
834
|
+
delete:
|
|
835
|
+
type: action
|
|
836
|
+
description: "delete a task"
|
|
837
|
+
resource: tasks.delete
|
|
838
|
+
params:
|
|
839
|
+
taskListId:
|
|
840
|
+
type: string
|
|
841
|
+
description: "Task list ID"
|
|
842
|
+
required: true
|
|
843
|
+
maps_to: tasklist
|
|
844
|
+
taskId:
|
|
845
|
+
type: string
|
|
846
|
+
description: "Task ID to delete"
|
|
847
|
+
required: true
|
|
848
|
+
maps_to: task
|
|
849
|
+
|
|
850
|
+
# People (contacts) and Meet are excluded pending gws auth scope support.
|
|
851
|
+
# See https://github.com/googleworkspace/cli/issues/556
|
|
852
|
+
# Manifest entries ready at git tag pre-contacts-meet-removal if needed.
|