gogcli-mcp 4.2.1 → 4.2.3
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/dist/index.js +15 -6
- package/dist/lib.js +15 -6
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/tools/appscript.ts +1 -0
- package/src/tools/auth.ts +1 -0
- package/src/tools/chat.ts +4 -0
- package/src/tools/contacts.ts +1 -1
- package/src/tools/docs.ts +1 -0
- package/src/tools/drive.ts +2 -2
- package/src/tools/sheets.ts +1 -1
- package/src/tools/slides.ts +2 -0
- package/src/tools/tasks.ts +1 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "Google Sheets (and more) for Claude via gogcli — read, write, and manage spreadsheets",
|
|
10
|
-
"version": "4.2.
|
|
10
|
+
"version": "4.2.3"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"displayName": "gogcli",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "Google Sheets (and more) for Claude via gogcli — read, write, and manage spreadsheets",
|
|
18
|
-
"version": "4.2.
|
|
18
|
+
"version": "4.2.3",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
package/dist/index.js
CHANGED
|
@@ -35530,6 +35530,7 @@ function registerAppScriptTools(server) {
|
|
|
35530
35530
|
});
|
|
35531
35531
|
server.registerTool("gog_appscript_create", {
|
|
35532
35532
|
description: "Create a new, empty Apps Script project. Pass parentId to bind it to a Drive file (a Sheet, Doc or Form), which is what makes the script a container-bound script with access to that document; omit it for a standalone project. gog cannot upload code, so the project starts empty either way." + apiEnableNote,
|
|
35533
|
+
annotations: { destructiveHint: true },
|
|
35533
35534
|
inputSchema: external_exports.object({
|
|
35534
35535
|
title: external_exports.string().describe("Project title"),
|
|
35535
35536
|
parentId: external_exports.string().optional().describe("Drive file ID to bind the project to (Sheet, Doc or Form). Omit for a standalone project."),
|
|
@@ -35670,6 +35671,7 @@ function registerAuthToolsWith(server, defaultServices) {
|
|
|
35670
35671
|
});
|
|
35671
35672
|
server.registerTool("gog_auth_add_url", {
|
|
35672
35673
|
description: "Begin REMOTE/headless Google authorization (step 1 of 2). Returns a sign-in URL to open in any browser \u2014 no local server or terminal on the gogcli host is needed, so this works on a hosted deployment where the interactive gog_auth_add cannot. Hand the URL to the user; after they sign in, the browser is redirected to a localhost URL that fails to load \u2014 that is expected. They copy that full redirected URL (from the address bar) and you pass it to gog_auth_add_complete. The link is valid for 10 minutes. If you pass a custom `services` here, pass the SAME value to gog_auth_add_complete or the second step will not match this one.",
|
|
35674
|
+
annotations: { readOnlyHint: true },
|
|
35673
35675
|
inputSchema: external_exports.object({
|
|
35674
35676
|
email: external_exports.string().describe("Google account email to authorize"),
|
|
35675
35677
|
services: external_exports.string().optional().default(defaultServices).describe(servicesDescribe),
|
|
@@ -36030,6 +36032,7 @@ function registerChatTools(server) {
|
|
|
36030
36032
|
});
|
|
36031
36033
|
server.registerTool("gog_chat_spaces_create", {
|
|
36032
36034
|
description: "Create a named Chat space, optionally seeding its membership. Members are added immediately and are notified \u2014 this is visible to other people the moment it runs, so confirm the member list before calling it." + workspaceOnlyNote,
|
|
36035
|
+
annotations: { destructiveHint: true },
|
|
36033
36036
|
inputSchema: external_exports.object({
|
|
36034
36037
|
displayName: external_exports.string().describe("Display name for the new space"),
|
|
36035
36038
|
members: external_exports.array(external_exports.string()).optional().describe('Initial members, as email addresses or "users/..." resource names'),
|
|
@@ -36098,6 +36101,7 @@ function registerChatTools(server) {
|
|
|
36098
36101
|
});
|
|
36099
36102
|
server.registerTool("gog_chat_messages_send", {
|
|
36100
36103
|
description: "Post a message to a Chat space. THIS IS IMMEDIATELY VISIBLE TO EVERYONE IN THE SPACE and cannot be unsent through this tool, so treat it like sending mail, not like saving a draft. Pass `thread` to reply inside an existing conversation (from gog_chat_threads_list or a message's thread field); omit it to start a new one. Text supports Chat's markdown-ish formatting (*bold*, _italic_, `code`)." + workspaceOnlyNote,
|
|
36104
|
+
annotations: { destructiveHint: true },
|
|
36101
36105
|
inputSchema: external_exports.object({
|
|
36102
36106
|
space: spaceParam,
|
|
36103
36107
|
text: external_exports.string().optional().describe("Message text. Optional only when an attachment is supplied."),
|
|
@@ -36121,6 +36125,7 @@ function registerChatTools(server) {
|
|
|
36121
36125
|
});
|
|
36122
36126
|
server.registerTool("gog_chat_dm_send", {
|
|
36123
36127
|
description: "Send a direct message to one person by email address, creating the DM space if this is the first message. Delivered immediately and cannot be unsent through this tool. For a room rather than a person, use gog_chat_messages_send." + workspaceOnlyNote,
|
|
36128
|
+
annotations: { destructiveHint: true },
|
|
36124
36129
|
inputSchema: external_exports.object({
|
|
36125
36130
|
email: external_exports.string().describe("Recipient email address"),
|
|
36126
36131
|
text: external_exports.string().describe("Message text"),
|
|
@@ -36134,6 +36139,7 @@ function registerChatTools(server) {
|
|
|
36134
36139
|
});
|
|
36135
36140
|
server.registerTool("gog_chat_dm_space", {
|
|
36136
36141
|
description: 'Resolve the DM space for an email address \u2014 the bridge from a person to the "spaces/..." name the message tools want. Creates the space if none exists yet, which is silent: it does not message the person.' + workspaceOnlyNote,
|
|
36142
|
+
annotations: { destructiveHint: true },
|
|
36137
36143
|
inputSchema: external_exports.object({
|
|
36138
36144
|
email: external_exports.string().describe("The other person's email address"),
|
|
36139
36145
|
account: accountParam
|
|
@@ -36606,7 +36612,7 @@ function registerContactsTools(server) {
|
|
|
36606
36612
|
});
|
|
36607
36613
|
server.registerTool("gog_contacts_create", {
|
|
36608
36614
|
description: "Create a new Google Contact.",
|
|
36609
|
-
annotations: { destructiveHint:
|
|
36615
|
+
annotations: { destructiveHint: true },
|
|
36610
36616
|
inputSchema: external_exports.object({
|
|
36611
36617
|
givenName: external_exports.string().describe("Given (first) name"),
|
|
36612
36618
|
familyName: external_exports.string().optional().describe("Family (last) name"),
|
|
@@ -36655,6 +36661,7 @@ function registerDocsTools(server) {
|
|
|
36655
36661
|
});
|
|
36656
36662
|
server.registerTool("gog_docs_create", {
|
|
36657
36663
|
description: "Create a new Google Doc. Returns JSON with the new docId and URL.",
|
|
36664
|
+
annotations: { destructiveHint: true },
|
|
36658
36665
|
inputSchema: external_exports.object({
|
|
36659
36666
|
title: external_exports.string().describe("Title for the new document"),
|
|
36660
36667
|
account: accountParam
|
|
@@ -36814,7 +36821,7 @@ function registerDriveTools(server) {
|
|
|
36814
36821
|
});
|
|
36815
36822
|
server.registerTool("gog_drive_rename", {
|
|
36816
36823
|
description: "Rename a file or folder in Google Drive.",
|
|
36817
|
-
annotations: { destructiveHint:
|
|
36824
|
+
annotations: { destructiveHint: false },
|
|
36818
36825
|
inputSchema: external_exports.object({
|
|
36819
36826
|
fileId: external_exports.string().describe("File or folder ID"),
|
|
36820
36827
|
newName: external_exports.string().describe("New name"),
|
|
@@ -36825,7 +36832,7 @@ function registerDriveTools(server) {
|
|
|
36825
36832
|
});
|
|
36826
36833
|
server.registerTool("gog_drive_move", {
|
|
36827
36834
|
description: "Move a file to a different folder in Google Drive.",
|
|
36828
|
-
annotations: { destructiveHint:
|
|
36835
|
+
annotations: { destructiveHint: false },
|
|
36829
36836
|
inputSchema: external_exports.object({
|
|
36830
36837
|
fileId: external_exports.string().describe("File ID to move"),
|
|
36831
36838
|
parentId: external_exports.string().describe("Destination folder ID"),
|
|
@@ -37491,7 +37498,7 @@ function registerSheetsTools(server) {
|
|
|
37491
37498
|
});
|
|
37492
37499
|
server.registerTool("gog_sheets_create", {
|
|
37493
37500
|
description: "Create a new Google Spreadsheet. Returns JSON with the new spreadsheetId and URL.",
|
|
37494
|
-
annotations: { destructiveHint:
|
|
37501
|
+
annotations: { destructiveHint: true },
|
|
37495
37502
|
inputSchema: external_exports.object({
|
|
37496
37503
|
title: external_exports.string().describe("Title for the new spreadsheet"),
|
|
37497
37504
|
account: accountParam
|
|
@@ -37545,6 +37552,7 @@ function registerSlidesTools(server) {
|
|
|
37545
37552
|
});
|
|
37546
37553
|
server.registerTool("gog_slides_create", {
|
|
37547
37554
|
description: "Create a new Google Slides presentation, optionally in a folder or copying from a template.",
|
|
37555
|
+
annotations: { destructiveHint: true },
|
|
37548
37556
|
inputSchema: external_exports.object({
|
|
37549
37557
|
title: external_exports.string().describe("Presentation title"),
|
|
37550
37558
|
parent: external_exports.string().optional().describe("Destination folder ID"),
|
|
@@ -37559,6 +37567,7 @@ function registerSlidesTools(server) {
|
|
|
37559
37567
|
});
|
|
37560
37568
|
server.registerTool("gog_slides_copy", {
|
|
37561
37569
|
description: "Copy a Google Slides presentation to a new presentation with the given title.",
|
|
37570
|
+
annotations: { destructiveHint: true },
|
|
37562
37571
|
inputSchema: external_exports.object({
|
|
37563
37572
|
presentationId: external_exports.string().describe("Presentation ID to copy"),
|
|
37564
37573
|
title: external_exports.string().describe("Title for the new copy"),
|
|
@@ -37647,7 +37656,7 @@ function registerTasksTools(server) {
|
|
|
37647
37656
|
});
|
|
37648
37657
|
server.registerTool("gog_tasks_done", {
|
|
37649
37658
|
description: "Mark a task as completed.",
|
|
37650
|
-
annotations: { destructiveHint:
|
|
37659
|
+
annotations: { destructiveHint: false },
|
|
37651
37660
|
inputSchema: external_exports.object({
|
|
37652
37661
|
tasklistId: external_exports.string().describe("Task list ID"),
|
|
37653
37662
|
taskId: external_exports.string().describe("Task ID"),
|
|
@@ -37671,7 +37680,7 @@ function registerTasksTools(server) {
|
|
|
37671
37680
|
}
|
|
37672
37681
|
|
|
37673
37682
|
// src/server.ts
|
|
37674
|
-
var VERSION = true ? "4.2.
|
|
37683
|
+
var VERSION = true ? "4.2.3" : "0.0.0";
|
|
37675
37684
|
var BASE_TOOL_REGISTRARS = [
|
|
37676
37685
|
registerApiTools,
|
|
37677
37686
|
registerAppScriptTools,
|
package/dist/lib.js
CHANGED
|
@@ -33861,6 +33861,7 @@ function registerAppScriptTools(server) {
|
|
|
33861
33861
|
});
|
|
33862
33862
|
server.registerTool("gog_appscript_create", {
|
|
33863
33863
|
description: "Create a new, empty Apps Script project. Pass parentId to bind it to a Drive file (a Sheet, Doc or Form), which is what makes the script a container-bound script with access to that document; omit it for a standalone project. gog cannot upload code, so the project starts empty either way." + apiEnableNote,
|
|
33864
|
+
annotations: { destructiveHint: true },
|
|
33864
33865
|
inputSchema: external_exports.object({
|
|
33865
33866
|
title: external_exports.string().describe("Project title"),
|
|
33866
33867
|
parentId: external_exports.string().optional().describe("Drive file ID to bind the project to (Sheet, Doc or Form). Omit for a standalone project."),
|
|
@@ -34001,6 +34002,7 @@ function registerAuthToolsWith(server, defaultServices) {
|
|
|
34001
34002
|
});
|
|
34002
34003
|
server.registerTool("gog_auth_add_url", {
|
|
34003
34004
|
description: "Begin REMOTE/headless Google authorization (step 1 of 2). Returns a sign-in URL to open in any browser \u2014 no local server or terminal on the gogcli host is needed, so this works on a hosted deployment where the interactive gog_auth_add cannot. Hand the URL to the user; after they sign in, the browser is redirected to a localhost URL that fails to load \u2014 that is expected. They copy that full redirected URL (from the address bar) and you pass it to gog_auth_add_complete. The link is valid for 10 minutes. If you pass a custom `services` here, pass the SAME value to gog_auth_add_complete or the second step will not match this one.",
|
|
34005
|
+
annotations: { readOnlyHint: true },
|
|
34004
34006
|
inputSchema: external_exports.object({
|
|
34005
34007
|
email: external_exports.string().describe("Google account email to authorize"),
|
|
34006
34008
|
services: external_exports.string().optional().default(defaultServices).describe(servicesDescribe),
|
|
@@ -34364,6 +34366,7 @@ function registerChatTools(server) {
|
|
|
34364
34366
|
});
|
|
34365
34367
|
server.registerTool("gog_chat_spaces_create", {
|
|
34366
34368
|
description: "Create a named Chat space, optionally seeding its membership. Members are added immediately and are notified \u2014 this is visible to other people the moment it runs, so confirm the member list before calling it." + workspaceOnlyNote,
|
|
34369
|
+
annotations: { destructiveHint: true },
|
|
34367
34370
|
inputSchema: external_exports.object({
|
|
34368
34371
|
displayName: external_exports.string().describe("Display name for the new space"),
|
|
34369
34372
|
members: external_exports.array(external_exports.string()).optional().describe('Initial members, as email addresses or "users/..." resource names'),
|
|
@@ -34432,6 +34435,7 @@ function registerChatTools(server) {
|
|
|
34432
34435
|
});
|
|
34433
34436
|
server.registerTool("gog_chat_messages_send", {
|
|
34434
34437
|
description: "Post a message to a Chat space. THIS IS IMMEDIATELY VISIBLE TO EVERYONE IN THE SPACE and cannot be unsent through this tool, so treat it like sending mail, not like saving a draft. Pass `thread` to reply inside an existing conversation (from gog_chat_threads_list or a message's thread field); omit it to start a new one. Text supports Chat's markdown-ish formatting (*bold*, _italic_, `code`)." + workspaceOnlyNote,
|
|
34438
|
+
annotations: { destructiveHint: true },
|
|
34435
34439
|
inputSchema: external_exports.object({
|
|
34436
34440
|
space: spaceParam,
|
|
34437
34441
|
text: external_exports.string().optional().describe("Message text. Optional only when an attachment is supplied."),
|
|
@@ -34455,6 +34459,7 @@ function registerChatTools(server) {
|
|
|
34455
34459
|
});
|
|
34456
34460
|
server.registerTool("gog_chat_dm_send", {
|
|
34457
34461
|
description: "Send a direct message to one person by email address, creating the DM space if this is the first message. Delivered immediately and cannot be unsent through this tool. For a room rather than a person, use gog_chat_messages_send." + workspaceOnlyNote,
|
|
34462
|
+
annotations: { destructiveHint: true },
|
|
34458
34463
|
inputSchema: external_exports.object({
|
|
34459
34464
|
email: external_exports.string().describe("Recipient email address"),
|
|
34460
34465
|
text: external_exports.string().describe("Message text"),
|
|
@@ -34468,6 +34473,7 @@ function registerChatTools(server) {
|
|
|
34468
34473
|
});
|
|
34469
34474
|
server.registerTool("gog_chat_dm_space", {
|
|
34470
34475
|
description: 'Resolve the DM space for an email address \u2014 the bridge from a person to the "spaces/..." name the message tools want. Creates the space if none exists yet, which is silent: it does not message the person.' + workspaceOnlyNote,
|
|
34476
|
+
annotations: { destructiveHint: true },
|
|
34471
34477
|
inputSchema: external_exports.object({
|
|
34472
34478
|
email: external_exports.string().describe("The other person's email address"),
|
|
34473
34479
|
account: accountParam
|
|
@@ -34940,7 +34946,7 @@ function registerContactsTools(server) {
|
|
|
34940
34946
|
});
|
|
34941
34947
|
server.registerTool("gog_contacts_create", {
|
|
34942
34948
|
description: "Create a new Google Contact.",
|
|
34943
|
-
annotations: { destructiveHint:
|
|
34949
|
+
annotations: { destructiveHint: true },
|
|
34944
34950
|
inputSchema: external_exports.object({
|
|
34945
34951
|
givenName: external_exports.string().describe("Given (first) name"),
|
|
34946
34952
|
familyName: external_exports.string().optional().describe("Family (last) name"),
|
|
@@ -34989,6 +34995,7 @@ function registerDocsTools(server) {
|
|
|
34989
34995
|
});
|
|
34990
34996
|
server.registerTool("gog_docs_create", {
|
|
34991
34997
|
description: "Create a new Google Doc. Returns JSON with the new docId and URL.",
|
|
34998
|
+
annotations: { destructiveHint: true },
|
|
34992
34999
|
inputSchema: external_exports.object({
|
|
34993
35000
|
title: external_exports.string().describe("Title for the new document"),
|
|
34994
35001
|
account: accountParam
|
|
@@ -35148,7 +35155,7 @@ function registerDriveTools(server) {
|
|
|
35148
35155
|
});
|
|
35149
35156
|
server.registerTool("gog_drive_rename", {
|
|
35150
35157
|
description: "Rename a file or folder in Google Drive.",
|
|
35151
|
-
annotations: { destructiveHint:
|
|
35158
|
+
annotations: { destructiveHint: false },
|
|
35152
35159
|
inputSchema: external_exports.object({
|
|
35153
35160
|
fileId: external_exports.string().describe("File or folder ID"),
|
|
35154
35161
|
newName: external_exports.string().describe("New name"),
|
|
@@ -35159,7 +35166,7 @@ function registerDriveTools(server) {
|
|
|
35159
35166
|
});
|
|
35160
35167
|
server.registerTool("gog_drive_move", {
|
|
35161
35168
|
description: "Move a file to a different folder in Google Drive.",
|
|
35162
|
-
annotations: { destructiveHint:
|
|
35169
|
+
annotations: { destructiveHint: false },
|
|
35163
35170
|
inputSchema: external_exports.object({
|
|
35164
35171
|
fileId: external_exports.string().describe("File ID to move"),
|
|
35165
35172
|
parentId: external_exports.string().describe("Destination folder ID"),
|
|
@@ -35825,7 +35832,7 @@ function registerSheetsTools(server) {
|
|
|
35825
35832
|
});
|
|
35826
35833
|
server.registerTool("gog_sheets_create", {
|
|
35827
35834
|
description: "Create a new Google Spreadsheet. Returns JSON with the new spreadsheetId and URL.",
|
|
35828
|
-
annotations: { destructiveHint:
|
|
35835
|
+
annotations: { destructiveHint: true },
|
|
35829
35836
|
inputSchema: external_exports.object({
|
|
35830
35837
|
title: external_exports.string().describe("Title for the new spreadsheet"),
|
|
35831
35838
|
account: accountParam
|
|
@@ -35879,6 +35886,7 @@ function registerSlidesTools(server) {
|
|
|
35879
35886
|
});
|
|
35880
35887
|
server.registerTool("gog_slides_create", {
|
|
35881
35888
|
description: "Create a new Google Slides presentation, optionally in a folder or copying from a template.",
|
|
35889
|
+
annotations: { destructiveHint: true },
|
|
35882
35890
|
inputSchema: external_exports.object({
|
|
35883
35891
|
title: external_exports.string().describe("Presentation title"),
|
|
35884
35892
|
parent: external_exports.string().optional().describe("Destination folder ID"),
|
|
@@ -35893,6 +35901,7 @@ function registerSlidesTools(server) {
|
|
|
35893
35901
|
});
|
|
35894
35902
|
server.registerTool("gog_slides_copy", {
|
|
35895
35903
|
description: "Copy a Google Slides presentation to a new presentation with the given title.",
|
|
35904
|
+
annotations: { destructiveHint: true },
|
|
35896
35905
|
inputSchema: external_exports.object({
|
|
35897
35906
|
presentationId: external_exports.string().describe("Presentation ID to copy"),
|
|
35898
35907
|
title: external_exports.string().describe("Title for the new copy"),
|
|
@@ -35981,7 +35990,7 @@ function registerTasksTools(server) {
|
|
|
35981
35990
|
});
|
|
35982
35991
|
server.registerTool("gog_tasks_done", {
|
|
35983
35992
|
description: "Mark a task as completed.",
|
|
35984
|
-
annotations: { destructiveHint:
|
|
35993
|
+
annotations: { destructiveHint: false },
|
|
35985
35994
|
inputSchema: external_exports.object({
|
|
35986
35995
|
tasklistId: external_exports.string().describe("Task list ID"),
|
|
35987
35996
|
taskId: external_exports.string().describe("Task ID"),
|
|
@@ -36005,7 +36014,7 @@ function registerTasksTools(server) {
|
|
|
36005
36014
|
}
|
|
36006
36015
|
|
|
36007
36016
|
// src/server.ts
|
|
36008
|
-
var VERSION = true ? "4.2.
|
|
36017
|
+
var VERSION = true ? "4.2.3" : "0.0.0";
|
|
36009
36018
|
var BASE_TOOL_REGISTRARS = [
|
|
36010
36019
|
registerApiTools,
|
|
36011
36020
|
registerAppScriptTools,
|
package/manifest.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"manifest_version": "0.3",
|
|
4
4
|
"name": "gogcli-mcp",
|
|
5
5
|
"display_name": "gogcli",
|
|
6
|
-
"version": "4.2.
|
|
6
|
+
"version": "4.2.3",
|
|
7
7
|
"description": "Google Sheets (and more) for Claude via gogcli — read, write, and manage spreadsheets",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Chris Hall",
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"source": "github",
|
|
8
8
|
"subfolder": "packages/gogcli-mcp"
|
|
9
9
|
},
|
|
10
|
-
"version": "4.2.
|
|
10
|
+
"version": "4.2.3",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "gogcli-mcp",
|
|
15
|
-
"version": "4.2.
|
|
15
|
+
"version": "4.2.3",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
},
|
package/src/tools/appscript.ts
CHANGED
|
@@ -82,6 +82,7 @@ export function registerAppScriptTools(server: McpServer): void {
|
|
|
82
82
|
'Create a new, empty Apps Script project. Pass parentId to bind it to a Drive file (a Sheet, Doc or Form), which is '
|
|
83
83
|
+ 'what makes the script a container-bound script with access to that document; omit it for a standalone project. '
|
|
84
84
|
+ 'gog cannot upload code, so the project starts empty either way.' + apiEnableNote,
|
|
85
|
+
annotations: { destructiveHint: true },
|
|
85
86
|
inputSchema: z.object({
|
|
86
87
|
title: z.string().describe('Project title'),
|
|
87
88
|
parentId: z.string().optional().describe('Drive file ID to bind the project to (Sheet, Doc or Form). Omit for a standalone project.'),
|
package/src/tools/auth.ts
CHANGED
|
@@ -135,6 +135,7 @@ function registerAuthToolsWith(server: McpServer, defaultServices: string): void
|
|
|
135
135
|
'full redirected URL (from the address bar) and you pass it to gog_auth_add_complete. The link is ' +
|
|
136
136
|
'valid for 10 minutes. If you pass a custom `services` here, pass the SAME value to ' +
|
|
137
137
|
'gog_auth_add_complete or the second step will not match this one.',
|
|
138
|
+
annotations: { readOnlyHint: true },
|
|
138
139
|
inputSchema: z.object({
|
|
139
140
|
email: z.string().describe('Google account email to authorize'),
|
|
140
141
|
services: z.string().optional().default(defaultServices).describe(servicesDescribe),
|
package/src/tools/chat.ts
CHANGED
|
@@ -82,6 +82,7 @@ export function registerChatTools(server: McpServer): void {
|
|
|
82
82
|
description:
|
|
83
83
|
'Create a named Chat space, optionally seeding its membership. Members are added immediately and are notified — this '
|
|
84
84
|
+ 'is visible to other people the moment it runs, so confirm the member list before calling it.' + workspaceOnlyNote,
|
|
85
|
+
annotations: { destructiveHint: true },
|
|
85
86
|
inputSchema: z.object({
|
|
86
87
|
displayName: z.string().describe('Display name for the new space'),
|
|
87
88
|
members: z.array(z.string()).optional().describe('Initial members, as email addresses or "users/..." resource names'),
|
|
@@ -176,6 +177,7 @@ export function registerChatTools(server: McpServer): void {
|
|
|
176
177
|
+ 'this tool, so treat it like sending mail, not like saving a draft. Pass `thread` to reply inside an existing '
|
|
177
178
|
+ 'conversation (from gog_chat_threads_list or a message\'s thread field); omit it to start a new one. Text supports '
|
|
178
179
|
+ 'Chat\'s markdown-ish formatting (*bold*, _italic_, `code`).' + workspaceOnlyNote,
|
|
180
|
+
annotations: { destructiveHint: true },
|
|
179
181
|
inputSchema: z.object({
|
|
180
182
|
space: spaceParam,
|
|
181
183
|
text: z.string().optional().describe('Message text. Optional only when an attachment is supplied.'),
|
|
@@ -207,6 +209,7 @@ export function registerChatTools(server: McpServer): void {
|
|
|
207
209
|
'Send a direct message to one person by email address, creating the DM space if this is the first message. Delivered '
|
|
208
210
|
+ 'immediately and cannot be unsent through this tool. For a room rather than a person, use gog_chat_messages_send.'
|
|
209
211
|
+ workspaceOnlyNote,
|
|
212
|
+
annotations: { destructiveHint: true },
|
|
210
213
|
inputSchema: z.object({
|
|
211
214
|
email: z.string().describe('Recipient email address'),
|
|
212
215
|
text: z.string().describe('Message text'),
|
|
@@ -223,6 +226,7 @@ export function registerChatTools(server: McpServer): void {
|
|
|
223
226
|
description:
|
|
224
227
|
'Resolve the DM space for an email address — the bridge from a person to the "spaces/..." name the message tools '
|
|
225
228
|
+ 'want. Creates the space if none exists yet, which is silent: it does not message the person.' + workspaceOnlyNote,
|
|
229
|
+
annotations: { destructiveHint: true },
|
|
226
230
|
inputSchema: z.object({
|
|
227
231
|
email: z.string().describe('The other person\'s email address'),
|
|
228
232
|
account: accountParam,
|
package/src/tools/contacts.ts
CHANGED
|
@@ -37,7 +37,7 @@ export function registerContactsTools(server: McpServer): void {
|
|
|
37
37
|
|
|
38
38
|
server.registerTool('gog_contacts_create', {
|
|
39
39
|
description: 'Create a new Google Contact.',
|
|
40
|
-
annotations: { destructiveHint:
|
|
40
|
+
annotations: { destructiveHint: true },
|
|
41
41
|
inputSchema: z.object({
|
|
42
42
|
givenName: z.string().describe('Given (first) name'),
|
|
43
43
|
familyName: z.string().optional().describe('Family (last) name'),
|
package/src/tools/docs.ts
CHANGED
|
@@ -30,6 +30,7 @@ export function registerDocsTools(server: McpServer): void {
|
|
|
30
30
|
|
|
31
31
|
server.registerTool('gog_docs_create', {
|
|
32
32
|
description: 'Create a new Google Doc. Returns JSON with the new docId and URL.',
|
|
33
|
+
annotations: { destructiveHint: true },
|
|
33
34
|
inputSchema: z.object({
|
|
34
35
|
title: z.string().describe('Title for the new document'),
|
|
35
36
|
account: accountParam,
|
package/src/tools/drive.ts
CHANGED
|
@@ -118,7 +118,7 @@ export function registerDriveTools(server: McpServer): void {
|
|
|
118
118
|
|
|
119
119
|
server.registerTool('gog_drive_rename', {
|
|
120
120
|
description: 'Rename a file or folder in Google Drive.',
|
|
121
|
-
annotations: { destructiveHint:
|
|
121
|
+
annotations: { destructiveHint: false },
|
|
122
122
|
inputSchema: z.object({
|
|
123
123
|
fileId: z.string().describe('File or folder ID'),
|
|
124
124
|
newName: z.string().describe('New name'),
|
|
@@ -130,7 +130,7 @@ export function registerDriveTools(server: McpServer): void {
|
|
|
130
130
|
|
|
131
131
|
server.registerTool('gog_drive_move', {
|
|
132
132
|
description: 'Move a file to a different folder in Google Drive.',
|
|
133
|
-
annotations: { destructiveHint:
|
|
133
|
+
annotations: { destructiveHint: false },
|
|
134
134
|
inputSchema: z.object({
|
|
135
135
|
fileId: z.string().describe('File ID to move'),
|
|
136
136
|
parentId: z.string().describe('Destination folder ID'),
|
package/src/tools/sheets.ts
CHANGED
|
@@ -120,7 +120,7 @@ export function registerSheetsTools(server: McpServer): void {
|
|
|
120
120
|
|
|
121
121
|
server.registerTool('gog_sheets_create', {
|
|
122
122
|
description: 'Create a new Google Spreadsheet. Returns JSON with the new spreadsheetId and URL.',
|
|
123
|
-
annotations: { destructiveHint:
|
|
123
|
+
annotations: { destructiveHint: true },
|
|
124
124
|
inputSchema: z.object({
|
|
125
125
|
title: z.string().describe('Title for the new spreadsheet'),
|
|
126
126
|
account: accountParam,
|
package/src/tools/slides.ts
CHANGED
|
@@ -34,6 +34,7 @@ export function registerSlidesTools(server: McpServer): void {
|
|
|
34
34
|
|
|
35
35
|
server.registerTool('gog_slides_create', {
|
|
36
36
|
description: 'Create a new Google Slides presentation, optionally in a folder or copying from a template.',
|
|
37
|
+
annotations: { destructiveHint: true },
|
|
37
38
|
inputSchema: z.object({
|
|
38
39
|
title: z.string().describe('Presentation title'),
|
|
39
40
|
parent: z.string().optional().describe('Destination folder ID'),
|
|
@@ -49,6 +50,7 @@ export function registerSlidesTools(server: McpServer): void {
|
|
|
49
50
|
|
|
50
51
|
server.registerTool('gog_slides_copy', {
|
|
51
52
|
description: 'Copy a Google Slides presentation to a new presentation with the given title.',
|
|
53
|
+
annotations: { destructiveHint: true },
|
|
52
54
|
inputSchema: z.object({
|
|
53
55
|
presentationId: z.string().describe('Presentation ID to copy'),
|
|
54
56
|
title: z.string().describe('Title for the new copy'),
|
package/src/tools/tasks.ts
CHANGED
|
@@ -55,7 +55,7 @@ export function registerTasksTools(server: McpServer): void {
|
|
|
55
55
|
|
|
56
56
|
server.registerTool('gog_tasks_done', {
|
|
57
57
|
description: 'Mark a task as completed.',
|
|
58
|
-
annotations: { destructiveHint:
|
|
58
|
+
annotations: { destructiveHint: false },
|
|
59
59
|
inputSchema: z.object({
|
|
60
60
|
tasklistId: z.string().describe('Task list ID'),
|
|
61
61
|
taskId: z.string().describe('Task ID'),
|