gogcli-mcp 2.0.4 → 2.0.7

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/dist/index.js CHANGED
@@ -30864,6 +30864,11 @@ var EMPTY_COMPLETION_RESULT = {
30864
30864
  // src/runner.ts
30865
30865
  import { spawn } from "node:child_process";
30866
30866
  var TIMEOUT_MS = 3e4;
30867
+ function envOrUndefined(key) {
30868
+ const value = process.env[key];
30869
+ if (!value || value.startsWith("${")) return void 0;
30870
+ return value;
30871
+ }
30867
30872
  function formatTimeout(ms) {
30868
30873
  const seconds = Math.round(ms / 1e3);
30869
30874
  if (seconds >= 60) {
@@ -30874,7 +30879,7 @@ function formatTimeout(ms) {
30874
30879
  }
30875
30880
  async function run(args, options = {}) {
30876
30881
  const { account, spawner = spawn, interactive = false, timeout } = options;
30877
- const effectiveAccount = account ?? process.env.GOG_ACCOUNT;
30882
+ const effectiveAccount = account ?? envOrUndefined("GOG_ACCOUNT");
30878
30883
  const fullArgs = ["--json", "--color=never"];
30879
30884
  if (!interactive) {
30880
30885
  fullArgs.push("--no-input");
@@ -30886,7 +30891,7 @@ async function run(args, options = {}) {
30886
30891
  const effectiveTimeout = timeout ?? TIMEOUT_MS;
30887
30892
  return new Promise((resolve, reject) => {
30888
30893
  const { GOG_ACCESS_TOKEN: _, ...cleanEnv } = process.env;
30889
- const child = spawner(process.env.GOG_PATH ?? "gog", fullArgs, { env: cleanEnv });
30894
+ const child = spawner(envOrUndefined("GOG_PATH") ?? "gog", fullArgs, { env: cleanEnv });
30890
30895
  const stdoutChunks = [];
30891
30896
  const stderrChunks = [];
30892
30897
  let settled = false;
@@ -31145,88 +31150,6 @@ function registerCalendarTools(server2) {
31145
31150
  }, async ({ subcommand, args, account }) => {
31146
31151
  return runOrDiagnose(["calendar", subcommand, ...args], { account });
31147
31152
  });
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
31153
  }
31231
31154
 
31232
31155
  // src/tools/classroom.ts
@@ -31263,83 +31186,6 @@ function registerClassroomTools(server2) {
31263
31186
  }, async ({ courseId, account }) => {
31264
31187
  return runOrDiagnose(["classroom", "courses", "get", courseId], { account });
31265
31188
  });
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
31189
  server2.registerTool("gog_classroom_students_list", {
31344
31190
  description: "List students enrolled in a Google Classroom course.",
31345
31191
  annotations: { readOnlyHint: true },
@@ -31368,30 +31214,6 @@ function registerClassroomTools(server2) {
31368
31214
  }, async ({ courseId, userId, account }) => {
31369
31215
  return runOrDiagnose(["classroom", "students", "get", courseId, userId], { account });
31370
31216
  });
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
31217
  server2.registerTool("gog_classroom_teachers_list", {
31396
31218
  description: "List teachers in a Google Classroom course.",
31397
31219
  annotations: { readOnlyHint: true },
@@ -31420,27 +31242,6 @@ function registerClassroomTools(server2) {
31420
31242
  }, async ({ courseId, userId, account }) => {
31421
31243
  return runOrDiagnose(["classroom", "teachers", "get", courseId, userId], { account });
31422
31244
  });
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
31245
  server2.registerTool("gog_classroom_roster", {
31445
31246
  description: "List the full roster (students and/or teachers) of a Google Classroom course. Omit both flags to return both groups.",
31446
31247
  annotations: { readOnlyHint: true },
@@ -31498,78 +31299,6 @@ function registerClassroomTools(server2) {
31498
31299
  }, async ({ courseId, courseworkId, account }) => {
31499
31300
  return runOrDiagnose(["classroom", "coursework", "get", courseId, courseworkId], { account });
31500
31301
  });
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
31302
  server2.registerTool("gog_classroom_submissions_list", {
31574
31303
  description: "List student submissions for a coursework item.",
31575
31304
  annotations: { readOnlyHint: true },
@@ -31696,7 +31425,7 @@ function registerClassroomTools(server2) {
31696
31425
  inputSchema: {
31697
31426
  courseId: external_exports.string().describe("Course ID"),
31698
31427
  text: external_exports.string().describe("Announcement text"),
31699
- state: external_exports.string().optional().describe("State: PUBLISHED or DRAFT"),
31428
+ state: external_exports.enum(["PUBLISHED", "DRAFT"]).optional().describe("State"),
31700
31429
  scheduled: external_exports.string().optional().describe("Scheduled publish time"),
31701
31430
  account: accountParam
31702
31431
  }
@@ -31706,35 +31435,6 @@ function registerClassroomTools(server2) {
31706
31435
  if (scheduled) args.push(`--scheduled=${scheduled}`);
31707
31436
  return runOrDiagnose(args, { account });
31708
31437
  });
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
31438
  server2.registerTool("gog_classroom_topics_list", {
31739
31439
  description: "List topics in a Google Classroom course.",
31740
31440
  annotations: { readOnlyHint: true },
@@ -31763,39 +31463,6 @@ function registerClassroomTools(server2) {
31763
31463
  }, async ({ courseId, topicId, account }) => {
31764
31464
  return runOrDiagnose(["classroom", "topics", "get", courseId, topicId], { account });
31765
31465
  });
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
31466
  server2.registerTool("gog_classroom_invitations_list", {
31800
31467
  description: "List Google Classroom invitations.",
31801
31468
  annotations: { readOnlyHint: true },
@@ -31826,17 +31493,6 @@ function registerClassroomTools(server2) {
31826
31493
  }, async ({ invitationId, account }) => {
31827
31494
  return runOrDiagnose(["classroom", "invitations", "get", invitationId], { account });
31828
31495
  });
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
31496
  server2.registerTool("gog_classroom_invitations_accept", {
31841
31497
  description: "Accept a Google Classroom invitation.",
31842
31498
  inputSchema: {
@@ -31846,16 +31502,6 @@ function registerClassroomTools(server2) {
31846
31502
  }, async ({ invitationId, account }) => {
31847
31503
  return runOrDiagnose(["classroom", "invitations", "accept", invitationId], { account });
31848
31504
  });
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
31505
  server2.registerTool("gog_classroom_profile_get", {
31860
31506
  description: "Get a Google Classroom user profile. Omit userId to fetch the authenticated user.",
31861
31507
  annotations: { readOnlyHint: true },
@@ -31870,6 +31516,7 @@ function registerClassroomTools(server2) {
31870
31516
  });
31871
31517
  server2.registerTool("gog_classroom_run", {
31872
31518
  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.",
31519
+ annotations: { destructiveHint: true },
31873
31520
  inputSchema: {
31874
31521
  subcommand: external_exports.string().describe('The gog classroom subcommand to run, e.g. "guardians", "materials", "guardian-invitations"'),
31875
31522
  args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
@@ -31883,7 +31530,7 @@ function registerClassroomTools(server2) {
31883
31530
  // src/tools/contacts.ts
31884
31531
  function registerContactsTools(server2) {
31885
31532
  server2.registerTool("gog_contacts_search", {
31886
- description: "Search Google Contacts by name, email, or phone.",
31533
+ 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
31534
  annotations: { readOnlyHint: true },
31888
31535
  inputSchema: {
31889
31536
  query: external_exports.string().describe("Search query (name, email, or phone)"),
@@ -31943,71 +31590,6 @@ function registerContactsTools(server2) {
31943
31590
  }, async ({ subcommand, args, account }) => {
31944
31591
  return runOrDiagnose(["contacts", subcommand, ...args], { account });
31945
31592
  });
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
31593
  }
32012
31594
 
32013
31595
  // src/tools/docs.ts
@@ -32410,47 +31992,6 @@ function registerSlidesTools(server2) {
32410
31992
  if (template) args.push(`--template=${template}`);
32411
31993
  return runOrDiagnose(args, { account });
32412
31994
  });
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
31995
  server2.registerTool("gog_slides_copy", {
32455
31996
  description: "Copy a Google Slides presentation to a new presentation with the given title.",
32456
31997
  inputSchema: {
@@ -32464,23 +32005,6 @@ function registerSlidesTools(server2) {
32464
32005
  if (parent) args.push(`--parent=${parent}`);
32465
32006
  return runOrDiagnose(args, { account });
32466
32007
  });
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
32008
  server2.registerTool("gog_slides_list_slides", {
32485
32009
  description: "List slides in a Google Slides presentation.",
32486
32010
  annotations: { readOnlyHint: true },
@@ -32491,17 +32015,6 @@ function registerSlidesTools(server2) {
32491
32015
  }, async ({ presentationId, account }) => {
32492
32016
  return runOrDiagnose(["slides", "list-slides", presentationId], { account });
32493
32017
  });
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
32018
  server2.registerTool("gog_slides_read_slide", {
32506
32019
  description: "Read the content of a slide (text, shapes, speaker notes).",
32507
32020
  annotations: { readOnlyHint: true },
@@ -32513,41 +32026,9 @@ function registerSlidesTools(server2) {
32513
32026
  }, async ({ presentationId, slideId, account }) => {
32514
32027
  return runOrDiagnose(["slides", "read-slide", presentationId, slideId], { account });
32515
32028
  });
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
32029
  server2.registerTool("gog_slides_run", {
32550
32030
  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.",
32031
+ annotations: { destructiveHint: true },
32551
32032
  inputSchema: {
32552
32033
  subcommand: external_exports.string().describe("The gog slides subcommand to run"),
32553
32034
  args: external_exports.array(external_exports.string()).describe("Additional positional args and flags"),
@@ -32642,7 +32123,7 @@ function registerTasksTools(server2) {
32642
32123
  }
32643
32124
 
32644
32125
  // src/server.ts
32645
- var VERSION = true ? "2.0.4" : "0.0.0";
32126
+ var VERSION = true ? "2.0.7" : "0.0.0";
32646
32127
  function createServer(options) {
32647
32128
  return new McpServer({
32648
32129
  name: options?.name ?? "gogcli",