bn-google-workspace-mcp-server 0.0.1
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/README.md +718 -0
- package/dist/debug-middleware.d.ts +12 -0
- package/dist/debug-middleware.d.ts.map +1 -0
- package/dist/debug-middleware.js +36 -0
- package/dist/debug-middleware.js.map +1 -0
- package/dist/google-api-client.d.ts +46 -0
- package/dist/google-api-client.d.ts.map +1 -0
- package/dist/google-api-client.js +76 -0
- package/dist/google-api-client.js.map +1 -0
- package/dist/helpers.d.ts +40 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +171 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +166 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas.d.ts +303 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +611 -0
- package/dist/schemas.js.map +1 -0
- package/dist/tool-loader.d.ts +35 -0
- package/dist/tool-loader.d.ts.map +1 -0
- package/dist/tool-loader.js +121 -0
- package/dist/tool-loader.js.map +1 -0
- package/dist/tool-registry.d.ts +44 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +56 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools/calendar.d.ts +44 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +76 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/chat.d.ts +29 -0
- package/dist/tools/chat.d.ts.map +1 -0
- package/dist/tools/chat.js +42 -0
- package/dist/tools/chat.js.map +1 -0
- package/dist/tools/docs.d.ts +29 -0
- package/dist/tools/docs.d.ts.map +1 -0
- package/dist/tools/docs.js +63 -0
- package/dist/tools/docs.js.map +1 -0
- package/dist/tools/drive.d.ts +45 -0
- package/dist/tools/drive.d.ts.map +1 -0
- package/dist/tools/drive.js +135 -0
- package/dist/tools/drive.js.map +1 -0
- package/dist/tools/forms.d.ts +30 -0
- package/dist/tools/forms.d.ts.map +1 -0
- package/dist/tools/forms.js +46 -0
- package/dist/tools/forms.js.map +1 -0
- package/dist/tools/gmail.d.ts +55 -0
- package/dist/tools/gmail.d.ts.map +1 -0
- package/dist/tools/gmail.js +112 -0
- package/dist/tools/gmail.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +22 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/sheets.d.ts +40 -0
- package/dist/tools/sheets.d.ts.map +1 -0
- package/dist/tools/sheets.js +64 -0
- package/dist/tools/sheets.js.map +1 -0
- package/dist/tools/slides.d.ts +32 -0
- package/dist/tools/slides.d.ts.map +1 -0
- package/dist/tools/slides.js +46 -0
- package/dist/tools/slides.js.map +1 -0
- package/dist/tools/tasks.d.ts +43 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +69 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/types.d.ts +110 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
- package/tools.json +379 -0
package/dist/schemas.js
ADDED
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for all Google Workspace MCP tools
|
|
3
|
+
* Each schema includes comprehensive .describe() annotations for LLM understanding
|
|
4
|
+
*
|
|
5
|
+
* These descriptions are designed to help LLMs understand:
|
|
6
|
+
* - When to use each tool
|
|
7
|
+
* - What parameters are available and their exact syntax
|
|
8
|
+
* - Examples of common use cases
|
|
9
|
+
* - Relationships between tools (e.g., get IDs from list tools to use in detail tools)
|
|
10
|
+
*/
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// GMAIL TOOLS (4 tools)
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Schema for gmail_list_labels tool
|
|
17
|
+
* Lists all Gmail labels in the user's mailbox
|
|
18
|
+
*/
|
|
19
|
+
export const GmailListLabelsSchema = z.object({}).describe("List all Gmail labels in the user's mailbox. Use this tool to discover available labels before filtering emails by label. Returns both system labels (INBOX, SENT, DRAFT, SPAM, TRASH, STARRED, IMPORTANT, CATEGORY_PERSONAL, CATEGORY_SOCIAL, CATEGORY_PROMOTIONS, CATEGORY_UPDATES, CATEGORY_FORUMS) and custom user-created labels. The returned label IDs can be used with gmail_search_messages using the 'label:' operator.");
|
|
20
|
+
/**
|
|
21
|
+
* Schema for gmail_search_messages tool
|
|
22
|
+
* Search Gmail messages using Gmail search operators
|
|
23
|
+
*/
|
|
24
|
+
export const GmailSearchMessagesSchema = z.object({
|
|
25
|
+
query: z
|
|
26
|
+
.string()
|
|
27
|
+
.optional()
|
|
28
|
+
.describe(`Gmail search query using Gmail's powerful search operators. Leave empty to list recent messages.
|
|
29
|
+
|
|
30
|
+
SEARCH OPERATORS (combine multiple with spaces for AND logic, use OR for alternatives):
|
|
31
|
+
|
|
32
|
+
**Sender/Recipient:**
|
|
33
|
+
- from:sender@example.com - Messages from specific sender
|
|
34
|
+
- to:recipient@example.com - Messages sent to specific recipient
|
|
35
|
+
- cc:user@example.com - Messages where user is CC'd
|
|
36
|
+
- bcc:user@example.com - Messages where user is BCC'd
|
|
37
|
+
- deliveredto:me@example.com - Delivered to specific address
|
|
38
|
+
|
|
39
|
+
**Labels & Categories:**
|
|
40
|
+
- label:INBOX - Messages in inbox
|
|
41
|
+
- label:SENT - Sent messages
|
|
42
|
+
- label:STARRED - Starred messages
|
|
43
|
+
- label:IMPORTANT - Important messages
|
|
44
|
+
- label:custom-label - Messages with custom label (use exact label name)
|
|
45
|
+
- category:primary - Primary inbox category
|
|
46
|
+
- category:social - Social category
|
|
47
|
+
- category:promotions - Promotions category
|
|
48
|
+
- category:updates - Updates category
|
|
49
|
+
- category:forums - Forums category
|
|
50
|
+
- in:anywhere - Search all mail including spam and trash
|
|
51
|
+
|
|
52
|
+
**Status:**
|
|
53
|
+
- is:unread - Unread messages
|
|
54
|
+
- is:read - Read messages
|
|
55
|
+
- is:starred - Starred messages
|
|
56
|
+
- is:important - Marked important
|
|
57
|
+
- is:snoozed - Snoozed messages
|
|
58
|
+
|
|
59
|
+
**Attachments:**
|
|
60
|
+
- has:attachment - Has any attachment
|
|
61
|
+
- has:drive - Has Google Drive attachment
|
|
62
|
+
- has:document - Has Google Docs attachment
|
|
63
|
+
- has:spreadsheet - Has Google Sheets attachment
|
|
64
|
+
- has:presentation - Has Google Slides attachment
|
|
65
|
+
- has:youtube - Has YouTube video
|
|
66
|
+
- filename:pdf - Has attachment with specific extension
|
|
67
|
+
- filename:report.xlsx - Has attachment with specific filename
|
|
68
|
+
|
|
69
|
+
**Content:**
|
|
70
|
+
- subject:meeting - Word in subject line
|
|
71
|
+
- "exact phrase" - Exact phrase match (use quotes)
|
|
72
|
+
- word1 word2 - Both words anywhere in message (AND)
|
|
73
|
+
- word1 OR word2 - Either word (must use uppercase OR)
|
|
74
|
+
- -word - Exclude messages containing word
|
|
75
|
+
- +word - Exact word match (no synonyms)
|
|
76
|
+
|
|
77
|
+
**Size:**
|
|
78
|
+
- larger:10M - Larger than 10 megabytes
|
|
79
|
+
- smaller:1M - Smaller than 1 megabyte
|
|
80
|
+
- size:5M - Approximately 5 megabytes
|
|
81
|
+
|
|
82
|
+
**Dates:**
|
|
83
|
+
- after:2024/01/15 - Messages after date (YYYY/MM/DD)
|
|
84
|
+
- before:2024/12/31 - Messages before date
|
|
85
|
+
- older_than:7d - Older than 7 days
|
|
86
|
+
- newer_than:3d - Newer than 3 days
|
|
87
|
+
- older_than:1m - Older than 1 month
|
|
88
|
+
- older_than:1y - Older than 1 year
|
|
89
|
+
|
|
90
|
+
**Thread:**
|
|
91
|
+
- in:inbox - In inbox (not archived)
|
|
92
|
+
- in:trash - In trash
|
|
93
|
+
- in:spam - In spam folder
|
|
94
|
+
- in:sent - In sent folder
|
|
95
|
+
- in:draft - Draft messages
|
|
96
|
+
- in:chats - Chat messages
|
|
97
|
+
|
|
98
|
+
**EXAMPLE QUERIES:**
|
|
99
|
+
- "from:boss@company.com is:unread" - Unread emails from boss
|
|
100
|
+
- "has:attachment filename:pdf after:2024/01/01" - PDFs received this year
|
|
101
|
+
- "subject:invoice from:accounting@company.com" - Invoices from accounting
|
|
102
|
+
- "is:starred label:important" - Starred and important messages
|
|
103
|
+
- "larger:5M has:attachment" - Large attachments
|
|
104
|
+
- "from:@amazon.com subject:order" - Amazon order confirmations
|
|
105
|
+
- "to:me -category:promotions newer_than:7d" - Recent non-promotional emails to me`),
|
|
106
|
+
maxResults: z
|
|
107
|
+
.number()
|
|
108
|
+
.int()
|
|
109
|
+
.positive()
|
|
110
|
+
.max(500)
|
|
111
|
+
.optional()
|
|
112
|
+
.default(10)
|
|
113
|
+
.describe("Maximum number of messages to return (1-500, default: 10). Note: For performance, only the first 5 messages include detailed headers (subject, from, snippet). For full message content including body text, use gmail_get_message_content with the returned message ID."),
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* Schema for gmail_get_message_content tool
|
|
117
|
+
* Get detailed information about a specific Gmail message
|
|
118
|
+
*/
|
|
119
|
+
export const GmailGetMessageContentSchema = z.object({
|
|
120
|
+
messageId: z
|
|
121
|
+
.string()
|
|
122
|
+
.describe("The unique Gmail message ID (alphanumeric string like '18d4a2b3c4d5e6f7'). IMPORTANT: First use gmail_search_messages to find messages and obtain their IDs. This tool returns the complete message including: full headers (Subject, From, To, Date, CC, BCC), complete body content (plain text extracted from the message), thread ID for related messages, and all metadata."),
|
|
123
|
+
});
|
|
124
|
+
/**
|
|
125
|
+
* Schema for gmail_send_message tool
|
|
126
|
+
* Send an email via Gmail
|
|
127
|
+
*/
|
|
128
|
+
export const GmailSendMessageSchema = z.object({
|
|
129
|
+
to: z
|
|
130
|
+
.string()
|
|
131
|
+
.describe("Recipient email address in standard format. Examples: 'user@example.com' for single recipient. For multiple recipients, send separate messages or use comma-separated addresses."),
|
|
132
|
+
subject: z
|
|
133
|
+
.string()
|
|
134
|
+
.describe("Email subject line. Plain text only (no HTML tags). Best practices: Keep under 60 characters for full visibility in email clients. Avoid spam trigger words in all caps. Be specific and descriptive."),
|
|
135
|
+
body: z
|
|
136
|
+
.string()
|
|
137
|
+
.describe("Email body content in plain text format. Line breaks are preserved. For basic formatting, use plain text conventions: *asterisks* for emphasis, - or * for bullet points, numbered lists with 1. 2. 3., and clear paragraph breaks with double newlines. HTML is not supported in this version."),
|
|
138
|
+
});
|
|
139
|
+
// ============================================================================
|
|
140
|
+
// DRIVE TOOLS (3 tools)
|
|
141
|
+
// ============================================================================
|
|
142
|
+
/**
|
|
143
|
+
* Schema for drive_list_files tool
|
|
144
|
+
* List Google Drive files
|
|
145
|
+
*/
|
|
146
|
+
export const DriveListFilesSchema = z.object({
|
|
147
|
+
query: z
|
|
148
|
+
.string()
|
|
149
|
+
.optional()
|
|
150
|
+
.describe(`Google Drive search query to filter files. Leave empty to list all recent files.
|
|
151
|
+
|
|
152
|
+
SEARCH SYNTAX (Google Drive Query Language):
|
|
153
|
+
|
|
154
|
+
**By Name:**
|
|
155
|
+
- name contains 'budget' - Files with 'budget' in name
|
|
156
|
+
- name = 'Quarterly Report' - Exact file name match
|
|
157
|
+
- fullText contains 'deadline' - Search file contents (Google Docs, Sheets, Slides, PDFs)
|
|
158
|
+
|
|
159
|
+
**By File Type (mimeType):**
|
|
160
|
+
- mimeType = 'application/vnd.google-apps.document' - Google Docs
|
|
161
|
+
- mimeType = 'application/vnd.google-apps.spreadsheet' - Google Sheets
|
|
162
|
+
- mimeType = 'application/vnd.google-apps.presentation' - Google Slides
|
|
163
|
+
- mimeType = 'application/vnd.google-apps.folder' - Folders
|
|
164
|
+
- mimeType = 'application/pdf' - PDF files
|
|
165
|
+
- mimeType contains 'image/' - All image files
|
|
166
|
+
- mimeType contains 'video/' - All video files
|
|
167
|
+
- mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' - Word docs (.docx)
|
|
168
|
+
- mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' - Excel files (.xlsx)
|
|
169
|
+
|
|
170
|
+
**By Location:**
|
|
171
|
+
- 'FOLDER_ID' in parents - Files in specific folder (get folder ID from URL or previous search)
|
|
172
|
+
- 'root' in parents - Files in My Drive root
|
|
173
|
+
- sharedWithMe = true - Files shared with me
|
|
174
|
+
- not 'FOLDER_ID' in parents - Files NOT in specific folder
|
|
175
|
+
|
|
176
|
+
**By Owner/Sharing:**
|
|
177
|
+
- 'user@example.com' in owners - Files owned by specific user
|
|
178
|
+
- 'user@example.com' in writers - Files user can edit
|
|
179
|
+
- 'user@example.com' in readers - Files user can view
|
|
180
|
+
|
|
181
|
+
**By Date:**
|
|
182
|
+
- modifiedTime > '2024-01-01T00:00:00' - Modified after date (RFC 3339)
|
|
183
|
+
- createdTime > '2024-06-01T00:00:00' - Created after date
|
|
184
|
+
- viewedByMeTime > '2024-01-01T00:00:00' - Viewed by me after date
|
|
185
|
+
- modifiedTime >= '2024-01-01' and modifiedTime < '2024-02-01' - Modified in date range
|
|
186
|
+
|
|
187
|
+
**By Status:**
|
|
188
|
+
- starred = true - Starred files
|
|
189
|
+
- trashed = true - Files in trash
|
|
190
|
+
- trashed = false - Files not in trash (default behavior)
|
|
191
|
+
|
|
192
|
+
**Combining Conditions:**
|
|
193
|
+
- Use 'and' to combine: name contains 'report' and mimeType = 'application/vnd.google-apps.document'
|
|
194
|
+
- Use 'or' for alternatives: mimeType = 'application/pdf' or mimeType contains 'image/'
|
|
195
|
+
- Use 'not' for negation: not mimeType = 'application/vnd.google-apps.folder'
|
|
196
|
+
|
|
197
|
+
**EXAMPLE QUERIES:**
|
|
198
|
+
- "name contains 'Q4' and mimeType = 'application/vnd.google-apps.spreadsheet'" - Q4 spreadsheets
|
|
199
|
+
- "fullText contains 'project deadline'" - Files mentioning project deadline
|
|
200
|
+
- "modifiedTime > '2024-12-01T00:00:00' and mimeType = 'application/vnd.google-apps.document'" - Recent Google Docs
|
|
201
|
+
- "sharedWithMe = true and mimeType contains 'image/'" - Images shared with me
|
|
202
|
+
- "starred = true" - All starred files
|
|
203
|
+
- "'root' in parents and mimeType = 'application/vnd.google-apps.folder'" - Folders in My Drive root
|
|
204
|
+
|
|
205
|
+
**SIMPLE SEARCH (if you don't need query syntax):**
|
|
206
|
+
Just enter a search term like 'budget' and it will be automatically converted to: name contains 'budget'`),
|
|
207
|
+
maxResults: z
|
|
208
|
+
.number()
|
|
209
|
+
.int()
|
|
210
|
+
.positive()
|
|
211
|
+
.max(1000)
|
|
212
|
+
.optional()
|
|
213
|
+
.default(10)
|
|
214
|
+
.describe("Maximum number of files to return (1-1000, default: 10). Results are sorted by most recently modified. Returns file ID, name, MIME type, modification time, size, and web view link for each file."),
|
|
215
|
+
});
|
|
216
|
+
/**
|
|
217
|
+
* Schema for drive_get_file_content tool
|
|
218
|
+
* Get Google Drive file content
|
|
219
|
+
*/
|
|
220
|
+
export const DriveGetFileContentSchema = z.object({
|
|
221
|
+
fileId: z
|
|
222
|
+
.string()
|
|
223
|
+
.describe(`The unique Google Drive file ID. How to obtain:
|
|
224
|
+
|
|
225
|
+
1. **From drive_list_files**: Search for files and use the returned 'id' field
|
|
226
|
+
2. **From URL**: Extract from the file URL pattern:
|
|
227
|
+
- Google Docs: docs.google.com/document/d/{fileId}/edit
|
|
228
|
+
- Google Sheets: docs.google.com/spreadsheets/d/{fileId}/edit
|
|
229
|
+
- Google Slides: docs.google.com/presentation/d/{fileId}/edit
|
|
230
|
+
- Google Drive: drive.google.com/file/d/{fileId}/view
|
|
231
|
+
|
|
232
|
+
**Supported file types for content reading:**
|
|
233
|
+
- Text files (.txt, .md, .csv, .json, .xml, .html, .css, .js, etc.)
|
|
234
|
+
- Google Docs (exported as plain text)
|
|
235
|
+
- PDF files (text extraction)
|
|
236
|
+
|
|
237
|
+
**Not directly readable** (use specific tools instead):
|
|
238
|
+
- Google Sheets → Use sheets_read_values tool
|
|
239
|
+
- Google Slides → Use slides_get_presentation tool
|
|
240
|
+
- Google Docs → Use docs_get_document tool for better formatting
|
|
241
|
+
- Binary files (images, videos, archives)`),
|
|
242
|
+
});
|
|
243
|
+
/**
|
|
244
|
+
* Schema for drive_create_file tool
|
|
245
|
+
* Create a new file in Google Drive
|
|
246
|
+
*/
|
|
247
|
+
export const DriveCreateFileSchema = z.object({
|
|
248
|
+
name: z
|
|
249
|
+
.string()
|
|
250
|
+
.describe("Filename including extension. Examples: 'meeting-notes.txt', 'report.md', 'data.csv', 'config.json'. The extension determines how the file is handled. Avoid special characters: < > : \" / \\ | ? * as they may cause issues."),
|
|
251
|
+
content: z
|
|
252
|
+
.string()
|
|
253
|
+
.describe("Text content for the file. The file is created as plain text (MIME type: text/plain). For structured data, format appropriately: use CSV format for tabular data, JSON for structured objects, Markdown for formatted documents."),
|
|
254
|
+
parentFolderId: z
|
|
255
|
+
.string()
|
|
256
|
+
.optional()
|
|
257
|
+
.describe("Google Drive folder ID where the file should be created. If omitted, file is created in 'My Drive' root. To get folder ID: use drive_list_files with query \"mimeType = 'application/vnd.google-apps.folder'\" or extract from folder URL: drive.google.com/drive/folders/{folderId}"),
|
|
258
|
+
});
|
|
259
|
+
// ============================================================================
|
|
260
|
+
// CALENDAR TOOLS (3 tools)
|
|
261
|
+
// ============================================================================
|
|
262
|
+
/**
|
|
263
|
+
* Schema for calendar_list_events tool
|
|
264
|
+
* List Google Calendar events
|
|
265
|
+
*/
|
|
266
|
+
export const CalendarListEventsSchema = z.object({
|
|
267
|
+
maxResults: z
|
|
268
|
+
.number()
|
|
269
|
+
.int()
|
|
270
|
+
.positive()
|
|
271
|
+
.max(2500)
|
|
272
|
+
.optional()
|
|
273
|
+
.default(10)
|
|
274
|
+
.describe("Maximum number of upcoming events to return (1-2500, default: 10). Events are sorted chronologically by start time. Only future events from the current moment are returned. For past events, you would need to specify a timeMin parameter (not yet supported in this version)."),
|
|
275
|
+
calendarId: z
|
|
276
|
+
.string()
|
|
277
|
+
.optional()
|
|
278
|
+
.default("primary")
|
|
279
|
+
.describe(`Calendar to list events from. Options:
|
|
280
|
+
|
|
281
|
+
- 'primary' (default) - User's main/default calendar
|
|
282
|
+
- Specific calendar ID - Use the ID returned from calendar_list_calendars
|
|
283
|
+
|
|
284
|
+
**Common calendar IDs:**
|
|
285
|
+
- primary - User's primary calendar
|
|
286
|
+
- user@example.com - Calendar for specific Google account
|
|
287
|
+
- calendar_id@group.calendar.google.com - Shared/secondary calendars
|
|
288
|
+
- addressbook#contacts@group.v.calendar.google.com - Contacts' birthdays
|
|
289
|
+
- en.usa#holiday@group.v.calendar.google.com - US Holidays
|
|
290
|
+
|
|
291
|
+
First use calendar_list_calendars to discover available calendars and their IDs.`),
|
|
292
|
+
});
|
|
293
|
+
/**
|
|
294
|
+
* Schema for calendar_list_calendars tool
|
|
295
|
+
* List all calendars accessible to the user
|
|
296
|
+
*/
|
|
297
|
+
export const CalendarListCalendarsSchema = z.object({}).describe("List all Google Calendars accessible to the user. Returns calendar ID, name, description, time zone, and whether it's the primary calendar. Use this to discover: user's own calendars, shared team calendars, subscribed calendars (holidays, sports, etc.), and resource calendars (meeting rooms). The returned calendar IDs can be used with calendar_list_events and calendar_create_event.");
|
|
298
|
+
/**
|
|
299
|
+
* Schema for calendar_create_event tool
|
|
300
|
+
* Create a new calendar event
|
|
301
|
+
*/
|
|
302
|
+
export const CalendarCreateEventSchema = z.object({
|
|
303
|
+
summary: z
|
|
304
|
+
.string()
|
|
305
|
+
.describe("Event title displayed on the calendar. Best practices: Be descriptive but concise (e.g., 'Q4 Planning Meeting' not just 'Meeting'). Include key context like project name or team if relevant."),
|
|
306
|
+
startTime: z
|
|
307
|
+
.string()
|
|
308
|
+
.describe(`Event start time. Two formats supported:
|
|
309
|
+
|
|
310
|
+
**For timed events (specific time):**
|
|
311
|
+
ISO 8601 format with timezone offset or UTC:
|
|
312
|
+
- '2024-12-25T09:00:00-05:00' (with timezone offset, EST)
|
|
313
|
+
- '2024-12-25T14:00:00Z' (UTC)
|
|
314
|
+
- '2024-12-25T09:00:00+01:00' (with timezone offset, CET)
|
|
315
|
+
|
|
316
|
+
**For all-day events:**
|
|
317
|
+
Date only format:
|
|
318
|
+
- '2024-12-25' (starts at midnight in calendar's timezone)
|
|
319
|
+
|
|
320
|
+
**Timezone offset reference:**
|
|
321
|
+
- UTC/GMT: +00:00 or Z
|
|
322
|
+
- US Eastern: -05:00 (EST) or -04:00 (EDT)
|
|
323
|
+
- US Central: -06:00 (CST) or -05:00 (CDT)
|
|
324
|
+
- US Pacific: -08:00 (PST) or -07:00 (PDT)
|
|
325
|
+
- Europe Central: +01:00 (CET) or +02:00 (CEST)
|
|
326
|
+
- Asia Tokyo: +09:00 (JST)`),
|
|
327
|
+
endTime: z
|
|
328
|
+
.string()
|
|
329
|
+
.describe(`Event end time. Must be after startTime and use the same format:
|
|
330
|
+
|
|
331
|
+
**For timed events:** ISO 8601 format matching startTime's format
|
|
332
|
+
- Example: '2024-12-25T10:00:00-05:00' (1-hour meeting)
|
|
333
|
+
|
|
334
|
+
**For all-day events:** Date format (YYYY-MM-DD)
|
|
335
|
+
- IMPORTANT: The end date is exclusive. For a single all-day event on Dec 25th, use:
|
|
336
|
+
startTime: '2024-12-25', endTime: '2024-12-26'
|
|
337
|
+
- For a 3-day event (Dec 25-27):
|
|
338
|
+
startTime: '2024-12-25', endTime: '2024-12-28'`),
|
|
339
|
+
description: z
|
|
340
|
+
.string()
|
|
341
|
+
.optional()
|
|
342
|
+
.describe("Event description/notes. Appears in the event details when opened. Plain text format. Good for: meeting agenda, dial-in information, links to documents, preparation notes, or any additional context attendees need."),
|
|
343
|
+
calendarId: z
|
|
344
|
+
.string()
|
|
345
|
+
.optional()
|
|
346
|
+
.default("primary")
|
|
347
|
+
.describe("Calendar to create the event in. Default: 'primary' (user's main calendar). Use calendar_list_calendars to find other calendar IDs for shared or secondary calendars."),
|
|
348
|
+
});
|
|
349
|
+
// ============================================================================
|
|
350
|
+
// DOCS TOOLS (2 tools)
|
|
351
|
+
// ============================================================================
|
|
352
|
+
/**
|
|
353
|
+
* Schema for docs_get_document tool
|
|
354
|
+
* Get Google Docs document content
|
|
355
|
+
*/
|
|
356
|
+
export const DocsGetDocumentSchema = z.object({
|
|
357
|
+
documentId: z
|
|
358
|
+
.string()
|
|
359
|
+
.describe(`The unique Google Docs document ID. How to obtain:
|
|
360
|
+
|
|
361
|
+
1. **From drive_list_files**: Search for Google Docs using query "mimeType = 'application/vnd.google-apps.document'" and use the returned file ID
|
|
362
|
+
2. **From document URL**: Extract the ID from the URL pattern:
|
|
363
|
+
docs.google.com/document/d/{documentId}/edit
|
|
364
|
+
|
|
365
|
+
**Example URL:** docs.google.com/document/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/edit
|
|
366
|
+
**Document ID:** 1AbCdEfGhIjKlMnOpQrStUvWxYz
|
|
367
|
+
|
|
368
|
+
Returns: Document title and full text content extracted from all paragraphs. Note: Complex formatting (tables, images, drawings) may not be fully represented in the extracted text.`),
|
|
369
|
+
});
|
|
370
|
+
/**
|
|
371
|
+
* Schema for docs_create_document tool
|
|
372
|
+
* Create a new Google Docs document
|
|
373
|
+
*/
|
|
374
|
+
export const DocsCreateDocumentSchema = z.object({
|
|
375
|
+
title: z
|
|
376
|
+
.string()
|
|
377
|
+
.describe("Title for the new Google Doc. This becomes the document name in Google Drive and appears at the top of the document. Choose a descriptive name for easy discovery later."),
|
|
378
|
+
content: z
|
|
379
|
+
.string()
|
|
380
|
+
.optional()
|
|
381
|
+
.describe("Initial text content to add to the document. Plain text format - the content is inserted at the beginning of the document. If omitted, creates an empty document. For complex formatting, create the document first, then use Google Docs directly to format."),
|
|
382
|
+
});
|
|
383
|
+
// ============================================================================
|
|
384
|
+
// SHEETS TOOLS (3 tools)
|
|
385
|
+
// ============================================================================
|
|
386
|
+
/**
|
|
387
|
+
* Schema for sheets_get_spreadsheet tool
|
|
388
|
+
* Get Google Sheets spreadsheet information
|
|
389
|
+
*/
|
|
390
|
+
export const SheetsGetSpreadsheetSchema = z.object({
|
|
391
|
+
spreadsheetId: z
|
|
392
|
+
.string()
|
|
393
|
+
.describe(`The unique Google Sheets spreadsheet ID. How to obtain:
|
|
394
|
+
|
|
395
|
+
1. **From drive_list_files**: Search using query "mimeType = 'application/vnd.google-apps.spreadsheet'" and use the returned file ID
|
|
396
|
+
2. **From spreadsheet URL**: Extract from the URL pattern:
|
|
397
|
+
docs.google.com/spreadsheets/d/{spreadsheetId}/edit
|
|
398
|
+
|
|
399
|
+
**Example URL:** docs.google.com/spreadsheets/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/edit#gid=0
|
|
400
|
+
**Spreadsheet ID:** 1AbCdEfGhIjKlMnOpQrStUvWxYz
|
|
401
|
+
|
|
402
|
+
Returns: Spreadsheet title and list of all sheets (tabs) with their sheet IDs and names. Use sheet names with sheets_read_values to read data from specific sheets.`),
|
|
403
|
+
});
|
|
404
|
+
/**
|
|
405
|
+
* Schema for sheets_read_values tool
|
|
406
|
+
* Read values from a Google Sheets range
|
|
407
|
+
*/
|
|
408
|
+
export const SheetsReadValuesSchema = z.object({
|
|
409
|
+
spreadsheetId: z
|
|
410
|
+
.string()
|
|
411
|
+
.describe("The spreadsheet ID (see sheets_get_spreadsheet for how to obtain). Required to identify which spreadsheet to read from."),
|
|
412
|
+
range: z
|
|
413
|
+
.string()
|
|
414
|
+
.describe(`Cell range to read in A1 notation. Returns values as a 2D array (rows × columns).
|
|
415
|
+
|
|
416
|
+
**A1 NOTATION SYNTAX:**
|
|
417
|
+
|
|
418
|
+
**Basic ranges:**
|
|
419
|
+
- 'A1' - Single cell A1
|
|
420
|
+
- 'A1:C3' - Rectangle from A1 to C3 (3 rows × 3 columns)
|
|
421
|
+
- 'A:A' - Entire column A
|
|
422
|
+
- '1:1' - Entire row 1
|
|
423
|
+
- 'A:C' - Columns A through C
|
|
424
|
+
- '1:5' - Rows 1 through 5
|
|
425
|
+
|
|
426
|
+
**With sheet name (required for multi-sheet spreadsheets):**
|
|
427
|
+
- 'Sheet1!A1:C10' - Range in sheet named "Sheet1"
|
|
428
|
+
- 'Sales Data!A:B' - Columns A-B in sheet named "Sales Data"
|
|
429
|
+
- "'Sheet Name With Spaces'!A1:B5" - Use quotes for sheet names with spaces
|
|
430
|
+
|
|
431
|
+
**Open-ended ranges:**
|
|
432
|
+
- 'A1:A' - Column A starting from row 1 to end of data
|
|
433
|
+
- 'A1:1' - Row 1 starting from column A to end of data
|
|
434
|
+
- 'Sheet1!A:A' - Entire column A in Sheet1
|
|
435
|
+
|
|
436
|
+
**EXAMPLE SCENARIOS:**
|
|
437
|
+
- Read headers: 'Sheet1!1:1' (first row)
|
|
438
|
+
- Read first column: 'Sheet1!A:A'
|
|
439
|
+
- Read data table: 'Sheet1!A1:D100' (adjust range to your data)
|
|
440
|
+
- Read all data: 'Sheet1!A:Z' (reads columns A-Z with data)
|
|
441
|
+
|
|
442
|
+
**TIPS:**
|
|
443
|
+
- First use sheets_get_spreadsheet to see available sheet names
|
|
444
|
+
- Start with a larger range than needed - empty cells return empty strings
|
|
445
|
+
- Row 1 typically contains headers in most spreadsheets`),
|
|
446
|
+
});
|
|
447
|
+
/**
|
|
448
|
+
* Schema for sheets_create_spreadsheet tool
|
|
449
|
+
* Create a new Google Sheets spreadsheet
|
|
450
|
+
*/
|
|
451
|
+
export const SheetsCreateSpreadsheetSchema = z.object({
|
|
452
|
+
title: z
|
|
453
|
+
.string()
|
|
454
|
+
.describe("Title for the new spreadsheet. This becomes the filename in Google Drive. The spreadsheet is created with one empty sheet named 'Sheet1'. After creation, use the Google Sheets UI or API to add data and additional sheets."),
|
|
455
|
+
});
|
|
456
|
+
// ============================================================================
|
|
457
|
+
// SLIDES TOOLS (2 tools)
|
|
458
|
+
// ============================================================================
|
|
459
|
+
/**
|
|
460
|
+
* Schema for slides_get_presentation tool
|
|
461
|
+
* Get Google Slides presentation information
|
|
462
|
+
*/
|
|
463
|
+
export const SlidesGetPresentationSchema = z.object({
|
|
464
|
+
presentationId: z
|
|
465
|
+
.string()
|
|
466
|
+
.describe(`The unique Google Slides presentation ID. How to obtain:
|
|
467
|
+
|
|
468
|
+
1. **From drive_list_files**: Search using query "mimeType = 'application/vnd.google-apps.presentation'" and use the returned file ID
|
|
469
|
+
2. **From presentation URL**: Extract from the URL pattern:
|
|
470
|
+
docs.google.com/presentation/d/{presentationId}/edit
|
|
471
|
+
|
|
472
|
+
**Example URL:** docs.google.com/presentation/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/edit
|
|
473
|
+
**Presentation ID:** 1AbCdEfGhIjKlMnOpQrStUvWxYz
|
|
474
|
+
|
|
475
|
+
Returns: Presentation title, slide count, and list of slides with their object IDs and layout references. Note: Full slide content (text, images, shapes) requires additional API calls not yet implemented in this version.`),
|
|
476
|
+
});
|
|
477
|
+
/**
|
|
478
|
+
* Schema for slides_create_presentation tool
|
|
479
|
+
* Create a new Google Slides presentation
|
|
480
|
+
*/
|
|
481
|
+
export const SlidesCreatePresentationSchema = z.object({
|
|
482
|
+
title: z
|
|
483
|
+
.string()
|
|
484
|
+
.describe("Title for the new presentation. This becomes the filename in Google Drive and the presentation title. Creates a blank presentation with a single blank slide. Use the Google Slides UI to add content and additional slides."),
|
|
485
|
+
});
|
|
486
|
+
// ============================================================================
|
|
487
|
+
// TASKS TOOLS (3 tools)
|
|
488
|
+
// ============================================================================
|
|
489
|
+
/**
|
|
490
|
+
* Schema for tasks_list_task_lists tool
|
|
491
|
+
* List all Google Tasks task lists
|
|
492
|
+
*/
|
|
493
|
+
export const TasksListTaskListsSchema = z.object({}).describe("List all Google Tasks task lists for the user. Every Google account has at least one task list. Returns task list IDs, titles, and last updated timestamps. Use the returned task list ID with tasks_list_tasks to view tasks or tasks_create_task to add tasks. The special ID '@default' can be used to reference the user's default task list without calling this tool first.");
|
|
494
|
+
/**
|
|
495
|
+
* Schema for tasks_list_tasks tool
|
|
496
|
+
* List tasks from a specific task list
|
|
497
|
+
*/
|
|
498
|
+
export const TasksListTasksSchema = z.object({
|
|
499
|
+
taskListId: z
|
|
500
|
+
.string()
|
|
501
|
+
.describe(`The task list ID to retrieve tasks from. Options:
|
|
502
|
+
|
|
503
|
+
- '@default' - User's default/primary task list (use this if you don't need a specific list)
|
|
504
|
+
- Specific task list ID - Obtained from tasks_list_task_lists results
|
|
505
|
+
|
|
506
|
+
Returns all tasks in the list with: task ID, title, completion status (needsAction or completed), notes/description if any, due date if set, and last update timestamp. Tasks are returned in the order they appear in the list.`),
|
|
507
|
+
});
|
|
508
|
+
/**
|
|
509
|
+
* Schema for tasks_create_task tool
|
|
510
|
+
* Create a new task in a task list
|
|
511
|
+
*/
|
|
512
|
+
export const TasksCreateTaskSchema = z.object({
|
|
513
|
+
taskListId: z
|
|
514
|
+
.string()
|
|
515
|
+
.describe("The task list ID to add the task to. Use '@default' for the user's default task list, or a specific ID from tasks_list_task_lists."),
|
|
516
|
+
title: z
|
|
517
|
+
.string()
|
|
518
|
+
.describe("Task title - the main task description. Keep it concise and actionable (e.g., 'Review Q4 budget proposal' rather than 'Budget'). This is the primary text shown in the task list."),
|
|
519
|
+
notes: z
|
|
520
|
+
.string()
|
|
521
|
+
.optional()
|
|
522
|
+
.describe("Additional notes or details about the task. Use for: context, sub-tasks listed as text, links to relevant resources, or any information needed to complete the task. Displayed when viewing task details."),
|
|
523
|
+
due: z
|
|
524
|
+
.string()
|
|
525
|
+
.optional()
|
|
526
|
+
.describe(`Due date in RFC 3339 timestamp format. Only the date portion is used (time is ignored by Google Tasks).
|
|
527
|
+
|
|
528
|
+
**Format:** YYYY-MM-DDTHH:MM:SS.000Z
|
|
529
|
+
|
|
530
|
+
**Examples:**
|
|
531
|
+
- '2024-12-31T00:00:00.000Z' - Due December 31, 2024
|
|
532
|
+
- '2025-01-15T00:00:00.000Z' - Due January 15, 2025
|
|
533
|
+
|
|
534
|
+
**Note:** Setting a time is not meaningful - Google Tasks only tracks the date. The task will appear as due on that calendar date.`),
|
|
535
|
+
});
|
|
536
|
+
// ============================================================================
|
|
537
|
+
// FORMS TOOLS (2 tools)
|
|
538
|
+
// ============================================================================
|
|
539
|
+
/**
|
|
540
|
+
* Schema for forms_create_form tool
|
|
541
|
+
* Create a new Google Form
|
|
542
|
+
*/
|
|
543
|
+
export const FormsCreateFormSchema = z.object({
|
|
544
|
+
title: z
|
|
545
|
+
.string()
|
|
546
|
+
.describe("Title for the new Google Form. This appears at the top of the form and as the filename in Google Drive. Creates an empty form with no questions. Use the Google Forms UI at the returned edit URL to add questions, sections, and configure settings."),
|
|
547
|
+
});
|
|
548
|
+
/**
|
|
549
|
+
* Schema for forms_get_form tool
|
|
550
|
+
* Get Google Form information
|
|
551
|
+
*/
|
|
552
|
+
export const FormsGetFormSchema = z.object({
|
|
553
|
+
formId: z
|
|
554
|
+
.string()
|
|
555
|
+
.describe(`The unique Google Forms form ID. How to obtain:
|
|
556
|
+
|
|
557
|
+
1. **From drive_list_files**: Search using query "mimeType = 'application/vnd.google-apps.form'" and use the returned file ID
|
|
558
|
+
2. **From form URL**: Extract from the URL pattern:
|
|
559
|
+
- Edit URL: docs.google.com/forms/d/{formId}/edit
|
|
560
|
+
- View URL: docs.google.com/forms/d/{formId}/viewform
|
|
561
|
+
|
|
562
|
+
**Example URL:** docs.google.com/forms/d/1AbCdEfGhIjKlMnOpQrStUvWxYz/edit
|
|
563
|
+
**Form ID:** 1AbCdEfGhIjKlMnOpQrStUvWxYz
|
|
564
|
+
|
|
565
|
+
Returns: Form title, document title, description, and the responder URI (the URL to share with people who should fill out the form).`),
|
|
566
|
+
});
|
|
567
|
+
// ============================================================================
|
|
568
|
+
// CHAT TOOLS (2 tools)
|
|
569
|
+
// ============================================================================
|
|
570
|
+
/**
|
|
571
|
+
* Schema for chat_list_spaces tool
|
|
572
|
+
* List Google Chat spaces
|
|
573
|
+
*/
|
|
574
|
+
export const ChatListSpacesSchema = z.object({}).describe("List all Google Chat spaces accessible to the user. Returns spaces including: direct message conversations (DMs), group conversations, and named spaces (rooms). For each space, returns the space resource name (spaces/{spaceId}), display name, and space type (DIRECT_MESSAGE, GROUP_CHAT, or SPACE). Use the space resource name with chat_send_message to send messages. Note: Requires the user's Google Workspace account to have Google Chat enabled.");
|
|
575
|
+
/**
|
|
576
|
+
* Schema for chat_send_message tool
|
|
577
|
+
* Send a message to a Google Chat space
|
|
578
|
+
*/
|
|
579
|
+
export const ChatSendMessageSchema = z.object({
|
|
580
|
+
spaceName: z
|
|
581
|
+
.string()
|
|
582
|
+
.describe(`The Google Chat space resource name. Format: 'spaces/{spaceId}'
|
|
583
|
+
|
|
584
|
+
**How to obtain:**
|
|
585
|
+
1. Use chat_list_spaces to list available spaces
|
|
586
|
+
2. Use the 'name' field from the results (e.g., 'spaces/AAAA1234567')
|
|
587
|
+
|
|
588
|
+
**Space types you can message:**
|
|
589
|
+
- Direct messages (DMs) with individuals
|
|
590
|
+
- Group conversations
|
|
591
|
+
- Named spaces (rooms) where you're a member
|
|
592
|
+
|
|
593
|
+
The space name is NOT the display name - it's the technical resource identifier.`),
|
|
594
|
+
text: z
|
|
595
|
+
.string()
|
|
596
|
+
.describe(`Message text to send. Plain text with optional basic formatting:
|
|
597
|
+
|
|
598
|
+
**Formatting options:**
|
|
599
|
+
- *bold text* - Surround with asterisks
|
|
600
|
+
- _italic text_ - Surround with underscores
|
|
601
|
+
- ~strikethrough~ - Surround with tildes
|
|
602
|
+
- \`inline code\` - Surround with backticks
|
|
603
|
+
- \`\`\`code block\`\`\` - Triple backticks for code blocks
|
|
604
|
+
|
|
605
|
+
**Best practices:**
|
|
606
|
+
- Keep messages concise and actionable
|
|
607
|
+
- Use formatting sparingly for emphasis
|
|
608
|
+
- Break long content into multiple messages if needed
|
|
609
|
+
- @mentions are not supported via this API`),
|
|
610
|
+
});
|
|
611
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool configuration loader
|
|
3
|
+
* Loads tool definitions from tools.json and validates them
|
|
4
|
+
*
|
|
5
|
+
* Supports loading from (in priority order):
|
|
6
|
+
* 1. Custom path via TOOLS_CONFIG_PATH environment variable
|
|
7
|
+
* 2. tools.json in current working directory (for development)
|
|
8
|
+
* 3. tools.json in package installation directory (for npx/installed usage)
|
|
9
|
+
*/
|
|
10
|
+
export interface ToolDefinition {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: string;
|
|
15
|
+
properties: Record<string, unknown>;
|
|
16
|
+
required?: string[];
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface ToolsConfig {
|
|
20
|
+
[toolName: string]: ToolDefinition;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Load tool definitions from tools.json
|
|
24
|
+
* Uses caching in production, always reloads in development
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadToolDefinitions(forceReload?: boolean): ToolDefinition[];
|
|
27
|
+
/**
|
|
28
|
+
* Get a specific tool definition by name
|
|
29
|
+
*/
|
|
30
|
+
export declare function getToolDefinition(toolName: string): ToolDefinition | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Clear the tool cache (useful for testing or forced reloads)
|
|
33
|
+
*/
|
|
34
|
+
export declare function clearToolCache(): void;
|
|
35
|
+
//# sourceMappingURL=tool-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-loader.d.ts","sourceRoot":"","sources":["../src/tool-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;CACpC;AAmDD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,UAAQ,GAAG,cAAc,EAAE,CAwDzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAG9E;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC"}
|