gogcli-mcp 2.0.4 → 2.0.6

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.
Files changed (44) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +5 -529
  6. package/dist/lib.d.ts +6 -0
  7. package/dist/lib.d.ts.map +1 -0
  8. package/dist/lib.js +5 -529
  9. package/dist/runner.d.ts +12 -0
  10. package/dist/runner.d.ts.map +1 -0
  11. package/dist/server.d.ts +7 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/tools/auth.d.ts +3 -0
  14. package/dist/tools/auth.d.ts.map +1 -0
  15. package/dist/tools/calendar.d.ts +3 -0
  16. package/dist/tools/calendar.d.ts.map +1 -0
  17. package/dist/tools/contacts.d.ts +3 -0
  18. package/dist/tools/contacts.d.ts.map +1 -0
  19. package/dist/tools/docs.d.ts +3 -0
  20. package/dist/tools/docs.d.ts.map +1 -0
  21. package/dist/tools/drive.d.ts +3 -0
  22. package/dist/tools/drive.d.ts.map +1 -0
  23. package/dist/tools/gmail.d.ts +3 -0
  24. package/dist/tools/gmail.d.ts.map +1 -0
  25. package/dist/tools/sheets.d.ts +3 -0
  26. package/dist/tools/sheets.d.ts.map +1 -0
  27. package/dist/tools/tasks.d.ts +3 -0
  28. package/dist/tools/tasks.d.ts.map +1 -0
  29. package/dist/tools/utils.d.ts +14 -0
  30. package/dist/tools/utils.d.ts.map +1 -0
  31. package/manifest.json +1 -145
  32. package/package.json +1 -1
  33. package/server.json +3 -3
  34. package/src/runner.ts +4 -1
  35. package/src/tools/calendar.ts +0 -92
  36. package/src/tools/classroom.ts +2 -297
  37. package/src/tools/contacts.ts +1 -75
  38. package/src/tools/slides.ts +1 -108
  39. package/tests/helpers/extras-harness.ts +31 -0
  40. package/tests/runner.test.ts +30 -0
  41. package/tests/tools/calendar.test.ts +0 -137
  42. package/tests/tools/classroom.test.ts +0 -352
  43. package/tests/tools/contacts.test.ts +0 -100
  44. package/tests/tools/slides.test.ts +6 -278
package/dist/index.js CHANGED
@@ -31145,88 +31145,6 @@ function registerCalendarTools(server2) {
31145
31145
  }, async ({ subcommand, args, account }) => {
31146
31146
  return runOrDiagnose(["calendar", subcommand, ...args], { account });
31147
31147
  });
31148
- server2.registerTool("gog_meet_create", {
31149
- description: "Create a Google Meet space and return its meeting code.",
31150
- inputSchema: {
31151
- access: external_exports.enum(["open", "trusted", "restricted"]).optional().describe("Access type (default: trusted)"),
31152
- open: external_exports.boolean().optional().describe("Open the meeting in a browser after creation"),
31153
- account: accountParam
31154
- }
31155
- }, async ({ access, open, account }) => {
31156
- const args = ["meet", "create"];
31157
- if (access) args.push(`--access=${access}`);
31158
- if (open) args.push("--open");
31159
- return runOrDiagnose(args, { account });
31160
- });
31161
- server2.registerTool("gog_meet_get", {
31162
- description: "Get a Google Meet space by its meeting code.",
31163
- annotations: { readOnlyHint: true },
31164
- inputSchema: {
31165
- meetingCode: external_exports.string().describe("Meeting code (e.g. abc-defg-hij)"),
31166
- account: accountParam
31167
- }
31168
- }, async ({ meetingCode, account }) => {
31169
- return runOrDiagnose(["meet", "get", meetingCode], { account });
31170
- });
31171
- server2.registerTool("gog_meet_update", {
31172
- description: "Update a Google Meet space configuration.",
31173
- annotations: { destructiveHint: true },
31174
- inputSchema: {
31175
- meetingCode: external_exports.string().describe("Meeting code"),
31176
- access: external_exports.enum(["open", "trusted", "restricted"]).optional().describe("Access type"),
31177
- account: accountParam
31178
- }
31179
- }, async ({ meetingCode, access, account }) => {
31180
- const args = ["meet", "update", meetingCode];
31181
- if (access) args.push(`--access=${access}`);
31182
- return runOrDiagnose(args, { account });
31183
- });
31184
- server2.registerTool("gog_meet_end", {
31185
- description: "End the active conference in a Google Meet space.",
31186
- annotations: { destructiveHint: true },
31187
- inputSchema: {
31188
- meetingCode: external_exports.string().describe("Meeting code"),
31189
- account: accountParam
31190
- }
31191
- }, async ({ meetingCode, account }) => {
31192
- return runOrDiagnose(["meet", "end", meetingCode], { account });
31193
- });
31194
- server2.registerTool("gog_meet_history", {
31195
- description: "List past calls (conferences) in a Google Meet space.",
31196
- annotations: { readOnlyHint: true },
31197
- inputSchema: {
31198
- meetingCode: external_exports.string().describe("Meeting code"),
31199
- max: external_exports.number().optional().describe("Max results (default: 20)"),
31200
- page: external_exports.string().optional().describe("Page token"),
31201
- all: external_exports.boolean().optional().describe("Fetch all pages"),
31202
- account: accountParam
31203
- }
31204
- }, async ({ meetingCode, max, page, all, account }) => {
31205
- const args = ["meet", "history", meetingCode];
31206
- if (max !== void 0) args.push(`--max=${max}`);
31207
- if (page) args.push(`--page=${page}`);
31208
- if (all) args.push("--all");
31209
- return runOrDiagnose(args, { account });
31210
- });
31211
- server2.registerTool("gog_meet_participants", {
31212
- description: "List participants from the latest (or a specific) Meet call.",
31213
- annotations: { readOnlyHint: true },
31214
- inputSchema: {
31215
- meetingCode: external_exports.string().describe("Meeting code"),
31216
- conference: external_exports.string().optional().describe("Specific conference ID (default: most recent)"),
31217
- max: external_exports.number().optional().describe("Max results (default: 50)"),
31218
- page: external_exports.string().optional().describe("Page token"),
31219
- all: external_exports.boolean().optional().describe("Fetch all pages"),
31220
- account: accountParam
31221
- }
31222
- }, async ({ meetingCode, conference, max, page, all, account }) => {
31223
- const args = ["meet", "participants", meetingCode];
31224
- if (conference) args.push(`--conference=${conference}`);
31225
- if (max !== void 0) args.push(`--max=${max}`);
31226
- if (page) args.push(`--page=${page}`);
31227
- if (all) args.push("--all");
31228
- return runOrDiagnose(args, { account });
31229
- });
31230
31148
  }
31231
31149
 
31232
31150
  // src/tools/classroom.ts
@@ -31263,83 +31181,6 @@ function registerClassroomTools(server2) {
31263
31181
  }, async ({ courseId, account }) => {
31264
31182
  return runOrDiagnose(["classroom", "courses", "get", courseId], { account });
31265
31183
  });
31266
- server2.registerTool("gog_classroom_courses_create", {
31267
- description: "Create a new Google Classroom course.",
31268
- inputSchema: {
31269
- name: external_exports.string().describe("Course name"),
31270
- owner: external_exports.string().optional().describe('Owner user ID (default: "me")'),
31271
- section: external_exports.string().optional().describe("Section"),
31272
- descriptionHeading: external_exports.string().optional().describe("Description heading"),
31273
- description: external_exports.string().optional().describe("Description"),
31274
- room: external_exports.string().optional().describe("Room"),
31275
- state: external_exports.string().optional().describe("Course state: ACTIVE, ARCHIVED, PROVISIONED, DECLINED, SUSPENDED"),
31276
- account: accountParam
31277
- }
31278
- }, async ({ name, owner, section, descriptionHeading, description, room, state, account }) => {
31279
- const args = ["classroom", "courses", "create", `--name=${name}`];
31280
- if (owner) args.push(`--owner=${owner}`);
31281
- if (section) args.push(`--section=${section}`);
31282
- if (descriptionHeading) args.push(`--description-heading=${descriptionHeading}`);
31283
- if (description) args.push(`--description=${description}`);
31284
- if (room) args.push(`--room=${room}`);
31285
- if (state) args.push(`--state=${state}`);
31286
- return runOrDiagnose(args, { account });
31287
- });
31288
- server2.registerTool("gog_classroom_courses_update", {
31289
- description: "Update an existing Google Classroom course.",
31290
- annotations: { destructiveHint: true },
31291
- inputSchema: {
31292
- courseId: external_exports.string().describe("Course ID"),
31293
- name: external_exports.string().optional().describe("Course name"),
31294
- owner: external_exports.string().optional().describe("Owner user ID"),
31295
- section: external_exports.string().optional().describe("Section"),
31296
- descriptionHeading: external_exports.string().optional().describe("Description heading"),
31297
- description: external_exports.string().optional().describe("Description"),
31298
- room: external_exports.string().optional().describe("Room"),
31299
- state: external_exports.string().optional().describe("Course state: ACTIVE, ARCHIVED, PROVISIONED, DECLINED, SUSPENDED"),
31300
- account: accountParam
31301
- }
31302
- }, async ({ courseId, name, owner, section, descriptionHeading, description, room, state, account }) => {
31303
- const args = ["classroom", "courses", "update", courseId];
31304
- if (name) args.push(`--name=${name}`);
31305
- if (owner) args.push(`--owner=${owner}`);
31306
- if (section) args.push(`--section=${section}`);
31307
- if (descriptionHeading) args.push(`--description-heading=${descriptionHeading}`);
31308
- if (description) args.push(`--description=${description}`);
31309
- if (room) args.push(`--room=${room}`);
31310
- if (state) args.push(`--state=${state}`);
31311
- return runOrDiagnose(args, { account });
31312
- });
31313
- server2.registerTool("gog_classroom_courses_delete", {
31314
- description: "Delete a Google Classroom course.",
31315
- annotations: { destructiveHint: true },
31316
- inputSchema: {
31317
- courseId: external_exports.string().describe("Course ID"),
31318
- account: accountParam
31319
- }
31320
- }, async ({ courseId, account }) => {
31321
- return runOrDiagnose(["classroom", "courses", "delete", courseId], { account });
31322
- });
31323
- server2.registerTool("gog_classroom_courses_archive", {
31324
- description: "Archive a Google Classroom course.",
31325
- annotations: { destructiveHint: true },
31326
- inputSchema: {
31327
- courseId: external_exports.string().describe("Course ID"),
31328
- account: accountParam
31329
- }
31330
- }, async ({ courseId, account }) => {
31331
- return runOrDiagnose(["classroom", "courses", "archive", courseId], { account });
31332
- });
31333
- server2.registerTool("gog_classroom_courses_unarchive", {
31334
- description: "Unarchive a Google Classroom course (restore to ACTIVE).",
31335
- annotations: { destructiveHint: true },
31336
- inputSchema: {
31337
- courseId: external_exports.string().describe("Course ID"),
31338
- account: accountParam
31339
- }
31340
- }, async ({ courseId, account }) => {
31341
- return runOrDiagnose(["classroom", "courses", "unarchive", courseId], { account });
31342
- });
31343
31184
  server2.registerTool("gog_classroom_students_list", {
31344
31185
  description: "List students enrolled in a Google Classroom course.",
31345
31186
  annotations: { readOnlyHint: true },
@@ -31368,30 +31209,6 @@ function registerClassroomTools(server2) {
31368
31209
  }, async ({ courseId, userId, account }) => {
31369
31210
  return runOrDiagnose(["classroom", "students", "get", courseId, userId], { account });
31370
31211
  });
31371
- server2.registerTool("gog_classroom_students_add", {
31372
- description: "Add a student to a Google Classroom course.",
31373
- inputSchema: {
31374
- courseId: external_exports.string().describe("Course ID"),
31375
- userId: external_exports.string().describe('Student user ID (or "me")'),
31376
- enrollmentCode: external_exports.string().optional().describe("Enrollment code (required if adding self via code)"),
31377
- account: accountParam
31378
- }
31379
- }, async ({ courseId, userId, enrollmentCode, account }) => {
31380
- const args = ["classroom", "students", "add", courseId, userId];
31381
- if (enrollmentCode) args.push(`--enrollment-code=${enrollmentCode}`);
31382
- return runOrDiagnose(args, { account });
31383
- });
31384
- server2.registerTool("gog_classroom_students_remove", {
31385
- description: "Remove a student from a Google Classroom course.",
31386
- annotations: { destructiveHint: true },
31387
- inputSchema: {
31388
- courseId: external_exports.string().describe("Course ID"),
31389
- userId: external_exports.string().describe("Student user ID"),
31390
- account: accountParam
31391
- }
31392
- }, async ({ courseId, userId, account }) => {
31393
- return runOrDiagnose(["classroom", "students", "remove", courseId, userId], { account });
31394
- });
31395
31212
  server2.registerTool("gog_classroom_teachers_list", {
31396
31213
  description: "List teachers in a Google Classroom course.",
31397
31214
  annotations: { readOnlyHint: true },
@@ -31420,27 +31237,6 @@ function registerClassroomTools(server2) {
31420
31237
  }, async ({ courseId, userId, account }) => {
31421
31238
  return runOrDiagnose(["classroom", "teachers", "get", courseId, userId], { account });
31422
31239
  });
31423
- server2.registerTool("gog_classroom_teachers_add", {
31424
- description: "Add a teacher to a Google Classroom course.",
31425
- inputSchema: {
31426
- courseId: external_exports.string().describe("Course ID"),
31427
- userId: external_exports.string().describe("Teacher user ID"),
31428
- account: accountParam
31429
- }
31430
- }, async ({ courseId, userId, account }) => {
31431
- return runOrDiagnose(["classroom", "teachers", "add", courseId, userId], { account });
31432
- });
31433
- server2.registerTool("gog_classroom_teachers_remove", {
31434
- description: "Remove a teacher from a Google Classroom course.",
31435
- annotations: { destructiveHint: true },
31436
- inputSchema: {
31437
- courseId: external_exports.string().describe("Course ID"),
31438
- userId: external_exports.string().describe("Teacher user ID"),
31439
- account: accountParam
31440
- }
31441
- }, async ({ courseId, userId, account }) => {
31442
- return runOrDiagnose(["classroom", "teachers", "remove", courseId, userId], { account });
31443
- });
31444
31240
  server2.registerTool("gog_classroom_roster", {
31445
31241
  description: "List the full roster (students and/or teachers) of a Google Classroom course. Omit both flags to return both groups.",
31446
31242
  annotations: { readOnlyHint: true },
@@ -31498,78 +31294,6 @@ function registerClassroomTools(server2) {
31498
31294
  }, async ({ courseId, courseworkId, account }) => {
31499
31295
  return runOrDiagnose(["classroom", "coursework", "get", courseId, courseworkId], { account });
31500
31296
  });
31501
- server2.registerTool("gog_classroom_coursework_create", {
31502
- description: "Create a new coursework item (assignment, question, etc.) in a course.",
31503
- inputSchema: {
31504
- courseId: external_exports.string().describe("Course ID"),
31505
- title: external_exports.string().describe("Coursework title"),
31506
- description: external_exports.string().optional().describe("Description"),
31507
- type: external_exports.string().optional().describe("Work type (ASSIGNMENT, SHORT_ANSWER_QUESTION, MULTIPLE_CHOICE_QUESTION). Default: ASSIGNMENT"),
31508
- state: external_exports.string().optional().describe("State: PUBLISHED or DRAFT"),
31509
- maxPoints: external_exports.number().optional().describe("Max points"),
31510
- due: external_exports.string().optional().describe("Due datetime (combined date+time)"),
31511
- dueDate: external_exports.string().optional().describe("Due date (YYYY-MM-DD)"),
31512
- dueTime: external_exports.string().optional().describe("Due time (HH:MM)"),
31513
- scheduled: external_exports.string().optional().describe("Scheduled publish time"),
31514
- topic: external_exports.string().optional().describe("Topic ID"),
31515
- account: accountParam
31516
- }
31517
- }, async ({ courseId, title, description, type, state, maxPoints, due, dueDate, dueTime, scheduled, topic, account }) => {
31518
- const args = ["classroom", "coursework", "create", courseId, `--title=${title}`];
31519
- if (description) args.push(`--description=${description}`);
31520
- if (type) args.push(`--type=${type}`);
31521
- if (state) args.push(`--state=${state}`);
31522
- if (maxPoints !== void 0) args.push(`--max-points=${maxPoints}`);
31523
- if (due) args.push(`--due=${due}`);
31524
- if (dueDate) args.push(`--due-date=${dueDate}`);
31525
- if (dueTime) args.push(`--due-time=${dueTime}`);
31526
- if (scheduled) args.push(`--scheduled=${scheduled}`);
31527
- if (topic) args.push(`--topic=${topic}`);
31528
- return runOrDiagnose(args, { account });
31529
- });
31530
- server2.registerTool("gog_classroom_coursework_update", {
31531
- description: "Update an existing coursework item.",
31532
- annotations: { destructiveHint: true },
31533
- inputSchema: {
31534
- courseId: external_exports.string().describe("Course ID"),
31535
- courseworkId: external_exports.string().describe("Coursework ID"),
31536
- title: external_exports.string().optional().describe("New title"),
31537
- description: external_exports.string().optional().describe("New description"),
31538
- type: external_exports.string().optional().describe("Work type"),
31539
- state: external_exports.string().optional().describe("State: PUBLISHED or DRAFT"),
31540
- maxPoints: external_exports.number().optional().describe("Max points"),
31541
- due: external_exports.string().optional().describe("Due datetime"),
31542
- dueDate: external_exports.string().optional().describe("Due date (YYYY-MM-DD)"),
31543
- dueTime: external_exports.string().optional().describe("Due time (HH:MM)"),
31544
- scheduled: external_exports.string().optional().describe("Scheduled publish time"),
31545
- topic: external_exports.string().optional().describe("Topic ID"),
31546
- account: accountParam
31547
- }
31548
- }, async ({ courseId, courseworkId, title, description, type, state, maxPoints, due, dueDate, dueTime, scheduled, topic, account }) => {
31549
- const args = ["classroom", "coursework", "update", courseId, courseworkId];
31550
- if (title) args.push(`--title=${title}`);
31551
- if (description) args.push(`--description=${description}`);
31552
- if (type) args.push(`--type=${type}`);
31553
- if (state) args.push(`--state=${state}`);
31554
- if (maxPoints !== void 0) args.push(`--max-points=${maxPoints}`);
31555
- if (due) args.push(`--due=${due}`);
31556
- if (dueDate) args.push(`--due-date=${dueDate}`);
31557
- if (dueTime) args.push(`--due-time=${dueTime}`);
31558
- if (scheduled) args.push(`--scheduled=${scheduled}`);
31559
- if (topic) args.push(`--topic=${topic}`);
31560
- return runOrDiagnose(args, { account });
31561
- });
31562
- server2.registerTool("gog_classroom_coursework_delete", {
31563
- description: "Delete a coursework item.",
31564
- annotations: { destructiveHint: true },
31565
- inputSchema: {
31566
- courseId: external_exports.string().describe("Course ID"),
31567
- courseworkId: external_exports.string().describe("Coursework ID"),
31568
- account: accountParam
31569
- }
31570
- }, async ({ courseId, courseworkId, account }) => {
31571
- return runOrDiagnose(["classroom", "coursework", "delete", courseId, courseworkId], { account });
31572
- });
31573
31297
  server2.registerTool("gog_classroom_submissions_list", {
31574
31298
  description: "List student submissions for a coursework item.",
31575
31299
  annotations: { readOnlyHint: true },
@@ -31696,7 +31420,7 @@ function registerClassroomTools(server2) {
31696
31420
  inputSchema: {
31697
31421
  courseId: external_exports.string().describe("Course ID"),
31698
31422
  text: external_exports.string().describe("Announcement text"),
31699
- state: external_exports.string().optional().describe("State: PUBLISHED or DRAFT"),
31423
+ state: external_exports.enum(["PUBLISHED", "DRAFT"]).optional().describe("State"),
31700
31424
  scheduled: external_exports.string().optional().describe("Scheduled publish time"),
31701
31425
  account: accountParam
31702
31426
  }
@@ -31706,35 +31430,6 @@ function registerClassroomTools(server2) {
31706
31430
  if (scheduled) args.push(`--scheduled=${scheduled}`);
31707
31431
  return runOrDiagnose(args, { account });
31708
31432
  });
31709
- server2.registerTool("gog_classroom_announcements_update", {
31710
- description: "Update an existing announcement.",
31711
- annotations: { destructiveHint: true },
31712
- inputSchema: {
31713
- courseId: external_exports.string().describe("Course ID"),
31714
- announcementId: external_exports.string().describe("Announcement ID"),
31715
- text: external_exports.string().optional().describe("New text"),
31716
- state: external_exports.string().optional().describe("State: PUBLISHED or DRAFT"),
31717
- scheduled: external_exports.string().optional().describe("Scheduled publish time"),
31718
- account: accountParam
31719
- }
31720
- }, async ({ courseId, announcementId, text, state, scheduled, account }) => {
31721
- const args = ["classroom", "announcements", "update", courseId, announcementId];
31722
- if (text) args.push(`--text=${text}`);
31723
- if (state) args.push(`--state=${state}`);
31724
- if (scheduled) args.push(`--scheduled=${scheduled}`);
31725
- return runOrDiagnose(args, { account });
31726
- });
31727
- server2.registerTool("gog_classroom_announcements_delete", {
31728
- description: "Delete an announcement.",
31729
- annotations: { destructiveHint: true },
31730
- inputSchema: {
31731
- courseId: external_exports.string().describe("Course ID"),
31732
- announcementId: external_exports.string().describe("Announcement ID"),
31733
- account: accountParam
31734
- }
31735
- }, async ({ courseId, announcementId, account }) => {
31736
- return runOrDiagnose(["classroom", "announcements", "delete", courseId, announcementId], { account });
31737
- });
31738
31433
  server2.registerTool("gog_classroom_topics_list", {
31739
31434
  description: "List topics in a Google Classroom course.",
31740
31435
  annotations: { readOnlyHint: true },
@@ -31763,39 +31458,6 @@ function registerClassroomTools(server2) {
31763
31458
  }, async ({ courseId, topicId, account }) => {
31764
31459
  return runOrDiagnose(["classroom", "topics", "get", courseId, topicId], { account });
31765
31460
  });
31766
- server2.registerTool("gog_classroom_topics_create", {
31767
- description: "Create a topic in a Google Classroom course.",
31768
- inputSchema: {
31769
- courseId: external_exports.string().describe("Course ID"),
31770
- name: external_exports.string().describe("Topic name"),
31771
- account: accountParam
31772
- }
31773
- }, async ({ courseId, name, account }) => {
31774
- return runOrDiagnose(["classroom", "topics", "create", courseId, `--name=${name}`], { account });
31775
- });
31776
- server2.registerTool("gog_classroom_topics_update", {
31777
- description: "Rename an existing topic.",
31778
- annotations: { destructiveHint: true },
31779
- inputSchema: {
31780
- courseId: external_exports.string().describe("Course ID"),
31781
- topicId: external_exports.string().describe("Topic ID"),
31782
- name: external_exports.string().describe("New topic name"),
31783
- account: accountParam
31784
- }
31785
- }, async ({ courseId, topicId, name, account }) => {
31786
- return runOrDiagnose(["classroom", "topics", "update", courseId, topicId, `--name=${name}`], { account });
31787
- });
31788
- server2.registerTool("gog_classroom_topics_delete", {
31789
- description: "Delete a topic.",
31790
- annotations: { destructiveHint: true },
31791
- inputSchema: {
31792
- courseId: external_exports.string().describe("Course ID"),
31793
- topicId: external_exports.string().describe("Topic ID"),
31794
- account: accountParam
31795
- }
31796
- }, async ({ courseId, topicId, account }) => {
31797
- return runOrDiagnose(["classroom", "topics", "delete", courseId, topicId], { account });
31798
- });
31799
31461
  server2.registerTool("gog_classroom_invitations_list", {
31800
31462
  description: "List Google Classroom invitations.",
31801
31463
  annotations: { readOnlyHint: true },
@@ -31826,17 +31488,6 @@ function registerClassroomTools(server2) {
31826
31488
  }, async ({ invitationId, account }) => {
31827
31489
  return runOrDiagnose(["classroom", "invitations", "get", invitationId], { account });
31828
31490
  });
31829
- server2.registerTool("gog_classroom_invitations_create", {
31830
- description: "Create an invitation to a Google Classroom course.",
31831
- inputSchema: {
31832
- courseId: external_exports.string().describe("Course ID"),
31833
- userId: external_exports.string().describe("User ID to invite"),
31834
- role: external_exports.enum(["STUDENT", "TEACHER", "OWNER"]).describe("Role for the invited user"),
31835
- account: accountParam
31836
- }
31837
- }, async ({ courseId, userId, role, account }) => {
31838
- return runOrDiagnose(["classroom", "invitations", "create", courseId, userId, `--role=${role}`], { account });
31839
- });
31840
31491
  server2.registerTool("gog_classroom_invitations_accept", {
31841
31492
  description: "Accept a Google Classroom invitation.",
31842
31493
  inputSchema: {
@@ -31846,16 +31497,6 @@ function registerClassroomTools(server2) {
31846
31497
  }, async ({ invitationId, account }) => {
31847
31498
  return runOrDiagnose(["classroom", "invitations", "accept", invitationId], { account });
31848
31499
  });
31849
- server2.registerTool("gog_classroom_invitations_delete", {
31850
- description: "Delete (revoke) a Google Classroom invitation.",
31851
- annotations: { destructiveHint: true },
31852
- inputSchema: {
31853
- invitationId: external_exports.string().describe("Invitation ID"),
31854
- account: accountParam
31855
- }
31856
- }, async ({ invitationId, account }) => {
31857
- return runOrDiagnose(["classroom", "invitations", "delete", invitationId], { account });
31858
- });
31859
31500
  server2.registerTool("gog_classroom_profile_get", {
31860
31501
  description: "Get a Google Classroom user profile. Omit userId to fetch the authenticated user.",
31861
31502
  annotations: { readOnlyHint: true },
@@ -31870,6 +31511,7 @@ function registerClassroomTools(server2) {
31870
31511
  });
31871
31512
  server2.registerTool("gog_classroom_run", {
31872
31513
  description: "Run any gog classroom subcommand not covered by the other tools (guardians, guardian-invitations, materials, coursework assignees, announcement assignees, etc.). Run `gog classroom --help` for the full list, or `gog classroom <subcommand> --help` for flags.",
31514
+ annotations: { destructiveHint: true },
31873
31515
  inputSchema: {
31874
31516
  subcommand: external_exports.string().describe('The gog classroom subcommand to run, e.g. "guardians", "materials", "guardian-invitations"'),
31875
31517
  args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
@@ -31883,7 +31525,7 @@ function registerClassroomTools(server2) {
31883
31525
  // src/tools/contacts.ts
31884
31526
  function registerContactsTools(server2) {
31885
31527
  server2.registerTool("gog_contacts_search", {
31886
- description: "Search Google Contacts by name, email, or phone.",
31528
+ description: "Search personal Google Contacts by name, email, or phone. For searching the Workspace directory (internal users not in your personal contacts), use gog_people_search from gogcli-mcp-contacts.",
31887
31529
  annotations: { readOnlyHint: true },
31888
31530
  inputSchema: {
31889
31531
  query: external_exports.string().describe("Search query (name, email, or phone)"),
@@ -31943,71 +31585,6 @@ function registerContactsTools(server2) {
31943
31585
  }, async ({ subcommand, args, account }) => {
31944
31586
  return runOrDiagnose(["contacts", subcommand, ...args], { account });
31945
31587
  });
31946
- server2.registerTool("gog_people_me", {
31947
- description: "Show your own People profile (people/me).",
31948
- annotations: { readOnlyHint: true },
31949
- inputSchema: {
31950
- account: accountParam
31951
- }
31952
- }, async ({ account }) => {
31953
- return runOrDiagnose(["people", "me"], { account });
31954
- });
31955
- server2.registerTool("gog_people_get", {
31956
- description: "Get a People profile by resource name.",
31957
- annotations: { readOnlyHint: true },
31958
- inputSchema: {
31959
- userId: external_exports.string().describe("Person resource name (people/...) or email"),
31960
- account: accountParam
31961
- }
31962
- }, async ({ userId, account }) => {
31963
- return runOrDiagnose(["people", "get", userId], { account });
31964
- });
31965
- server2.registerTool("gog_people_search", {
31966
- description: "Search the Google Workspace directory (covers internal users, unlike contacts search which is limited to your personal contacts).",
31967
- annotations: { readOnlyHint: true },
31968
- inputSchema: {
31969
- query: external_exports.string().describe("Search query (name, email, etc.)"),
31970
- max: external_exports.number().optional().describe("Max results (default: 50)"),
31971
- page: external_exports.string().optional().describe("Page token"),
31972
- all: external_exports.boolean().optional().describe("Fetch all pages"),
31973
- account: accountParam
31974
- }
31975
- }, async ({ query, max, page, all, account }) => {
31976
- const args = ["people", "search", query];
31977
- if (max !== void 0) args.push(`--max=${max}`);
31978
- if (page) args.push(`--page=${page}`);
31979
- if (all) args.push("--all");
31980
- return runOrDiagnose(args, { account });
31981
- });
31982
- server2.registerTool("gog_people_relations", {
31983
- description: "Get relations (manager, reports, etc.) for a user. Defaults to self when userId is omitted.",
31984
- annotations: { readOnlyHint: true },
31985
- inputSchema: {
31986
- userId: external_exports.string().optional().describe("Person resource name (defaults to self when omitted)"),
31987
- type: external_exports.string().optional().describe('Filter to a specific relation type (e.g. "manager")'),
31988
- account: accountParam
31989
- }
31990
- }, async ({ userId, type, account }) => {
31991
- const args = ["people", "relations"];
31992
- if (userId) args.push(userId);
31993
- if (type) args.push(`--type=${type}`);
31994
- return runOrDiagnose(args, { account });
31995
- });
31996
- server2.registerTool("gog_people_raw", {
31997
- description: "Dump the raw People API response as JSON (lossless; for scripting and LLM consumption).",
31998
- annotations: { readOnlyHint: true },
31999
- inputSchema: {
32000
- userId: external_exports.string().describe("Person resource name (people/...) or email"),
32001
- personFields: external_exports.string().optional().describe("People API personFields mask (default: broad set)"),
32002
- pretty: external_exports.boolean().optional().describe("Pretty-print JSON (default: compact single-line)"),
32003
- account: accountParam
32004
- }
32005
- }, async ({ userId, personFields, pretty, account }) => {
32006
- const args = ["people", "raw", userId];
32007
- if (personFields) args.push(`--person-fields=${personFields}`);
32008
- if (pretty) args.push("--pretty");
32009
- return runOrDiagnose(args, { account });
32010
- });
32011
31588
  }
32012
31589
 
32013
31590
  // src/tools/docs.ts
@@ -32410,47 +31987,6 @@ function registerSlidesTools(server2) {
32410
31987
  if (template) args.push(`--template=${template}`);
32411
31988
  return runOrDiagnose(args, { account });
32412
31989
  });
32413
- server2.registerTool("gog_slides_create_from_markdown", {
32414
- description: "Create a new Google Slides presentation from markdown content (inline or from a file).",
32415
- inputSchema: {
32416
- title: external_exports.string().describe("Presentation title"),
32417
- content: external_exports.string().optional().describe("Inline markdown content"),
32418
- contentFile: external_exports.string().optional().describe("Path to a markdown file"),
32419
- parent: external_exports.string().optional().describe("Destination folder ID"),
32420
- debug: external_exports.boolean().optional().describe("Enable debug output"),
32421
- account: accountParam
32422
- }
32423
- }, async ({ title, content, contentFile, parent, debug, account }) => {
32424
- const args = ["slides", "create-from-markdown", title];
32425
- if (content) args.push(`--content=${content}`);
32426
- if (contentFile) args.push(`--content-file=${contentFile}`);
32427
- if (parent) args.push(`--parent=${parent}`);
32428
- if (debug) args.push("--debug");
32429
- return runOrDiagnose(args, { account });
32430
- });
32431
- server2.registerTool("gog_slides_create_from_template", {
32432
- description: "Create a new Google Slides presentation from a template, with optional placeholder replacements.",
32433
- inputSchema: {
32434
- templateId: external_exports.string().describe("Template presentation ID"),
32435
- title: external_exports.string().describe("New presentation title"),
32436
- replacements: external_exports.record(external_exports.string(), external_exports.string()).optional().describe("Placeholder replacements as a key/value object (emitted as --replace=k=v for each entry)"),
32437
- replacementsFile: external_exports.string().optional().describe("Path to a JSON file containing replacements"),
32438
- parent: external_exports.string().optional().describe("Destination folder ID"),
32439
- exact: external_exports.boolean().optional().describe("Require exact placeholder matches"),
32440
- account: accountParam
32441
- }
32442
- }, async ({ templateId, title, replacements, replacementsFile, parent, exact, account }) => {
32443
- const args = ["slides", "create-from-template", templateId, title];
32444
- if (replacements) {
32445
- for (const [k, v] of Object.entries(replacements)) {
32446
- args.push(`--replace=${k}=${v}`);
32447
- }
32448
- }
32449
- if (replacementsFile) args.push(`--replacements=${replacementsFile}`);
32450
- if (parent) args.push(`--parent=${parent}`);
32451
- if (exact) args.push("--exact");
32452
- return runOrDiagnose(args, { account });
32453
- });
32454
31990
  server2.registerTool("gog_slides_copy", {
32455
31991
  description: "Copy a Google Slides presentation to a new presentation with the given title.",
32456
31992
  inputSchema: {
@@ -32464,23 +32000,6 @@ function registerSlidesTools(server2) {
32464
32000
  if (parent) args.push(`--parent=${parent}`);
32465
32001
  return runOrDiagnose(args, { account });
32466
32002
  });
32467
- server2.registerTool("gog_slides_add_slide", {
32468
- description: "Add a new slide to a presentation from a local image, with optional speaker notes.",
32469
- inputSchema: {
32470
- presentationId: external_exports.string().describe("Presentation ID"),
32471
- image: external_exports.string().describe("Path to the local image file"),
32472
- notes: external_exports.string().optional().describe("Speaker notes text"),
32473
- notesFile: external_exports.string().optional().describe("Path to a file containing speaker notes"),
32474
- before: external_exports.string().optional().describe("Insert before this slide ID (default: append at end)"),
32475
- account: accountParam
32476
- }
32477
- }, async ({ presentationId, image, notes, notesFile, before, account }) => {
32478
- const args = ["slides", "add-slide", presentationId, image];
32479
- if (notes) args.push(`--notes=${notes}`);
32480
- if (notesFile) args.push(`--notes-file=${notesFile}`);
32481
- if (before) args.push(`--before=${before}`);
32482
- return runOrDiagnose(args, { account });
32483
- });
32484
32003
  server2.registerTool("gog_slides_list_slides", {
32485
32004
  description: "List slides in a Google Slides presentation.",
32486
32005
  annotations: { readOnlyHint: true },
@@ -32491,17 +32010,6 @@ function registerSlidesTools(server2) {
32491
32010
  }, async ({ presentationId, account }) => {
32492
32011
  return runOrDiagnose(["slides", "list-slides", presentationId], { account });
32493
32012
  });
32494
- server2.registerTool("gog_slides_delete_slide", {
32495
- description: "Delete a slide from a Google Slides presentation.",
32496
- annotations: { destructiveHint: true },
32497
- inputSchema: {
32498
- presentationId: external_exports.string().describe("Presentation ID"),
32499
- slideId: external_exports.string().describe("Slide ID to delete"),
32500
- account: accountParam
32501
- }
32502
- }, async ({ presentationId, slideId, account }) => {
32503
- return runOrDiagnose(["slides", "delete-slide", presentationId, slideId], { account });
32504
- });
32505
32013
  server2.registerTool("gog_slides_read_slide", {
32506
32014
  description: "Read the content of a slide (text, shapes, speaker notes).",
32507
32015
  annotations: { readOnlyHint: true },
@@ -32513,41 +32021,9 @@ function registerSlidesTools(server2) {
32513
32021
  }, async ({ presentationId, slideId, account }) => {
32514
32022
  return runOrDiagnose(["slides", "read-slide", presentationId, slideId], { account });
32515
32023
  });
32516
- server2.registerTool("gog_slides_update_notes", {
32517
- description: "Update the speaker notes on a slide (inline text or from a file).",
32518
- annotations: { destructiveHint: true },
32519
- inputSchema: {
32520
- presentationId: external_exports.string().describe("Presentation ID"),
32521
- slideId: external_exports.string().describe("Slide ID"),
32522
- notes: external_exports.string().optional().describe("New speaker notes text"),
32523
- notesFile: external_exports.string().optional().describe("Path to a file containing new speaker notes"),
32524
- account: accountParam
32525
- }
32526
- }, async ({ presentationId, slideId, notes, notesFile, account }) => {
32527
- const args = ["slides", "update-notes", presentationId, slideId];
32528
- if (notes) args.push(`--notes=${notes}`);
32529
- if (notesFile) args.push(`--notes-file=${notesFile}`);
32530
- return runOrDiagnose(args, { account });
32531
- });
32532
- server2.registerTool("gog_slides_replace_slide", {
32533
- description: "Replace the image content of an existing slide, with optional speaker notes.",
32534
- annotations: { destructiveHint: true },
32535
- inputSchema: {
32536
- presentationId: external_exports.string().describe("Presentation ID"),
32537
- slideId: external_exports.string().describe("Slide ID to replace"),
32538
- image: external_exports.string().describe("Path to the new local image file"),
32539
- notes: external_exports.string().optional().describe("Speaker notes text"),
32540
- notesFile: external_exports.string().optional().describe("Path to a file containing speaker notes"),
32541
- account: accountParam
32542
- }
32543
- }, async ({ presentationId, slideId, image, notes, notesFile, account }) => {
32544
- const args = ["slides", "replace-slide", presentationId, slideId, image];
32545
- if (notes) args.push(`--notes=${notes}`);
32546
- if (notesFile) args.push(`--notes-file=${notesFile}`);
32547
- return runOrDiagnose(args, { account });
32548
- });
32549
32024
  server2.registerTool("gog_slides_run", {
32550
32025
  description: "Run any gog slides subcommand not covered by the other tools. Run `gog slides --help` for the full list of subcommands, or `gog slides <subcommand> --help` for flags on a specific subcommand.",
32026
+ annotations: { destructiveHint: true },
32551
32027
  inputSchema: {
32552
32028
  subcommand: external_exports.string().describe("The gog slides subcommand to run"),
32553
32029
  args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
@@ -32642,7 +32118,7 @@ function registerTasksTools(server2) {
32642
32118
  }
32643
32119
 
32644
32120
  // src/server.ts
32645
- var VERSION = true ? "2.0.4" : "0.0.0";
32121
+ var VERSION = true ? "2.0.5" : "0.0.0";
32646
32122
  function createServer(options) {
32647
32123
  return new McpServer({
32648
32124
  name: options?.name ?? "gogcli",
package/dist/lib.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export { createBaseServer, VERSION } from './server.js';
2
+ export { run } from './runner.js';
3
+ export type { RunOptions, Spawner } from './runner.js';
4
+ export { accountParam, runOrDiagnose, toText, toError } from './tools/utils.js';
5
+ export type { ToolResult } from './tools/utils.js';
6
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}