gogcli-mcp-drive 2.23.1 → 2.23.2

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.
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "Extended Google Drive for Claude via gogcli — auth + full Drive support (upload, download, permissions, comments, shared drives)",
10
- "version": "2.23.1"
10
+ "version": "2.23.2"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -15,7 +15,7 @@
15
15
  "displayName": "gogcli (Drive)",
16
16
  "source": "./",
17
17
  "description": "Extended Google Drive for Claude via gogcli — auth + full Drive support (upload, download, permissions, comments, shared drives)",
18
- "version": "2.23.1",
18
+ "version": "2.23.2",
19
19
  "author": {
20
20
  "name": "Chris Hall"
21
21
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gogcli-mcp-drive",
3
3
  "displayName": "gogcli (Drive)",
4
- "version": "2.23.1",
4
+ "version": "2.23.2",
5
5
  "description": "Extended Google Drive for Claude via gogcli — auth + full Drive support (upload, download, permissions, comments, shared drives)",
6
6
  "author": {
7
7
  "name": "Chris Hall",
package/dist/index.js CHANGED
@@ -31552,6 +31552,26 @@ function normalizeTimestamps(text, tz = displayTimeZone(), naiveTz = naiveSource
31552
31552
  return JSON.stringify(parsed, null, detectIndent(text));
31553
31553
  }
31554
31554
 
31555
+ // ../gogcli-mcp/src/pagination.ts
31556
+ function detectIndent2(text) {
31557
+ const match = /\n(\s+)\S/.exec(text);
31558
+ return match ? match[1].replace(/\t/g, " ").length : 0;
31559
+ }
31560
+ function stripConsumedPageToken(text) {
31561
+ const trimmed = text.trim();
31562
+ if (trimmed === "" || !trimmed.startsWith("{")) return text;
31563
+ let parsed;
31564
+ try {
31565
+ parsed = JSON.parse(trimmed);
31566
+ } catch {
31567
+ return text;
31568
+ }
31569
+ const obj = parsed;
31570
+ if (obj.nextPageToken !== "") return text;
31571
+ delete obj.nextPageToken;
31572
+ return JSON.stringify(obj, null, detectIndent2(text));
31573
+ }
31574
+
31555
31575
  // ../gogcli-mcp/src/tools/utils.ts
31556
31576
  var accountParam = external_exports.string().optional().describe(
31557
31577
  "Google account email to use, e.g. you@gmail.com \u2014 must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account."
@@ -31580,14 +31600,25 @@ var ids = {
31580
31600
  // People API uses fully-qualified resource names ("people/c123") not bare IDs.
31581
31601
  person: external_exports.string().describe("Person resource name (people/...) or email")
31582
31602
  };
31603
+ var pageTokenParam = external_exports.string().optional().describe(
31604
+ "Cursor for the NEXT page. Pass back the nextPageToken from a previous response verbatim, keeping the query and max identical: call once, then call again with pageToken=<that value>. A response with NO nextPageToken is the last page."
31605
+ );
31606
+ var pageAliasParam = external_exports.string().optional().describe(
31607
+ "Deprecated alias for pageToken, accepted so existing callers keep working. Use pageToken \u2014 it matches the nextPageToken field in the response."
31608
+ );
31609
+ function resolvePageToken(p) {
31610
+ return p.pageToken ?? p.page;
31611
+ }
31583
31612
  var paginationParams = {
31584
31613
  max: external_exports.number().int().optional().describe("Max results"),
31585
- page: external_exports.string().optional().describe("Page token"),
31614
+ pageToken: pageTokenParam,
31615
+ page: pageAliasParam,
31586
31616
  all: external_exports.boolean().optional().describe("Fetch all pages")
31587
31617
  };
31588
31618
  function pushPaginationFlags(args, p) {
31589
31619
  if (p.max !== void 0) args.push(`--max=${p.max}`);
31590
- if (p.page) args.push(`--page=${p.page}`);
31620
+ const token = resolvePageToken(p);
31621
+ if (token) args.push(`--page=${token}`);
31591
31622
  if (p.all) args.push("--all");
31592
31623
  }
31593
31624
  function registerRunTool(server, options) {
@@ -31662,7 +31693,7 @@ ${accounts || "(none)"}${hint}`);
31662
31693
  async function runOrDiagnose(args, options) {
31663
31694
  try {
31664
31695
  const raw = await run(args, options);
31665
- return rawTextResult(options.lossless ? raw : normalizeTimestamps(raw));
31696
+ return rawTextResult(options.lossless ? raw : stripConsumedPageToken(normalizeTimestamps(raw)));
31666
31697
  } catch (err) {
31667
31698
  return diagnose(err);
31668
31699
  }
@@ -31847,16 +31878,18 @@ function registerDriveTools(server) {
31847
31878
  inputSchema: {
31848
31879
  folderId: external_exports.string().optional().describe("Folder ID to list (default: root)"),
31849
31880
  max: external_exports.number().optional().describe("Max results (default: 20)"),
31850
- page: external_exports.string().optional().describe("Page token for pagination"),
31881
+ pageToken: pageTokenParam,
31882
+ page: pageAliasParam,
31851
31883
  query: external_exports.string().optional().describe(`Drive query filter (e.g. "name contains 'budget'")`),
31852
31884
  allDrives: external_exports.boolean().optional().describe("Include shared drives (default: true). Set false for My Drive only."),
31853
31885
  account: accountParam
31854
31886
  }
31855
- }, async ({ folderId, max, page, query, allDrives, account }) => {
31887
+ }, async ({ folderId, max, pageToken, page, query, allDrives, account }) => {
31856
31888
  const args = ["drive", "ls"];
31857
31889
  if (folderId) args.push(`--parent=${folderId}`);
31858
31890
  if (max !== void 0) args.push(`--max=${max}`);
31859
- if (page) args.push(`--page=${page}`);
31891
+ const token = resolvePageToken({ pageToken, page });
31892
+ if (token) args.push(`--page=${token}`);
31860
31893
  if (query) args.push(`--query=${query}`);
31861
31894
  if (allDrives === false) args.push("--no-all-drives");
31862
31895
  return runOrDiagnose(args, { account });
@@ -32056,7 +32089,7 @@ var failIfNotEmptyParam = external_exports.boolean().optional().describe(
32056
32089
  );
32057
32090
 
32058
32091
  // ../gogcli-mcp/src/server.ts
32059
- var VERSION = true ? "2.23.1" : "0.0.0";
32092
+ var VERSION = true ? "2.23.2" : "0.0.0";
32060
32093
 
32061
32094
  // ../gogcli-mcp/src/auth-log.ts
32062
32095
  var FAILURES = /* @__PURE__ */ new Set([
@@ -32638,13 +32671,15 @@ function registerExtraDriveTools(server) {
32638
32671
  inputSchema: {
32639
32672
  fileId: external_exports.string().describe("File ID"),
32640
32673
  max: external_exports.number().optional().describe("Max results (default: 100)"),
32641
- page: external_exports.string().optional().describe("Page token"),
32674
+ pageToken: pageTokenParam,
32675
+ page: pageAliasParam,
32642
32676
  account: accountParam
32643
32677
  }
32644
- }, async ({ fileId, max, page, account }) => {
32678
+ }, async ({ fileId, max, pageToken, page, account }) => {
32645
32679
  const args = ["drive", "permissions", fileId];
32646
32680
  if (max !== void 0) args.push(`--max=${max}`);
32647
- if (page) args.push(`--page=${page}`);
32681
+ const token = resolvePageToken({ pageToken, page });
32682
+ if (token) args.push(`--page=${token}`);
32648
32683
  return runOrDiagnose(args, { account });
32649
32684
  });
32650
32685
  server.registerTool("gog_drive_unshare", {
@@ -32663,15 +32698,17 @@ function registerExtraDriveTools(server) {
32663
32698
  annotations: { readOnlyHint: true },
32664
32699
  inputSchema: {
32665
32700
  max: external_exports.number().optional().describe("Max results (default: 100, max allowed: 100)"),
32666
- page: external_exports.string().optional().describe("Page token"),
32701
+ pageToken: pageTokenParam,
32702
+ page: pageAliasParam,
32667
32703
  all: external_exports.boolean().optional().describe("Fetch all pages"),
32668
32704
  query: external_exports.string().optional().describe("Search query for filtering shared drives"),
32669
32705
  account: accountParam
32670
32706
  }
32671
- }, async ({ max, page, all, query, account }) => {
32707
+ }, async ({ max, pageToken, page, all, query, account }) => {
32672
32708
  const args = ["drive", "drives"];
32673
32709
  if (max !== void 0) args.push(`--max=${max}`);
32674
- if (page) args.push(`--page=${page}`);
32710
+ const token = resolvePageToken({ pageToken, page });
32711
+ if (token) args.push(`--page=${token}`);
32675
32712
  if (all) args.push("--all");
32676
32713
  if (query) args.push(`--query=${query}`);
32677
32714
  return runOrDiagnose(args, { account });
@@ -32831,16 +32868,18 @@ function registerExtraDriveTools(server) {
32831
32868
  inputSchema: {
32832
32869
  token: external_exports.string().describe("Start page token or next page token"),
32833
32870
  max: external_exports.number().optional().describe("Max results (default: 100)"),
32834
- page: external_exports.string().optional().describe("Alias for token when continuing a page"),
32871
+ pageToken: pageTokenParam,
32872
+ page: pageAliasParam,
32835
32873
  all: external_exports.boolean().optional().describe("Fetch all pages"),
32836
32874
  includeRemoved: external_exports.boolean().optional().describe("Include removed changes"),
32837
32875
  drive: external_exports.string().optional().describe("Shared drive ID for a shared-drive change log"),
32838
32876
  account: accountParam
32839
32877
  }
32840
- }, async ({ token, max, page, all, includeRemoved, drive, account }) => {
32878
+ }, async ({ token, max, pageToken, page, all, includeRemoved, drive, account }) => {
32841
32879
  const args = ["drive", "changes", "list", `--token=${token}`];
32842
32880
  if (max !== void 0) args.push(`--max=${max}`);
32843
- if (page) args.push(`--page=${page}`);
32881
+ const cursor = resolvePageToken({ pageToken, page });
32882
+ if (cursor) args.push(`--page=${cursor}`);
32844
32883
  if (all) args.push("--all");
32845
32884
  if (includeRemoved) args.push("--include-removed");
32846
32885
  if (drive) args.push(`--drive=${drive}`);
@@ -32892,10 +32931,16 @@ function registerExtraDriveTools(server) {
32892
32931
  minimumRole: external_exports.string().optional().describe("Minimum role filter (e.g. READER, APPLIER, ORGANIZER)"),
32893
32932
  publishedOnly: external_exports.boolean().optional().describe("Only list published labels"),
32894
32933
  adminAccess: external_exports.boolean().optional().describe("Use admin access for Workspace admin accounts"),
32934
+ max: external_exports.number().int().optional().describe("Max results"),
32935
+ pageToken: pageTokenParam,
32936
+ page: pageAliasParam,
32895
32937
  account: accountParam
32896
32938
  }
32897
- }, async ({ language, view, minimumRole, publishedOnly, adminAccess, account }) => {
32939
+ }, async ({ language, view, minimumRole, publishedOnly, adminAccess, max, pageToken, page, account }) => {
32898
32940
  const args = ["drive", "labels", "list"];
32941
+ if (max !== void 0) args.push(`--max=${max}`);
32942
+ const token = resolvePageToken({ pageToken, page });
32943
+ if (token) args.push(`--page=${token}`);
32899
32944
  if (language) args.push(`--language=${language}`);
32900
32945
  if (view) args.push(`--view=${view}`);
32901
32946
  if (minimumRole) args.push(`--minimum-role=${minimumRole}`);
@@ -32926,13 +32971,15 @@ function registerExtraDriveTools(server) {
32926
32971
  inputSchema: {
32927
32972
  fileId: external_exports.string().describe("File ID"),
32928
32973
  max: external_exports.number().optional().describe("Max results (default: 100)"),
32929
- page: external_exports.string().optional().describe("Page token"),
32974
+ pageToken: pageTokenParam,
32975
+ page: pageAliasParam,
32930
32976
  account: accountParam
32931
32977
  }
32932
- }, async ({ fileId, max, page, account }) => {
32978
+ }, async ({ fileId, max, pageToken, page, account }) => {
32933
32979
  const args = ["drive", "labels", "file", "list", fileId];
32934
32980
  if (max !== void 0) args.push(`--max=${max}`);
32935
- if (page) args.push(`--page=${page}`);
32981
+ const token = resolvePageToken({ pageToken, page });
32982
+ if (token) args.push(`--page=${token}`);
32936
32983
  return runOrDiagnose(args, { account });
32937
32984
  });
32938
32985
  server.registerTool("gog_drive_labels_file_apply", {
@@ -32982,12 +33029,13 @@ function registerExtraDriveTools(server) {
32982
33029
  to: external_exports.string().optional().describe("Upper activity time bound (RFC3339)"),
32983
33030
  filter: external_exports.string().optional().describe("Raw Drive Activity filter expression appended with AND"),
32984
33031
  max: external_exports.number().optional().describe("Page size (default: 10)"),
32985
- page: external_exports.string().optional().describe("Page token"),
33032
+ pageToken: pageTokenParam,
33033
+ page: pageAliasParam,
32986
33034
  all: external_exports.boolean().optional().describe("Fetch all pages"),
32987
33035
  consolidate: external_exports.boolean().optional().describe("Use Drive Activity legacy consolidation strategy"),
32988
33036
  account: accountParam
32989
33037
  }
32990
- }, async ({ file: file2, folder, actions, from, to, filter, max, page, all, consolidate, account }) => {
33038
+ }, async ({ file: file2, folder, actions, from, to, filter, max, pageToken, page, all, consolidate, account }) => {
32991
33039
  const args = ["drive", "activity", "query"];
32992
33040
  if (file2) args.push(`--file=${file2}`);
32993
33041
  if (folder) args.push(`--folder=${folder}`);
@@ -32996,7 +33044,8 @@ function registerExtraDriveTools(server) {
32996
33044
  if (to) args.push(`--to=${to}`);
32997
33045
  if (filter) args.push(`--filter=${filter}`);
32998
33046
  if (max !== void 0) args.push(`--max=${max}`);
32999
- if (page) args.push(`--page=${page}`);
33047
+ const token = resolvePageToken({ pageToken, page });
33048
+ if (token) args.push(`--page=${token}`);
33000
33049
  if (all) args.push("--all");
33001
33050
  if (consolidate) args.push("--consolidate");
33002
33051
  return runOrDiagnose(args, { account });
package/manifest.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "manifest_version": "0.3",
4
4
  "name": "gogcli-mcp-drive",
5
5
  "display_name": "gogcli (Drive)",
6
- "version": "2.23.1",
6
+ "version": "2.23.2",
7
7
  "description": "Extended Google Drive for Claude via gogcli — auth + full Drive support (upload, download, permissions, comments, shared drives)",
8
8
  "author": {
9
9
  "name": "Chris Hall",
@@ -227,7 +227,7 @@
227
227
  },
228
228
  {
229
229
  "name": "gog_drive_labels_list",
230
- "description": "List Drive label schemas"
230
+ "description": "List Drive label schemas available to the account; paginated"
231
231
  },
232
232
  {
233
233
  "name": "gog_drive_labels_get",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gogcli-mcp-drive",
3
- "version": "2.23.1",
3
+ "version": "2.23.2",
4
4
  "mcpName": "io.github.chrischall/gogcli-mcp-drive",
5
5
  "description": "Extended Google Drive MCP server via gogcli — auth + full Drive support (upload/download/permissions/comments/shared drives)",
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-drive"
9
9
  },
10
- "version": "2.23.1",
10
+ "version": "2.23.2",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "gogcli-mcp-drive",
15
- "version": "2.23.1",
15
+ "version": "2.23.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -1,6 +1,6 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { z } from 'zod';
3
- import { accountParam, runOrDiagnose, paginationParams, pushPaginationFlags } from '../../../gogcli-mcp/src/lib.js';
3
+ import { accountParam, runOrDiagnose, paginationParams, pushPaginationFlags, pageTokenParam, pageAliasParam, resolvePageToken} from '../../../gogcli-mcp/src/lib.js';
4
4
 
5
5
  export function registerExtraDriveTools(server: McpServer): void {
6
6
  server.registerTool('gog_drive_download', {
@@ -111,13 +111,15 @@ export function registerExtraDriveTools(server: McpServer): void {
111
111
  inputSchema: {
112
112
  fileId: z.string().describe('File ID'),
113
113
  max: z.number().optional().describe('Max results (default: 100)'),
114
- page: z.string().optional().describe('Page token'),
114
+ pageToken: pageTokenParam,
115
+ page: pageAliasParam,
115
116
  account: accountParam,
116
117
  },
117
- }, async ({ fileId, max, page, account }) => {
118
+ }, async ({ fileId, max, pageToken, page, account }) => {
118
119
  const args = ['drive', 'permissions', fileId];
119
120
  if (max !== undefined) args.push(`--max=${max}`);
120
- if (page) args.push(`--page=${page}`);
121
+ const token = resolvePageToken({ pageToken, page });
122
+ if (token) args.push(`--page=${token}`);
121
123
  return runOrDiagnose(args, { account });
122
124
  });
123
125
 
@@ -138,15 +140,17 @@ export function registerExtraDriveTools(server: McpServer): void {
138
140
  annotations: { readOnlyHint: true },
139
141
  inputSchema: {
140
142
  max: z.number().optional().describe('Max results (default: 100, max allowed: 100)'),
141
- page: z.string().optional().describe('Page token'),
143
+ pageToken: pageTokenParam,
144
+ page: pageAliasParam,
142
145
  all: z.boolean().optional().describe('Fetch all pages'),
143
146
  query: z.string().optional().describe('Search query for filtering shared drives'),
144
147
  account: accountParam,
145
148
  },
146
- }, async ({ max, page, all, query, account }) => {
149
+ }, async ({ max, pageToken, page, all, query, account }) => {
147
150
  const args = ['drive', 'drives'];
148
151
  if (max !== undefined) args.push(`--max=${max}`);
149
- if (page) args.push(`--page=${page}`);
152
+ const token = resolvePageToken({ pageToken, page });
153
+ if (token) args.push(`--page=${token}`);
150
154
  if (all) args.push('--all');
151
155
  if (query) args.push(`--query=${query}`);
152
156
  return runOrDiagnose(args, { account });
@@ -320,16 +324,20 @@ export function registerExtraDriveTools(server: McpServer): void {
320
324
  inputSchema: {
321
325
  token: z.string().describe('Start page token or next page token'),
322
326
  max: z.number().optional().describe('Max results (default: 100)'),
323
- page: z.string().optional().describe('Alias for token when continuing a page'),
327
+ pageToken: pageTokenParam,
328
+ page: pageAliasParam,
324
329
  all: z.boolean().optional().describe('Fetch all pages'),
325
330
  includeRemoved: z.boolean().optional().describe('Include removed changes'),
326
331
  drive: z.string().optional().describe('Shared drive ID for a shared-drive change log'),
327
332
  account: accountParam,
328
333
  },
329
- }, async ({ token, max, page, all, includeRemoved, drive, account }) => {
334
+ }, async ({ token, max, pageToken, page, all, includeRemoved, drive, account }) => {
330
335
  const args = ['drive', 'changes', 'list', `--token=${token}`];
331
336
  if (max !== undefined) args.push(`--max=${max}`);
332
- if (page) args.push(`--page=${page}`);
337
+ // NOT `token` — this tool already binds that name to the start-page token
338
+ // it takes as a required arg, which is a different value entirely.
339
+ const cursor = resolvePageToken({ pageToken, page });
340
+ if (cursor) args.push(`--page=${cursor}`);
333
341
  if (all) args.push('--all');
334
342
  if (includeRemoved) args.push('--include-removed');
335
343
  if (drive) args.push(`--drive=${drive}`);
@@ -385,10 +393,16 @@ export function registerExtraDriveTools(server: McpServer): void {
385
393
  minimumRole: z.string().optional().describe('Minimum role filter (e.g. READER, APPLIER, ORGANIZER)'),
386
394
  publishedOnly: z.boolean().optional().describe('Only list published labels'),
387
395
  adminAccess: z.boolean().optional().describe('Use admin access for Workspace admin accounts'),
396
+ max: z.number().int().optional().describe('Max results'),
397
+ pageToken: pageTokenParam,
398
+ page: pageAliasParam,
388
399
  account: accountParam,
389
400
  },
390
- }, async ({ language, view, minimumRole, publishedOnly, adminAccess, account }) => {
401
+ }, async ({ language, view, minimumRole, publishedOnly, adminAccess, max, pageToken, page, account }) => {
391
402
  const args = ['drive', 'labels', 'list'];
403
+ if (max !== undefined) args.push(`--max=${max}`);
404
+ const token = resolvePageToken({ pageToken, page });
405
+ if (token) args.push(`--page=${token}`);
392
406
  if (language) args.push(`--language=${language}`);
393
407
  if (view) args.push(`--view=${view}`);
394
408
  if (minimumRole) args.push(`--minimum-role=${minimumRole}`);
@@ -421,13 +435,15 @@ export function registerExtraDriveTools(server: McpServer): void {
421
435
  inputSchema: {
422
436
  fileId: z.string().describe('File ID'),
423
437
  max: z.number().optional().describe('Max results (default: 100)'),
424
- page: z.string().optional().describe('Page token'),
438
+ pageToken: pageTokenParam,
439
+ page: pageAliasParam,
425
440
  account: accountParam,
426
441
  },
427
- }, async ({ fileId, max, page, account }) => {
442
+ }, async ({ fileId, max, pageToken, page, account }) => {
428
443
  const args = ['drive', 'labels', 'file', 'list', fileId];
429
444
  if (max !== undefined) args.push(`--max=${max}`);
430
- if (page) args.push(`--page=${page}`);
445
+ const token = resolvePageToken({ pageToken, page });
446
+ if (token) args.push(`--page=${token}`);
431
447
  return runOrDiagnose(args, { account });
432
448
  });
433
449
 
@@ -480,12 +496,13 @@ export function registerExtraDriveTools(server: McpServer): void {
480
496
  to: z.string().optional().describe('Upper activity time bound (RFC3339)'),
481
497
  filter: z.string().optional().describe('Raw Drive Activity filter expression appended with AND'),
482
498
  max: z.number().optional().describe('Page size (default: 10)'),
483
- page: z.string().optional().describe('Page token'),
499
+ pageToken: pageTokenParam,
500
+ page: pageAliasParam,
484
501
  all: z.boolean().optional().describe('Fetch all pages'),
485
502
  consolidate: z.boolean().optional().describe('Use Drive Activity legacy consolidation strategy'),
486
503
  account: accountParam,
487
504
  },
488
- }, async ({ file, folder, actions, from, to, filter, max, page, all, consolidate, account }) => {
505
+ }, async ({ file, folder, actions, from, to, filter, max, pageToken, page, all, consolidate, account }) => {
489
506
  const args = ['drive', 'activity', 'query'];
490
507
  if (file) args.push(`--file=${file}`);
491
508
  if (folder) args.push(`--folder=${folder}`);
@@ -494,7 +511,8 @@ export function registerExtraDriveTools(server: McpServer): void {
494
511
  if (to) args.push(`--to=${to}`);
495
512
  if (filter) args.push(`--filter=${filter}`);
496
513
  if (max !== undefined) args.push(`--max=${max}`);
497
- if (page) args.push(`--page=${page}`);
514
+ const token = resolvePageToken({ pageToken, page });
515
+ if (token) args.push(`--page=${token}`);
498
516
  if (all) args.push('--all');
499
517
  if (consolidate) args.push('--consolidate');
500
518
  return runOrDiagnose(args, { account });
@@ -459,6 +459,22 @@ describe('gog_drive_labels_list', () => {
459
459
  await harness.callTool('gog_drive_labels_list', { publishedOnly: false, adminAccess: false });
460
460
  expect(lib.runOrDiagnose).toHaveBeenCalledWith(['drive', 'labels', 'list'], { account: undefined });
461
461
  });
462
+
463
+ // gog drive labels list is paginated upstream; the tool exposed neither max
464
+ // nor a cursor, so later pages were unreachable.
465
+ it('passes --max and --page through', async () => {
466
+ await harness.callTool('gog_drive_labels_list', { max: 50, pageToken: 'CURSOR' });
467
+ expect(lib.runOrDiagnose).toHaveBeenCalledWith(
468
+ ['drive', 'labels', 'list', '--max=50', '--page=CURSOR'], { account: undefined },
469
+ );
470
+ });
471
+
472
+ it('accepts the deprecated page alias', async () => {
473
+ await harness.callTool('gog_drive_labels_list', { page: 'CURSOR' });
474
+ expect(lib.runOrDiagnose).toHaveBeenCalledWith(
475
+ ['drive', 'labels', 'list', '--page=CURSOR'], { account: undefined },
476
+ );
477
+ });
462
478
  });
463
479
 
464
480
  describe('gog_drive_labels_get', () => {