mcp-google-multi 6.0.0-beta.2 → 6.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/accounts.d.ts +17 -1
  2. package/dist/accounts.js +52 -15
  3. package/dist/api-probe.d.ts +5 -0
  4. package/dist/api-probe.js +20 -15
  5. package/dist/arg-normalize.js +6 -5
  6. package/dist/arg-strict.d.ts +7 -0
  7. package/dist/arg-strict.js +34 -4
  8. package/dist/auth.d.ts +4 -3
  9. package/dist/auth.js +11 -13
  10. package/dist/boot-gates.d.ts +26 -0
  11. package/dist/boot-gates.js +38 -0
  12. package/dist/cimd-cache.d.ts +38 -0
  13. package/dist/cimd-cache.js +117 -0
  14. package/dist/client.d.ts +32 -2
  15. package/dist/client.js +0 -0
  16. package/dist/compose.d.ts +11 -0
  17. package/dist/compose.js +109 -0
  18. package/dist/config-file.d.ts +13 -0
  19. package/dist/config-file.js +37 -1
  20. package/dist/discover.js +3 -1
  21. package/dist/discovery-client.d.ts +3 -0
  22. package/dist/discovery-client.js +25 -2
  23. package/dist/doctor.d.ts +6 -2
  24. package/dist/doctor.js +119 -23
  25. package/dist/executor.d.ts +3 -0
  26. package/dist/executor.js +4 -2
  27. package/dist/fanout.d.ts +9 -1
  28. package/dist/fanout.js +44 -10
  29. package/dist/fs-atomic.d.ts +11 -0
  30. package/dist/fs-atomic.js +219 -28
  31. package/dist/hint-provider.d.ts +129 -0
  32. package/dist/hint-provider.js +64 -0
  33. package/dist/http-transport.d.ts +62 -4
  34. package/dist/http-transport.js +343 -24
  35. package/dist/identity.d.ts +4 -1
  36. package/dist/identity.js +25 -6
  37. package/dist/index.js +66 -138
  38. package/dist/master-key.js +13 -5
  39. package/dist/mcp-token.d.ts +136 -19
  40. package/dist/mcp-token.js +569 -72
  41. package/dist/migrate-config.js +2 -2
  42. package/dist/oauth-as.d.ts +103 -3
  43. package/dist/oauth-as.js +374 -79
  44. package/dist/oauth-consent.d.ts +10 -0
  45. package/dist/oauth-consent.js +16 -0
  46. package/dist/outbound-allowlist.js +5 -2
  47. package/dist/reauth-hint.d.ts +1 -1
  48. package/dist/reauth-hint.js +12 -8
  49. package/dist/registry-transfer.d.ts +5 -0
  50. package/dist/registry-transfer.js +65 -5
  51. package/dist/registry.d.ts +18 -1
  52. package/dist/registry.js +71 -15
  53. package/dist/scope-catalog.d.ts +11 -0
  54. package/dist/scope-catalog.js +23 -6
  55. package/dist/scope-observability.d.ts +8 -6
  56. package/dist/scope-observability.js +29 -13
  57. package/dist/services.d.ts +15 -10
  58. package/dist/services.js +59 -15
  59. package/dist/ssrf-guard.d.ts +23 -9
  60. package/dist/ssrf-guard.js +101 -62
  61. package/dist/tenant-purge.d.ts +26 -0
  62. package/dist/tenant-purge.js +67 -0
  63. package/dist/token-store.d.ts +20 -2
  64. package/dist/token-store.js +0 -0
  65. package/dist/tools/_errors.d.ts +3 -0
  66. package/dist/tools/_errors.js +53 -24
  67. package/dist/tools/_local-files.d.ts +9 -0
  68. package/dist/tools/_local-files.js +18 -0
  69. package/dist/tools/account-wizard.d.ts +10 -1
  70. package/dist/tools/account-wizard.js +74 -17
  71. package/dist/tools/accounts-tool.d.ts +7 -0
  72. package/dist/tools/accounts-tool.js +34 -18
  73. package/dist/tools/admin.d.ts +10 -1
  74. package/dist/tools/admin.js +15 -11
  75. package/dist/tools/analytics.d.ts +10 -1
  76. package/dist/tools/analytics.js +13 -8
  77. package/dist/tools/calendar.d.ts +2 -1
  78. package/dist/tools/calendar.js +18 -14
  79. package/dist/tools/chat.d.ts +10 -1
  80. package/dist/tools/chat.js +13 -8
  81. package/dist/tools/contacts.d.ts +2 -1
  82. package/dist/tools/contacts.js +17 -13
  83. package/dist/tools/docs.d.ts +2 -1
  84. package/dist/tools/docs.js +34 -30
  85. package/dist/tools/drive.d.ts +2 -1
  86. package/dist/tools/drive.js +65 -50
  87. package/dist/tools/forms.d.ts +10 -1
  88. package/dist/tools/forms.js +19 -12
  89. package/dist/tools/generated/_shared.d.ts +2 -1
  90. package/dist/tools/generated/_shared.js +7 -3
  91. package/dist/tools/generated/admin.d.ts +2 -1
  92. package/dist/tools/generated/admin.js +265 -265
  93. package/dist/tools/generated/analytics.d.ts +2 -1
  94. package/dist/tools/generated/analytics.js +125 -125
  95. package/dist/tools/generated/appsmarket.d.ts +2 -1
  96. package/dist/tools/generated/appsmarket.js +5 -5
  97. package/dist/tools/generated/calendar.d.ts +2 -1
  98. package/dist/tools/generated/calendar.js +55 -55
  99. package/dist/tools/generated/chat.d.ts +2 -1
  100. package/dist/tools/generated/chat.js +95 -95
  101. package/dist/tools/generated/classroom.d.ts +2 -1
  102. package/dist/tools/generated/classroom.js +209 -209
  103. package/dist/tools/generated/cloudidentity.d.ts +2 -1
  104. package/dist/tools/generated/cloudidentity.js +133 -133
  105. package/dist/tools/generated/cloudsearch.d.ts +2 -1
  106. package/dist/tools/generated/cloudsearch.js +99 -99
  107. package/dist/tools/generated/contacts.d.ts +2 -1
  108. package/dist/tools/generated/contacts.js +29 -29
  109. package/dist/tools/generated/drive.d.ts +2 -1
  110. package/dist/tools/generated/drive.js +71 -71
  111. package/dist/tools/generated/driveactivity.d.ts +2 -1
  112. package/dist/tools/generated/driveactivity.js +3 -3
  113. package/dist/tools/generated/drivelabels.d.ts +2 -1
  114. package/dist/tools/generated/drivelabels.js +53 -53
  115. package/dist/tools/generated/forms.d.ts +2 -1
  116. package/dist/tools/generated/forms.js +7 -7
  117. package/dist/tools/generated/gmail.d.ts +2 -1
  118. package/dist/tools/generated/gmail.js +117 -117
  119. package/dist/tools/generated/groupsmigration.d.ts +2 -1
  120. package/dist/tools/generated/groupsmigration.js +3 -3
  121. package/dist/tools/generated/groupssettings.d.ts +2 -1
  122. package/dist/tools/generated/groupssettings.js +7 -7
  123. package/dist/tools/generated/index.d.ts +2 -1
  124. package/dist/tools/generated/keep.d.ts +2 -1
  125. package/dist/tools/generated/keep.js +15 -15
  126. package/dist/tools/generated/licensing.d.ts +2 -1
  127. package/dist/tools/generated/licensing.js +15 -15
  128. package/dist/tools/generated/meet.d.ts +2 -1
  129. package/dist/tools/generated/meet.js +27 -27
  130. package/dist/tools/generated/postmaster.d.ts +2 -1
  131. package/dist/tools/generated/postmaster.js +9 -9
  132. package/dist/tools/generated/reseller.d.ts +2 -1
  133. package/dist/tools/generated/reseller.js +35 -35
  134. package/dist/tools/generated/script.d.ts +2 -1
  135. package/dist/tools/generated/script.js +33 -33
  136. package/dist/tools/generated/searchconsole.d.ts +2 -1
  137. package/dist/tools/generated/searchconsole.js +3 -3
  138. package/dist/tools/generated/sheets.d.ts +2 -1
  139. package/dist/tools/generated/sheets.js +15 -15
  140. package/dist/tools/generated/tasks.d.ts +2 -1
  141. package/dist/tools/generated/tasks.js +5 -5
  142. package/dist/tools/generated/vault.d.ts +2 -1
  143. package/dist/tools/generated/vault.js +67 -67
  144. package/dist/tools/generated/workspaceevents.d.ts +2 -1
  145. package/dist/tools/generated/workspaceevents.js +31 -31
  146. package/dist/tools/gmail.d.ts +2 -1
  147. package/dist/tools/gmail.js +45 -33
  148. package/dist/tools/google-api.d.ts +2 -3
  149. package/dist/tools/google-api.js +30 -16
  150. package/dist/tools/meet.d.ts +10 -1
  151. package/dist/tools/meet.js +13 -9
  152. package/dist/tools/searchconsole.d.ts +2 -1
  153. package/dist/tools/searchconsole.js +17 -13
  154. package/dist/tools/sheets.d.ts +2 -1
  155. package/dist/tools/sheets.js +36 -32
  156. package/dist/tools/slides.d.ts +10 -1
  157. package/dist/tools/slides.js +17 -10
  158. package/dist/tools/tasks.d.ts +2 -1
  159. package/dist/tools/tasks.js +19 -15
  160. package/dist/trim.d.ts +5 -0
  161. package/dist/trim.js +20 -0
  162. package/dist/usage-metrics.d.ts +23 -0
  163. package/dist/usage-metrics.js +65 -47
  164. package/dist/write-control.js +10 -2
  165. package/package.json +27 -1
@@ -1,11 +1,10 @@
1
1
  import { z } from 'zod';
2
2
  import { coerceBoolean, coerceJson } from './_coerce.js';
3
3
  import { docs as docsClient } from '@googleapis/docs';
4
- import { accountAliasSchema } from '../accounts.js';
4
+ import { accountArgLive } from '../accounts.js';
5
5
  import { getClient } from '../client.js';
6
6
  import { handleGoogleApiError, invalidParams } from './_errors.js';
7
7
  import { capText } from '../trim.js';
8
- const accountEnum = accountAliasSchema.optional();
9
8
  // A single very large insertText has been observed to apply only partially while
10
9
  // the request still returns success, silently dropping the tail. Split a large
11
10
  // insert into bounded pieces sent as sequential insertText requests in one atomic
@@ -170,7 +169,12 @@ export function listTabs(tabs) {
170
169
  }
171
170
  return out;
172
171
  }
173
- export function registerDocsTools(server) {
172
+ export function registerDocsTools(server, deps = {}) {
173
+ // Per-registry, LIVE account enum + injectable client (S1.10): the
174
+ // schema follows the registry's account view at parse time, and the
175
+ // custody path is the context's, not the process global.
176
+ const accountEnum = accountArgLive(() => server.accountAliases()).optional();
177
+ const getClientFn = deps.getClientFn ?? getClient;
174
178
  server.registerTool('docs_create', {
175
179
  description: 'Create a new Google Docs document',
176
180
  inputSchema: {
@@ -179,7 +183,7 @@ export function registerDocsTools(server) {
179
183
  },
180
184
  }, async ({ account, title }) => {
181
185
  try {
182
- const auth = await getClient(account);
186
+ const auth = await getClientFn(account);
183
187
  const docs = docsClient({ version: 'v1', auth });
184
188
  const res = await docs.documents.create({
185
189
  requestBody: { title },
@@ -211,7 +215,7 @@ export function registerDocsTools(server) {
211
215
  },
212
216
  }, async ({ account, documentId, includeTabsContent, suggestionsViewMode }) => {
213
217
  try {
214
- const auth = await getClient(account);
218
+ const auth = await getClientFn(account);
215
219
  const docs = docsClient({ version: 'v1', auth });
216
220
  const res = await docs.documents.get({
217
221
  documentId,
@@ -253,7 +257,7 @@ export function registerDocsTools(server) {
253
257
  if (heading !== undefined && headingIndex !== undefined) {
254
258
  return invalidParams(account, 'Both heading and headingIndex were supplied, and they address different sections.', 'Pass heading to look a section up by its text, or headingIndex to address one by position. Not both.');
255
259
  }
256
- const auth = await getClient(account);
260
+ const auth = await getClientFn(account);
257
261
  const docs = docsClient({ version: 'v1', auth });
258
262
  const res = await docs.documents.get({
259
263
  documentId,
@@ -352,7 +356,7 @@ export function registerDocsTools(server) {
352
356
  },
353
357
  }, async ({ account, documentId, text, index }) => {
354
358
  try {
355
- const auth = await getClient(account);
359
+ const auth = await getClientFn(account);
356
360
  const docs = docsClient({ version: 'v1', auth });
357
361
  const requests = buildInsertRequests(text, index);
358
362
  if (requests.length === 0) {
@@ -392,7 +396,7 @@ export function registerDocsTools(server) {
392
396
  },
393
397
  }, async ({ account, documentId, findText, replaceText, matchCase }) => {
394
398
  try {
395
- const auth = await getClient(account);
399
+ const auth = await getClientFn(account);
396
400
  const docs = docsClient({ version: 'v1', auth });
397
401
  const res = await docs.documents.batchUpdate({
398
402
  documentId,
@@ -427,7 +431,7 @@ export function registerDocsTools(server) {
427
431
  },
428
432
  }, async ({ account, documentId, startIndex, endIndex }) => {
429
433
  try {
430
- const auth = await getClient(account);
434
+ const auth = await getClientFn(account);
431
435
  const docs = docsClient({ version: 'v1', auth });
432
436
  const res = await docs.documents.batchUpdate({
433
437
  documentId,
@@ -465,7 +469,7 @@ export function registerDocsTools(server) {
465
469
  },
466
470
  }, async ({ account, documentId, startIndex, endIndex, bold, italic, underline, fontSize, fontFamily }) => {
467
471
  try {
468
- const auth = await getClient(account);
472
+ const auth = await getClientFn(account);
469
473
  const docs = docsClient({ version: 'v1', auth });
470
474
  const textStyle = {};
471
475
  const fields = [];
@@ -528,7 +532,7 @@ export function registerDocsTools(server) {
528
532
  },
529
533
  }, async ({ account, documentId, rows, columns, index }) => {
530
534
  try {
531
- const auth = await getClient(account);
535
+ const auth = await getClientFn(account);
532
536
  const docs = docsClient({ version: 'v1', auth });
533
537
  const request = { insertTable: { rows, columns } };
534
538
  if (index !== undefined) {
@@ -564,7 +568,7 @@ export function registerDocsTools(server) {
564
568
  },
565
569
  }, async ({ account, documentId, name, startIndex, endIndex }) => {
566
570
  try {
567
- const auth = await getClient(account);
571
+ const auth = await getClientFn(account);
568
572
  const docs = docsClient({ version: 'v1', auth });
569
573
  const res = await docs.documents.batchUpdate({
570
574
  documentId,
@@ -599,7 +603,7 @@ export function registerDocsTools(server) {
599
603
  if (!namedRangeId && !name) {
600
604
  return invalidParams(account, 'Neither namedRangeId nor name was supplied, so no named range is addressed.', 'Pass namedRangeId to delete one specific range, or name to delete every range carrying that name.');
601
605
  }
602
- const auth = await getClient(account);
606
+ const auth = await getClientFn(account);
603
607
  const docs = docsClient({ version: 'v1', auth });
604
608
  const req = {};
605
609
  if (namedRangeId)
@@ -632,7 +636,7 @@ export function registerDocsTools(server) {
632
636
  if (!namedRangeId && !namedRangeName) {
633
637
  return invalidParams(account, 'Neither namedRangeId nor namedRangeName was supplied, so no named range is addressed.', 'Pass namedRangeId to replace one specific range, or namedRangeName to replace every range carrying that name.');
634
638
  }
635
- const auth = await getClient(account);
639
+ const auth = await getClientFn(account);
636
640
  const docs = docsClient({ version: 'v1', auth });
637
641
  const req = { text };
638
642
  if (namedRangeId)
@@ -677,7 +681,7 @@ export function registerDocsTools(server) {
677
681
  },
678
682
  }, async ({ account, documentId, startIndex, endIndex, ...style }) => {
679
683
  try {
680
- const auth = await getClient(account);
684
+ const auth = await getClientFn(account);
681
685
  const docs = docsClient({ version: 'v1', auth });
682
686
  const built = buildParagraphStyle(style);
683
687
  if (built.fields.length === 0) {
@@ -723,7 +727,7 @@ export function registerDocsTools(server) {
723
727
  },
724
728
  }, async ({ account, documentId, ...style }) => {
725
729
  try {
726
- const auth = await getClient(account);
730
+ const auth = await getClientFn(account);
727
731
  const docs = docsClient({ version: 'v1', auth });
728
732
  const built = buildDocumentStyle(style);
729
733
  if (built.fields.length === 0) {
@@ -776,7 +780,7 @@ export function registerDocsTools(server) {
776
780
  },
777
781
  }, async ({ account, documentId, startIndex, endIndex, bulletPreset }) => {
778
782
  try {
779
- const auth = await getClient(account);
783
+ const auth = await getClientFn(account);
780
784
  const docs = docsClient({ version: 'v1', auth });
781
785
  await docs.documents.batchUpdate({
782
786
  documentId,
@@ -807,7 +811,7 @@ export function registerDocsTools(server) {
807
811
  },
808
812
  }, async ({ account, documentId, startIndex, endIndex }) => {
809
813
  try {
810
- const auth = await getClient(account);
814
+ const auth = await getClientFn(account);
811
815
  const docs = docsClient({ version: 'v1', auth });
812
816
  await docs.documents.batchUpdate({
813
817
  documentId,
@@ -840,7 +844,7 @@ export function registerDocsTools(server) {
840
844
  },
841
845
  }, async ({ account, documentId, uri, index, width, height }) => {
842
846
  try {
843
- const auth = await getClient(account);
847
+ const auth = await getClientFn(account);
844
848
  const docs = docsClient({ version: 'v1', auth });
845
849
  const request = { uri };
846
850
  if (index !== undefined)
@@ -876,7 +880,7 @@ export function registerDocsTools(server) {
876
880
  },
877
881
  }, async ({ account, documentId, index }) => {
878
882
  try {
879
- const auth = await getClient(account);
883
+ const auth = await getClientFn(account);
880
884
  const docs = docsClient({ version: 'v1', auth });
881
885
  const request = {};
882
886
  if (index !== undefined)
@@ -905,7 +909,7 @@ export function registerDocsTools(server) {
905
909
  },
906
910
  }, async ({ account, documentId, index, sectionType }) => {
907
911
  try {
908
- const auth = await getClient(account);
912
+ const auth = await getClientFn(account);
909
913
  const docs = docsClient({ version: 'v1', auth });
910
914
  const request = { sectionType: sectionType ?? 'NEXT_PAGE' };
911
915
  if (index !== undefined)
@@ -934,7 +938,7 @@ export function registerDocsTools(server) {
934
938
  },
935
939
  }, async ({ account, documentId, sectionBreakIndex }) => {
936
940
  try {
937
- const auth = await getClient(account);
941
+ const auth = await getClientFn(account);
938
942
  const docs = docsClient({ version: 'v1', auth });
939
943
  const request = { type: 'DEFAULT' };
940
944
  if (sectionBreakIndex !== undefined)
@@ -961,7 +965,7 @@ export function registerDocsTools(server) {
961
965
  },
962
966
  }, async ({ account, documentId, headerId }) => {
963
967
  try {
964
- const auth = await getClient(account);
968
+ const auth = await getClientFn(account);
965
969
  const docs = docsClient({ version: 'v1', auth });
966
970
  await docs.documents.batchUpdate({
967
971
  documentId,
@@ -984,7 +988,7 @@ export function registerDocsTools(server) {
984
988
  },
985
989
  }, async ({ account, documentId, sectionBreakIndex }) => {
986
990
  try {
987
- const auth = await getClient(account);
991
+ const auth = await getClientFn(account);
988
992
  const docs = docsClient({ version: 'v1', auth });
989
993
  const request = { type: 'DEFAULT' };
990
994
  if (sectionBreakIndex !== undefined)
@@ -1011,7 +1015,7 @@ export function registerDocsTools(server) {
1011
1015
  },
1012
1016
  }, async ({ account, documentId, footerId }) => {
1013
1017
  try {
1014
- const auth = await getClient(account);
1018
+ const auth = await getClientFn(account);
1015
1019
  const docs = docsClient({ version: 'v1', auth });
1016
1020
  await docs.documents.batchUpdate({
1017
1021
  documentId,
@@ -1044,7 +1048,7 @@ export function registerDocsTools(server) {
1044
1048
  },
1045
1049
  }, async ({ account, documentId, operation, tableStartIndex, rowIndex, columnIndex, insertBelow, insertRight, rowSpan, columnSpan }) => {
1046
1050
  try {
1047
- const auth = await getClient(account);
1051
+ const auth = await getClientFn(account);
1048
1052
  const docs = docsClient({ version: 'v1', auth });
1049
1053
  const cellLoc = {
1050
1054
  tableStartLocation: { index: tableStartIndex },
@@ -1112,7 +1116,7 @@ export function registerDocsTools(server) {
1112
1116
  },
1113
1117
  }, async ({ account, documentId, title, parentTabId, index }) => {
1114
1118
  try {
1115
- const auth = await getClient(account);
1119
+ const auth = await getClientFn(account);
1116
1120
  const docs = docsClient({ version: 'v1', auth });
1117
1121
  const tabProperties = { title };
1118
1122
  if (parentTabId)
@@ -1141,7 +1145,7 @@ export function registerDocsTools(server) {
1141
1145
  },
1142
1146
  }, async ({ account, documentId, tabId }) => {
1143
1147
  try {
1144
- const auth = await getClient(account);
1148
+ const auth = await getClientFn(account);
1145
1149
  const docs = docsClient({ version: 'v1', auth });
1146
1150
  await docs.documents.batchUpdate({
1147
1151
  documentId,
@@ -1167,7 +1171,7 @@ export function registerDocsTools(server) {
1167
1171
  },
1168
1172
  }, async ({ account, documentId, tabId, title, index, parentTabId }) => {
1169
1173
  try {
1170
- const auth = await getClient(account);
1174
+ const auth = await getClientFn(account);
1171
1175
  const docs = docsClient({ version: 'v1', auth });
1172
1176
  const tabProperties = { tabId };
1173
1177
  const fields = [];
@@ -1221,7 +1225,7 @@ export function registerDocsTools(server) {
1221
1225
  },
1222
1226
  }, async ({ account, documentId, requests, writeControl }) => {
1223
1227
  try {
1224
- const auth = await getClient(account);
1228
+ const auth = await getClientFn(account);
1225
1229
  const docs = docsClient({ version: 'v1', auth });
1226
1230
  const res = await docs.documents.batchUpdate({
1227
1231
  documentId,
@@ -1,4 +1,5 @@
1
1
  import type { ToolRegistry } from '../registry.js';
2
+ import { type CuratedToolDeps } from '../client.js';
2
3
  export declare function isTextualMime(mimeType: string): boolean;
3
4
  export declare function resolveConvertTarget(convertTo: string | undefined): string | undefined;
4
5
  export declare const DRIVE_QUERY_HINT: string;
@@ -10,7 +11,7 @@ export declare function resolveShareNotification(opts: {
10
11
  transferOwnership?: boolean;
11
12
  sendNotification?: boolean;
12
13
  }): boolean | undefined;
13
- export declare function registerDriveTools(server: ToolRegistry): void;
14
+ export declare function registerDriveTools(server: ToolRegistry, deps?: CuratedToolDeps): void;
14
15
  export type TransferPlan = {
15
16
  kind: 'binary';
16
17
  } | {