gogcli-mcp-slides 4.2.2 → 4.2.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/dist/index.js +31 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/tools/slides-extra.ts +28 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
|
|
10
|
-
"version": "4.2.
|
|
10
|
+
"version": "4.2.4"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"displayName": "gogcli (Slides)",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
|
|
18
|
-
"version": "4.2.
|
|
18
|
+
"version": "4.2.4",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gogcli-mcp-slides",
|
|
3
3
|
"displayName": "gogcli (Slides)",
|
|
4
|
-
"version": "4.2.
|
|
4
|
+
"version": "4.2.4",
|
|
5
5
|
"description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Chris Hall",
|
package/dist/index.js
CHANGED
|
@@ -35480,6 +35480,7 @@ function registerSlidesTools(server) {
|
|
|
35480
35480
|
});
|
|
35481
35481
|
server.registerTool("gog_slides_create", {
|
|
35482
35482
|
description: "Create a new Google Slides presentation, optionally in a folder or copying from a template.",
|
|
35483
|
+
annotations: { destructiveHint: true },
|
|
35483
35484
|
inputSchema: external_exports.object({
|
|
35484
35485
|
title: external_exports.string().describe("Presentation title"),
|
|
35485
35486
|
parent: external_exports.string().optional().describe("Destination folder ID"),
|
|
@@ -35494,6 +35495,7 @@ function registerSlidesTools(server) {
|
|
|
35494
35495
|
});
|
|
35495
35496
|
server.registerTool("gog_slides_copy", {
|
|
35496
35497
|
description: "Copy a Google Slides presentation to a new presentation with the given title.",
|
|
35498
|
+
annotations: { destructiveHint: true },
|
|
35497
35499
|
inputSchema: external_exports.object({
|
|
35498
35500
|
presentationId: external_exports.string().describe("Presentation ID to copy"),
|
|
35499
35501
|
title: external_exports.string().describe("Title for the new copy"),
|
|
@@ -35533,7 +35535,7 @@ function registerSlidesTools(server) {
|
|
|
35533
35535
|
}
|
|
35534
35536
|
|
|
35535
35537
|
// ../gogcli-mcp/src/server.ts
|
|
35536
|
-
var VERSION = true ? "4.2.
|
|
35538
|
+
var VERSION = true ? "4.2.4" : "0.0.0";
|
|
35537
35539
|
|
|
35538
35540
|
// ../gogcli-mcp/src/bootstrap-auth.ts
|
|
35539
35541
|
import { join as join2 } from "node:path";
|
|
@@ -35611,6 +35613,7 @@ var MAX_BLOB_UPLOAD_BYTES = 100 * 1024 * 1024;
|
|
|
35611
35613
|
function registerExtraSlidesTools(server) {
|
|
35612
35614
|
server.registerTool("gog_slides_create_from_markdown", {
|
|
35613
35615
|
description: "Create a new Google Slides presentation from markdown content (inline or from a file).",
|
|
35616
|
+
annotations: { destructiveHint: true },
|
|
35614
35617
|
inputSchema: external_exports.object({
|
|
35615
35618
|
title: external_exports.string().describe("Presentation title"),
|
|
35616
35619
|
content: external_exports.string().optional().describe("Inline markdown content"),
|
|
@@ -35629,6 +35632,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35629
35632
|
});
|
|
35630
35633
|
server.registerTool("gog_slides_create_from_template", {
|
|
35631
35634
|
description: "Create a new Google Slides presentation from a template, with optional placeholder replacements.",
|
|
35635
|
+
annotations: { destructiveHint: true },
|
|
35632
35636
|
inputSchema: external_exports.object({
|
|
35633
35637
|
templateId: external_exports.string().describe("Template presentation ID"),
|
|
35634
35638
|
title: external_exports.string().describe("New presentation title"),
|
|
@@ -35652,6 +35656,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35652
35656
|
});
|
|
35653
35657
|
server.registerTool("gog_slides_add_slide", {
|
|
35654
35658
|
description: "Add a new slide to a presentation from a local image, with optional speaker notes.",
|
|
35659
|
+
annotations: { destructiveHint: true },
|
|
35655
35660
|
inputSchema: external_exports.object({
|
|
35656
35661
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35657
35662
|
image: external_exports.string().describe("Path to the local image file"),
|
|
@@ -35669,6 +35674,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35669
35674
|
});
|
|
35670
35675
|
server.registerTool("gog_slides_insert_image", {
|
|
35671
35676
|
description: "Place an image on an existing slide at a given size and position, from a local file (image) or a public HTTPS URL (url \u2014 no Drive upload or sharing required). Unlike gog_slides_add_slide (which creates a new full-bleed image slide), this inserts onto a slide you already have. width is required; omit height to keep aspect ratio when using a local file (gog requires both width and height when using url).",
|
|
35677
|
+
annotations: { destructiveHint: false },
|
|
35672
35678
|
inputSchema: external_exports.object({
|
|
35673
35679
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35674
35680
|
slideId: external_exports.string().describe("Slide ID (object ID of the target slide)"),
|
|
@@ -35705,6 +35711,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35705
35711
|
});
|
|
35706
35712
|
server.registerTool("gog_slides_skip_slide", {
|
|
35707
35713
|
description: "Skip a slide during presentation \u2014 it stays in the deck at its current position but is not shown when presenting (and is left out of a PDF export). Use this instead of gog_slides_delete_slide when a slide should be omitted from a talk without losing it. Reverse with gog_slides_unskip_slide; gog_slides_list_slides reports which slides are skipped.",
|
|
35714
|
+
annotations: { destructiveHint: false },
|
|
35708
35715
|
inputSchema: external_exports.object({
|
|
35709
35716
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35710
35717
|
slideId: external_exports.string().describe("Slide ID to skip (from gog_slides_list_slides)"),
|
|
@@ -35715,6 +35722,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35715
35722
|
});
|
|
35716
35723
|
server.registerTool("gog_slides_unskip_slide", {
|
|
35717
35724
|
description: "Include a previously skipped slide again when the deck is presented. Safe to call on a slide that was never skipped.",
|
|
35725
|
+
annotations: { destructiveHint: false },
|
|
35718
35726
|
inputSchema: external_exports.object({
|
|
35719
35727
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35720
35728
|
slideId: external_exports.string().describe("Slide ID to unskip (from gog_slides_list_slides)"),
|
|
@@ -35816,6 +35824,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35816
35824
|
});
|
|
35817
35825
|
server.registerTool("gog_slides_new_slide", {
|
|
35818
35826
|
description: "Create a new native themed slide with a predefined layout (default BLANK) or an exact presentation layout object ID, at a zero-based insertion index.",
|
|
35827
|
+
annotations: { destructiveHint: false },
|
|
35819
35828
|
inputSchema: external_exports.object({
|
|
35820
35829
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35821
35830
|
layout: external_exports.enum(["BIG_NUMBER", "BLANK", "CAPTION_ONLY", "MAIN_POINT", "ONE_COLUMN_TEXT", "SECTION_HEADER", "SECTION_TITLE_AND_DESCRIPTION", "TITLE", "TITLE_AND_BODY", "TITLE_AND_TWO_COLUMNS", "TITLE_ONLY"]).optional().describe("Predefined slide layout (default: BLANK). Mutually exclusive with layoutId."),
|
|
@@ -35832,6 +35841,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35832
35841
|
});
|
|
35833
35842
|
server.registerTool("gog_slides_duplicate_slide", {
|
|
35834
35843
|
description: "Duplicate a slide by object ID, optionally placing the copy at a zero-based insertion index.",
|
|
35844
|
+
annotations: { destructiveHint: false },
|
|
35835
35845
|
inputSchema: external_exports.object({
|
|
35836
35846
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35837
35847
|
slideId: external_exports.string().describe("Slide object ID to duplicate"),
|
|
@@ -35845,6 +35855,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35845
35855
|
});
|
|
35846
35856
|
server.registerTool("gog_slides_move_slide", {
|
|
35847
35857
|
description: "Move a slide to a zero-based insertion index within the presentation.",
|
|
35858
|
+
annotations: { destructiveHint: false },
|
|
35848
35859
|
inputSchema: external_exports.object({
|
|
35849
35860
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35850
35861
|
slideId: external_exports.string().describe("Slide object ID to move"),
|
|
@@ -35877,6 +35888,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35877
35888
|
});
|
|
35878
35889
|
server.registerTool("gog_slides_style_text", {
|
|
35879
35890
|
description: "Apply range-scoped text styling to one page element. range is a UTF-16 start:end span (use gog_slides_locate to find it). Boolean flags set the attribute; the no* flags clear it.",
|
|
35891
|
+
annotations: { destructiveHint: false },
|
|
35880
35892
|
inputSchema: external_exports.object({
|
|
35881
35893
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35882
35894
|
objectId: external_exports.string().describe("Object ID of the shape or table cell containing the text"),
|
|
@@ -35907,6 +35919,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35907
35919
|
});
|
|
35908
35920
|
server.registerTool("gog_slides_link", {
|
|
35909
35921
|
description: "Apply or clear a hyperlink on a UTF-16 text range in one page element. Provide url to set the link, or clear=true to remove it.",
|
|
35922
|
+
annotations: { destructiveHint: false },
|
|
35910
35923
|
inputSchema: external_exports.object({
|
|
35911
35924
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35912
35925
|
objectId: external_exports.string().describe("Object ID of the shape or table cell containing the text"),
|
|
@@ -35923,6 +35936,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35923
35936
|
});
|
|
35924
35937
|
server.registerTool("gog_slides_bullets", {
|
|
35925
35938
|
description: "Turn paragraph bullets on or off for a UTF-16 paragraph range in one page element. Use on (optionally with a preset glyph) or off.",
|
|
35939
|
+
annotations: { destructiveHint: false },
|
|
35926
35940
|
inputSchema: external_exports.object({
|
|
35927
35941
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35928
35942
|
objectId: external_exports.string().describe("Object ID of the shape or table cell containing the paragraphs"),
|
|
@@ -35962,6 +35976,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35962
35976
|
});
|
|
35963
35977
|
server.registerTool("gog_slides_element_create_shape", {
|
|
35964
35978
|
description: "Create a native shape on a slide. type is a Slides shape type (e.g. RECTANGLE, TEXT_BOX, ELLIPSE, ROUND_RECTANGLE). Position/size are in unit (default PT).",
|
|
35979
|
+
annotations: { destructiveHint: false },
|
|
35965
35980
|
inputSchema: external_exports.object({
|
|
35966
35981
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35967
35982
|
slideId: external_exports.string().describe("Slide object ID to create the shape on"),
|
|
@@ -35987,6 +36002,7 @@ function registerExtraSlidesTools(server) {
|
|
|
35987
36002
|
});
|
|
35988
36003
|
server.registerTool("gog_slides_element_create_line", {
|
|
35989
36004
|
description: "Create a native line on a slide. category is the connector routing (STRAIGHT, BENT, CURVED). Start position and extent are in unit (default PT).",
|
|
36005
|
+
annotations: { destructiveHint: false },
|
|
35990
36006
|
inputSchema: external_exports.object({
|
|
35991
36007
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
35992
36008
|
slideId: external_exports.string().describe("Slide object ID to create the line on"),
|
|
@@ -36012,6 +36028,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36012
36028
|
});
|
|
36013
36029
|
server.registerTool("gog_slides_element_style", {
|
|
36014
36030
|
description: "Style a shape fill/outline or a line. Set kind to shape or line. Colors are #RGB or #RRGGBB.",
|
|
36031
|
+
annotations: { destructiveHint: false },
|
|
36015
36032
|
inputSchema: external_exports.object({
|
|
36016
36033
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36017
36034
|
objectId: external_exports.string().describe("Object ID of the shape or line"),
|
|
@@ -36037,6 +36054,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36037
36054
|
});
|
|
36038
36055
|
server.registerTool("gog_slides_element_transform", {
|
|
36039
36056
|
description: "Move, resize, rotate, or shear a page element. apply-mode RELATIVE (default) composes with the existing transform; ABSOLUTE replaces it. Translation is in unit (default PT).",
|
|
36057
|
+
annotations: { destructiveHint: false },
|
|
36040
36058
|
inputSchema: external_exports.object({
|
|
36041
36059
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36042
36060
|
objectId: external_exports.string().describe("Object ID of the element to transform"),
|
|
@@ -36066,6 +36084,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36066
36084
|
});
|
|
36067
36085
|
server.registerTool("gog_slides_element_z_order", {
|
|
36068
36086
|
description: "Change a page element's stacking order.",
|
|
36087
|
+
annotations: { destructiveHint: false },
|
|
36069
36088
|
inputSchema: external_exports.object({
|
|
36070
36089
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36071
36090
|
objectId: external_exports.string().describe("Object ID of the element to restack"),
|
|
@@ -36077,6 +36096,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36077
36096
|
});
|
|
36078
36097
|
server.registerTool("gog_slides_element_group", {
|
|
36079
36098
|
description: "Group two or more page elements into a single group.",
|
|
36099
|
+
annotations: { destructiveHint: false },
|
|
36080
36100
|
inputSchema: external_exports.object({
|
|
36081
36101
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36082
36102
|
objectIds: external_exports.array(external_exports.string()).min(2).describe("Two or more element object IDs to group"),
|
|
@@ -36090,6 +36110,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36090
36110
|
});
|
|
36091
36111
|
server.registerTool("gog_slides_element_ungroup", {
|
|
36092
36112
|
description: "Ungroup one or more element groups back into their constituent elements.",
|
|
36113
|
+
annotations: { destructiveHint: false },
|
|
36093
36114
|
inputSchema: external_exports.object({
|
|
36094
36115
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36095
36116
|
groupIds: external_exports.array(external_exports.string()).min(1).describe("One or more group object IDs to ungroup"),
|
|
@@ -36100,6 +36121,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36100
36121
|
});
|
|
36101
36122
|
server.registerTool("gog_slides_element_alt_text", {
|
|
36102
36123
|
description: "Set or clear a page element's accessibility title and/or description. Pass an empty string to clear a field.",
|
|
36124
|
+
annotations: { destructiveHint: false },
|
|
36103
36125
|
inputSchema: external_exports.object({
|
|
36104
36126
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36105
36127
|
objectId: external_exports.string().describe("Object ID of the element"),
|
|
@@ -36126,6 +36148,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36126
36148
|
});
|
|
36127
36149
|
server.registerTool("gog_slides_table_create", {
|
|
36128
36150
|
description: "Create an auto-sized native table on a slide with the given row and column counts.",
|
|
36151
|
+
annotations: { destructiveHint: false },
|
|
36129
36152
|
inputSchema: external_exports.object({
|
|
36130
36153
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36131
36154
|
slideId: external_exports.string().describe("Slide object ID to create the table on"),
|
|
@@ -36141,6 +36164,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36141
36164
|
});
|
|
36142
36165
|
server.registerTool("gog_slides_table_cell_style", {
|
|
36143
36166
|
description: "Style one zero-based table cell: background fill, vertical content alignment, and inline text styling (optionally scoped to a UTF-16 range within the cell). Boolean flags set the attribute; the no* flags clear it.",
|
|
36167
|
+
annotations: { destructiveHint: false },
|
|
36144
36168
|
inputSchema: external_exports.object({
|
|
36145
36169
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36146
36170
|
tableObjectId: external_exports.string().describe("Table object ID"),
|
|
@@ -36180,6 +36204,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36180
36204
|
});
|
|
36181
36205
|
server.registerTool("gog_slides_table_border_style", {
|
|
36182
36206
|
description: "Style borders around or within a zero-based table cell range. position selects which borders are affected; dash sets the line style.",
|
|
36207
|
+
annotations: { destructiveHint: false },
|
|
36183
36208
|
inputSchema: external_exports.object({
|
|
36184
36209
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36185
36210
|
tableObjectId: external_exports.string().describe("Table object ID"),
|
|
@@ -36207,6 +36232,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36207
36232
|
});
|
|
36208
36233
|
server.registerTool("gog_slides_table_column_insert", {
|
|
36209
36234
|
description: "Insert one or more columns relative to a zero-based table column. Inserts to the left by default, or to the right with right=true.",
|
|
36235
|
+
annotations: { destructiveHint: false },
|
|
36210
36236
|
inputSchema: external_exports.object({
|
|
36211
36237
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36212
36238
|
tableObjectId: external_exports.string().describe("Table object ID"),
|
|
@@ -36235,6 +36261,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36235
36261
|
});
|
|
36236
36262
|
server.registerTool("gog_slides_table_column_size", {
|
|
36237
36263
|
description: "Set the width of a zero-based table column.",
|
|
36264
|
+
annotations: { destructiveHint: false },
|
|
36238
36265
|
inputSchema: external_exports.object({
|
|
36239
36266
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36240
36267
|
tableObjectId: external_exports.string().describe("Table object ID"),
|
|
@@ -36247,6 +36274,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36247
36274
|
});
|
|
36248
36275
|
server.registerTool("gog_slides_table_row_insert", {
|
|
36249
36276
|
description: "Insert one or more rows relative to a zero-based table row. Inserts above by default, or below with below=true.",
|
|
36277
|
+
annotations: { destructiveHint: false },
|
|
36250
36278
|
inputSchema: external_exports.object({
|
|
36251
36279
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36252
36280
|
tableObjectId: external_exports.string().describe("Table object ID"),
|
|
@@ -36275,6 +36303,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36275
36303
|
});
|
|
36276
36304
|
server.registerTool("gog_slides_table_row_size", {
|
|
36277
36305
|
description: "Set the minimum height of a zero-based table row.",
|
|
36306
|
+
annotations: { destructiveHint: false },
|
|
36278
36307
|
inputSchema: external_exports.object({
|
|
36279
36308
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36280
36309
|
tableObjectId: external_exports.string().describe("Table object ID"),
|
|
@@ -36305,6 +36334,7 @@ function registerExtraSlidesTools(server) {
|
|
|
36305
36334
|
});
|
|
36306
36335
|
server.registerTool("gog_slides_table_unmerge", {
|
|
36307
36336
|
description: "Unmerge (split) a rectangular range of previously merged cells, starting at a zero-based cell.",
|
|
36337
|
+
annotations: { destructiveHint: false },
|
|
36308
36338
|
inputSchema: external_exports.object({
|
|
36309
36339
|
presentationId: external_exports.string().describe("Presentation ID"),
|
|
36310
36340
|
tableObjectId: external_exports.string().describe("Table object ID"),
|
package/manifest.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"manifest_version": "0.3",
|
|
4
4
|
"name": "gogcli-mcp-slides",
|
|
5
5
|
"display_name": "gogcli (Slides)",
|
|
6
|
-
"version": "4.2.
|
|
6
|
+
"version": "4.2.4",
|
|
7
7
|
"description": "Extended Google Slides for Claude via gogcli — auth + full Slides support (create, edit, export, templates, markdown)",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Chris Hall",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gogcli-mcp-slides",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.4",
|
|
4
4
|
"mcpName": "io.github.chrischall/gogcli-mcp-slides",
|
|
5
5
|
"description": "Extended Google Slides MCP server via gogcli — auth + full Slides support",
|
|
6
6
|
"author": "Claude Code (AI) <https://www.anthropic.com/claude>",
|
package/server.json
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"source": "github",
|
|
8
8
|
"subfolder": "packages/gogcli-mcp-slides"
|
|
9
9
|
},
|
|
10
|
-
"version": "4.2.
|
|
10
|
+
"version": "4.2.4",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "gogcli-mcp-slides",
|
|
15
|
-
"version": "4.2.
|
|
15
|
+
"version": "4.2.4",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
},
|
|
@@ -27,6 +27,7 @@ import type { GogArg } from '../../../gogcli-mcp/src/lib.js';
|
|
|
27
27
|
export function registerExtraSlidesTools(server: McpServer): void {
|
|
28
28
|
server.registerTool('gog_slides_create_from_markdown', {
|
|
29
29
|
description: 'Create a new Google Slides presentation from markdown content (inline or from a file).',
|
|
30
|
+
annotations: { destructiveHint: true },
|
|
30
31
|
inputSchema: z.object({
|
|
31
32
|
title: z.string().describe('Presentation title'),
|
|
32
33
|
content: z.string().optional().describe('Inline markdown content'),
|
|
@@ -46,6 +47,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
46
47
|
|
|
47
48
|
server.registerTool('gog_slides_create_from_template', {
|
|
48
49
|
description: 'Create a new Google Slides presentation from a template, with optional placeholder replacements.',
|
|
50
|
+
annotations: { destructiveHint: true },
|
|
49
51
|
inputSchema: z.object({
|
|
50
52
|
templateId: z.string().describe('Template presentation ID'),
|
|
51
53
|
title: z.string().describe('New presentation title'),
|
|
@@ -70,6 +72,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
70
72
|
|
|
71
73
|
server.registerTool('gog_slides_add_slide', {
|
|
72
74
|
description: 'Add a new slide to a presentation from a local image, with optional speaker notes.',
|
|
75
|
+
annotations: { destructiveHint: true },
|
|
73
76
|
inputSchema: z.object({
|
|
74
77
|
presentationId: z.string().describe('Presentation ID'),
|
|
75
78
|
image: z.string().describe('Path to the local image file'),
|
|
@@ -88,6 +91,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
88
91
|
|
|
89
92
|
server.registerTool('gog_slides_insert_image', {
|
|
90
93
|
description: 'Place an image on an existing slide at a given size and position, from a local file (image) or a public HTTPS URL (url — no Drive upload or sharing required). Unlike gog_slides_add_slide (which creates a new full-bleed image slide), this inserts onto a slide you already have. width is required; omit height to keep aspect ratio when using a local file (gog requires both width and height when using url).',
|
|
94
|
+
annotations: { destructiveHint: false },
|
|
91
95
|
inputSchema: z.object({
|
|
92
96
|
presentationId: z.string().describe('Presentation ID'),
|
|
93
97
|
slideId: z.string().describe('Slide ID (object ID of the target slide)'),
|
|
@@ -138,6 +142,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
138
142
|
'Skip a slide during presentation — it stays in the deck at its current position but is not shown when presenting '
|
|
139
143
|
+ '(and is left out of a PDF export). Use this instead of gog_slides_delete_slide when a slide should be omitted from '
|
|
140
144
|
+ 'a talk without losing it. Reverse with gog_slides_unskip_slide; gog_slides_list_slides reports which slides are skipped.',
|
|
145
|
+
annotations: { destructiveHint: false },
|
|
141
146
|
inputSchema: z.object({
|
|
142
147
|
presentationId: z.string().describe('Presentation ID'),
|
|
143
148
|
slideId: z.string().describe('Slide ID to skip (from gog_slides_list_slides)'),
|
|
@@ -150,6 +155,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
150
155
|
server.registerTool('gog_slides_unskip_slide', {
|
|
151
156
|
description:
|
|
152
157
|
'Include a previously skipped slide again when the deck is presented. Safe to call on a slide that was never skipped.',
|
|
158
|
+
annotations: { destructiveHint: false },
|
|
153
159
|
inputSchema: z.object({
|
|
154
160
|
presentationId: z.string().describe('Presentation ID'),
|
|
155
161
|
slideId: z.string().describe('Slide ID to unskip (from gog_slides_list_slides)'),
|
|
@@ -262,6 +268,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
262
268
|
|
|
263
269
|
server.registerTool('gog_slides_new_slide', {
|
|
264
270
|
description: 'Create a new native themed slide with a predefined layout (default BLANK) or an exact presentation layout object ID, at a zero-based insertion index.',
|
|
271
|
+
annotations: { destructiveHint: false },
|
|
265
272
|
inputSchema: z.object({
|
|
266
273
|
presentationId: z.string().describe('Presentation ID'),
|
|
267
274
|
layout: z.enum(['BIG_NUMBER', 'BLANK', 'CAPTION_ONLY', 'MAIN_POINT', 'ONE_COLUMN_TEXT', 'SECTION_HEADER', 'SECTION_TITLE_AND_DESCRIPTION', 'TITLE', 'TITLE_AND_BODY', 'TITLE_AND_TWO_COLUMNS', 'TITLE_ONLY']).optional().describe('Predefined slide layout (default: BLANK). Mutually exclusive with layoutId.'),
|
|
@@ -279,6 +286,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
279
286
|
|
|
280
287
|
server.registerTool('gog_slides_duplicate_slide', {
|
|
281
288
|
description: 'Duplicate a slide by object ID, optionally placing the copy at a zero-based insertion index.',
|
|
289
|
+
annotations: { destructiveHint: false },
|
|
282
290
|
inputSchema: z.object({
|
|
283
291
|
presentationId: z.string().describe('Presentation ID'),
|
|
284
292
|
slideId: z.string().describe('Slide object ID to duplicate'),
|
|
@@ -293,6 +301,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
293
301
|
|
|
294
302
|
server.registerTool('gog_slides_move_slide', {
|
|
295
303
|
description: 'Move a slide to a zero-based insertion index within the presentation.',
|
|
304
|
+
annotations: { destructiveHint: false },
|
|
296
305
|
inputSchema: z.object({
|
|
297
306
|
presentationId: z.string().describe('Presentation ID'),
|
|
298
307
|
slideId: z.string().describe('Slide object ID to move'),
|
|
@@ -329,6 +338,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
329
338
|
|
|
330
339
|
server.registerTool('gog_slides_style_text', {
|
|
331
340
|
description: 'Apply range-scoped text styling to one page element. range is a UTF-16 start:end span (use gog_slides_locate to find it). Boolean flags set the attribute; the no* flags clear it.',
|
|
341
|
+
annotations: { destructiveHint: false },
|
|
332
342
|
inputSchema: z.object({
|
|
333
343
|
presentationId: z.string().describe('Presentation ID'),
|
|
334
344
|
objectId: z.string().describe('Object ID of the shape or table cell containing the text'),
|
|
@@ -360,6 +370,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
360
370
|
|
|
361
371
|
server.registerTool('gog_slides_link', {
|
|
362
372
|
description: 'Apply or clear a hyperlink on a UTF-16 text range in one page element. Provide url to set the link, or clear=true to remove it.',
|
|
373
|
+
annotations: { destructiveHint: false },
|
|
363
374
|
inputSchema: z.object({
|
|
364
375
|
presentationId: z.string().describe('Presentation ID'),
|
|
365
376
|
objectId: z.string().describe('Object ID of the shape or table cell containing the text'),
|
|
@@ -377,6 +388,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
377
388
|
|
|
378
389
|
server.registerTool('gog_slides_bullets', {
|
|
379
390
|
description: 'Turn paragraph bullets on or off for a UTF-16 paragraph range in one page element. Use on (optionally with a preset glyph) or off.',
|
|
391
|
+
annotations: { destructiveHint: false },
|
|
380
392
|
inputSchema: z.object({
|
|
381
393
|
presentationId: z.string().describe('Presentation ID'),
|
|
382
394
|
objectId: z.string().describe('Object ID of the shape or table cell containing the paragraphs'),
|
|
@@ -420,6 +432,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
420
432
|
|
|
421
433
|
server.registerTool('gog_slides_element_create_shape', {
|
|
422
434
|
description: 'Create a native shape on a slide. type is a Slides shape type (e.g. RECTANGLE, TEXT_BOX, ELLIPSE, ROUND_RECTANGLE). Position/size are in unit (default PT).',
|
|
435
|
+
annotations: { destructiveHint: false },
|
|
423
436
|
inputSchema: z.object({
|
|
424
437
|
presentationId: z.string().describe('Presentation ID'),
|
|
425
438
|
slideId: z.string().describe('Slide object ID to create the shape on'),
|
|
@@ -446,6 +459,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
446
459
|
|
|
447
460
|
server.registerTool('gog_slides_element_create_line', {
|
|
448
461
|
description: 'Create a native line on a slide. category is the connector routing (STRAIGHT, BENT, CURVED). Start position and extent are in unit (default PT).',
|
|
462
|
+
annotations: { destructiveHint: false },
|
|
449
463
|
inputSchema: z.object({
|
|
450
464
|
presentationId: z.string().describe('Presentation ID'),
|
|
451
465
|
slideId: z.string().describe('Slide object ID to create the line on'),
|
|
@@ -472,6 +486,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
472
486
|
|
|
473
487
|
server.registerTool('gog_slides_element_style', {
|
|
474
488
|
description: 'Style a shape fill/outline or a line. Set kind to shape or line. Colors are #RGB or #RRGGBB.',
|
|
489
|
+
annotations: { destructiveHint: false },
|
|
475
490
|
inputSchema: z.object({
|
|
476
491
|
presentationId: z.string().describe('Presentation ID'),
|
|
477
492
|
objectId: z.string().describe('Object ID of the shape or line'),
|
|
@@ -498,6 +513,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
498
513
|
|
|
499
514
|
server.registerTool('gog_slides_element_transform', {
|
|
500
515
|
description: 'Move, resize, rotate, or shear a page element. apply-mode RELATIVE (default) composes with the existing transform; ABSOLUTE replaces it. Translation is in unit (default PT).',
|
|
516
|
+
annotations: { destructiveHint: false },
|
|
501
517
|
inputSchema: z.object({
|
|
502
518
|
presentationId: z.string().describe('Presentation ID'),
|
|
503
519
|
objectId: z.string().describe('Object ID of the element to transform'),
|
|
@@ -528,6 +544,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
528
544
|
|
|
529
545
|
server.registerTool('gog_slides_element_z_order', {
|
|
530
546
|
description: 'Change a page element\'s stacking order.',
|
|
547
|
+
annotations: { destructiveHint: false },
|
|
531
548
|
inputSchema: z.object({
|
|
532
549
|
presentationId: z.string().describe('Presentation ID'),
|
|
533
550
|
objectId: z.string().describe('Object ID of the element to restack'),
|
|
@@ -540,6 +557,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
540
557
|
|
|
541
558
|
server.registerTool('gog_slides_element_group', {
|
|
542
559
|
description: 'Group two or more page elements into a single group.',
|
|
560
|
+
annotations: { destructiveHint: false },
|
|
543
561
|
inputSchema: z.object({
|
|
544
562
|
presentationId: z.string().describe('Presentation ID'),
|
|
545
563
|
objectIds: z.array(z.string()).min(2).describe('Two or more element object IDs to group'),
|
|
@@ -554,6 +572,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
554
572
|
|
|
555
573
|
server.registerTool('gog_slides_element_ungroup', {
|
|
556
574
|
description: 'Ungroup one or more element groups back into their constituent elements.',
|
|
575
|
+
annotations: { destructiveHint: false },
|
|
557
576
|
inputSchema: z.object({
|
|
558
577
|
presentationId: z.string().describe('Presentation ID'),
|
|
559
578
|
groupIds: z.array(z.string()).min(1).describe('One or more group object IDs to ungroup'),
|
|
@@ -565,6 +584,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
565
584
|
|
|
566
585
|
server.registerTool('gog_slides_element_alt_text', {
|
|
567
586
|
description: 'Set or clear a page element\'s accessibility title and/or description. Pass an empty string to clear a field.',
|
|
587
|
+
annotations: { destructiveHint: false },
|
|
568
588
|
inputSchema: z.object({
|
|
569
589
|
presentationId: z.string().describe('Presentation ID'),
|
|
570
590
|
objectId: z.string().describe('Object ID of the element'),
|
|
@@ -596,6 +616,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
596
616
|
|
|
597
617
|
server.registerTool('gog_slides_table_create', {
|
|
598
618
|
description: 'Create an auto-sized native table on a slide with the given row and column counts.',
|
|
619
|
+
annotations: { destructiveHint: false },
|
|
599
620
|
inputSchema: z.object({
|
|
600
621
|
presentationId: z.string().describe('Presentation ID'),
|
|
601
622
|
slideId: z.string().describe('Slide object ID to create the table on'),
|
|
@@ -612,6 +633,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
612
633
|
|
|
613
634
|
server.registerTool('gog_slides_table_cell_style', {
|
|
614
635
|
description: 'Style one zero-based table cell: background fill, vertical content alignment, and inline text styling (optionally scoped to a UTF-16 range within the cell). Boolean flags set the attribute; the no* flags clear it.',
|
|
636
|
+
annotations: { destructiveHint: false },
|
|
615
637
|
inputSchema: z.object({
|
|
616
638
|
presentationId: z.string().describe('Presentation ID'),
|
|
617
639
|
tableObjectId: z.string().describe('Table object ID'),
|
|
@@ -652,6 +674,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
652
674
|
|
|
653
675
|
server.registerTool('gog_slides_table_border_style', {
|
|
654
676
|
description: 'Style borders around or within a zero-based table cell range. position selects which borders are affected; dash sets the line style.',
|
|
677
|
+
annotations: { destructiveHint: false },
|
|
655
678
|
inputSchema: z.object({
|
|
656
679
|
presentationId: z.string().describe('Presentation ID'),
|
|
657
680
|
tableObjectId: z.string().describe('Table object ID'),
|
|
@@ -680,6 +703,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
680
703
|
|
|
681
704
|
server.registerTool('gog_slides_table_column_insert', {
|
|
682
705
|
description: 'Insert one or more columns relative to a zero-based table column. Inserts to the left by default, or to the right with right=true.',
|
|
706
|
+
annotations: { destructiveHint: false },
|
|
683
707
|
inputSchema: z.object({
|
|
684
708
|
presentationId: z.string().describe('Presentation ID'),
|
|
685
709
|
tableObjectId: z.string().describe('Table object ID'),
|
|
@@ -710,6 +734,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
710
734
|
|
|
711
735
|
server.registerTool('gog_slides_table_column_size', {
|
|
712
736
|
description: 'Set the width of a zero-based table column.',
|
|
737
|
+
annotations: { destructiveHint: false },
|
|
713
738
|
inputSchema: z.object({
|
|
714
739
|
presentationId: z.string().describe('Presentation ID'),
|
|
715
740
|
tableObjectId: z.string().describe('Table object ID'),
|
|
@@ -723,6 +748,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
723
748
|
|
|
724
749
|
server.registerTool('gog_slides_table_row_insert', {
|
|
725
750
|
description: 'Insert one or more rows relative to a zero-based table row. Inserts above by default, or below with below=true.',
|
|
751
|
+
annotations: { destructiveHint: false },
|
|
726
752
|
inputSchema: z.object({
|
|
727
753
|
presentationId: z.string().describe('Presentation ID'),
|
|
728
754
|
tableObjectId: z.string().describe('Table object ID'),
|
|
@@ -753,6 +779,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
753
779
|
|
|
754
780
|
server.registerTool('gog_slides_table_row_size', {
|
|
755
781
|
description: 'Set the minimum height of a zero-based table row.',
|
|
782
|
+
annotations: { destructiveHint: false },
|
|
756
783
|
inputSchema: z.object({
|
|
757
784
|
presentationId: z.string().describe('Presentation ID'),
|
|
758
785
|
tableObjectId: z.string().describe('Table object ID'),
|
|
@@ -785,6 +812,7 @@ export function registerExtraSlidesTools(server: McpServer): void {
|
|
|
785
812
|
|
|
786
813
|
server.registerTool('gog_slides_table_unmerge', {
|
|
787
814
|
description: 'Unmerge (split) a rectangular range of previously merged cells, starting at a zero-based cell.',
|
|
815
|
+
annotations: { destructiveHint: false },
|
|
788
816
|
inputSchema: z.object({
|
|
789
817
|
presentationId: z.string().describe('Presentation ID'),
|
|
790
818
|
tableObjectId: z.string().describe('Table object ID'),
|