mcp-google-multi 6.0.0-beta.1 → 6.0.0-beta.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.
Files changed (103) hide show
  1. package/README.md +5 -3
  2. package/dist/accounts.d.ts +5 -0
  3. package/dist/accounts.js +12 -1
  4. package/dist/api-probe.js +3 -0
  5. package/dist/arg-normalize.d.ts +61 -4
  6. package/dist/arg-normalize.js +228 -4
  7. package/dist/arg-strict.d.ts +54 -0
  8. package/dist/arg-strict.js +163 -0
  9. package/dist/auth.js +15 -72
  10. package/dist/client.js +15 -5
  11. package/dist/config-file.d.ts +1 -0
  12. package/dist/config-file.js +4 -0
  13. package/dist/discover.js +35 -14
  14. package/dist/discovery-client.d.ts +8 -1
  15. package/dist/discovery-client.js +96 -17
  16. package/dist/doctor.d.ts +9 -1
  17. package/dist/doctor.js +32 -4
  18. package/dist/env-load.d.ts +11 -0
  19. package/dist/env-load.js +23 -1
  20. package/dist/executor.js +12 -1
  21. package/dist/fanout.js +43 -8
  22. package/dist/http-transport.d.ts +11 -2
  23. package/dist/http-transport.js +10 -5
  24. package/dist/index.js +112 -12
  25. package/dist/metrics-cli.d.ts +21 -0
  26. package/dist/metrics-cli.js +206 -0
  27. package/dist/metrics-tap.d.ts +12 -0
  28. package/dist/metrics-tap.js +95 -0
  29. package/dist/oauth-consent.d.ts +25 -10
  30. package/dist/oauth-consent.js +85 -39
  31. package/dist/outbound-allowlist.d.ts +34 -0
  32. package/dist/outbound-allowlist.js +108 -0
  33. package/dist/registry.d.ts +49 -2
  34. package/dist/registry.js +147 -7
  35. package/dist/scope-catalog.js +16 -0
  36. package/dist/services.d.ts +8 -0
  37. package/dist/services.js +28 -1
  38. package/dist/setup-prompt.d.ts +1 -1
  39. package/dist/setup-prompt.js +1 -1
  40. package/dist/tools/_coerce.d.ts +5 -0
  41. package/dist/tools/_coerce.js +11 -0
  42. package/dist/tools/_errors.d.ts +31 -3
  43. package/dist/tools/_errors.js +307 -43
  44. package/dist/tools/_local-files.js +7 -2
  45. package/dist/tools/account-wizard.d.ts +24 -1
  46. package/dist/tools/account-wizard.js +152 -51
  47. package/dist/tools/admin.js +7 -6
  48. package/dist/tools/analytics.d.ts +18 -0
  49. package/dist/tools/analytics.js +284 -0
  50. package/dist/tools/calendar.d.ts +7 -0
  51. package/dist/tools/calendar.js +75 -15
  52. package/dist/tools/chat.js +7 -4
  53. package/dist/tools/contacts.js +57 -30
  54. package/dist/tools/docs.js +56 -54
  55. package/dist/tools/drive.js +132 -70
  56. package/dist/tools/forms.js +7 -7
  57. package/dist/tools/generated/_shared.d.ts +6 -0
  58. package/dist/tools/generated/_shared.js +11 -1
  59. package/dist/tools/generated/admin.js +345 -214
  60. package/dist/tools/generated/analytics.d.ts +2 -0
  61. package/dist/tools/generated/analytics.js +981 -0
  62. package/dist/tools/generated/appsmarket.js +4 -4
  63. package/dist/tools/generated/calendar.js +28 -28
  64. package/dist/tools/generated/chat.js +83 -56
  65. package/dist/tools/generated/classroom.js +258 -216
  66. package/dist/tools/generated/cloudidentity.js +76 -68
  67. package/dist/tools/generated/cloudsearch.js +40 -39
  68. package/dist/tools/generated/contacts.js +20 -11
  69. package/dist/tools/generated/drive.js +62 -53
  70. package/dist/tools/generated/drivelabels.js +60 -32
  71. package/dist/tools/generated/forms.js +7 -7
  72. package/dist/tools/generated/gmail.js +136 -109
  73. package/dist/tools/generated/groupsmigration.js +1 -1
  74. package/dist/tools/generated/groupssettings.js +3 -3
  75. package/dist/tools/generated/index.js +2 -0
  76. package/dist/tools/generated/keep.js +8 -7
  77. package/dist/tools/generated/licensing.js +39 -23
  78. package/dist/tools/generated/meet.js +14 -14
  79. package/dist/tools/generated/method-map.d.ts +2 -0
  80. package/dist/tools/generated/method-map.js +894 -0
  81. package/dist/tools/generated/postmaster.js +3 -3
  82. package/dist/tools/generated/reseller.js +34 -28
  83. package/dist/tools/generated/script.js +29 -19
  84. package/dist/tools/generated/searchconsole.js +5 -3
  85. package/dist/tools/generated/sheets.js +10 -9
  86. package/dist/tools/generated/tasks.js +10 -4
  87. package/dist/tools/generated/vault.js +65 -56
  88. package/dist/tools/generated/workspaceevents.js +17 -16
  89. package/dist/tools/gmail.d.ts +10 -1
  90. package/dist/tools/gmail.js +50 -18
  91. package/dist/tools/google-api.js +48 -19
  92. package/dist/tools/meet.js +5 -2
  93. package/dist/tools/searchconsole.js +10 -10
  94. package/dist/tools/sheets.js +36 -48
  95. package/dist/tools/slides.js +6 -6
  96. package/dist/tools/tasks.js +16 -16
  97. package/dist/trim.d.ts +21 -0
  98. package/dist/trim.js +47 -0
  99. package/dist/usage-metrics.d.ts +155 -0
  100. package/dist/usage-metrics.js +603 -0
  101. package/dist/write-control.d.ts +27 -1
  102. package/dist/write-control.js +90 -11
  103. package/package.json +8 -3
@@ -15,7 +15,7 @@ export function registerGroupsmigrationGeneratedTools(registry) {
15
15
  hasBody: false,
16
16
  shape: {
17
17
  account: accountField(),
18
- groupId: z.string().describe("The group ID"),
18
+ groupId: z.string().min(1).describe("The group ID"),
19
19
  fields: z.string().optional().describe('Response field mask.'),
20
20
  },
21
21
  });
@@ -16,7 +16,7 @@ export function registerGroupssettingsGeneratedTools(registry) {
16
16
  hasBody: false,
17
17
  shape: {
18
18
  account: accountField(),
19
- groupUniqueId: z.string().describe("The group's email address."),
19
+ groupUniqueId: z.string().min(1).describe("The group's email address."),
20
20
  fields: z.string().optional().describe('Response field mask.'),
21
21
  },
22
22
  });
@@ -29,7 +29,7 @@ export function registerGroupssettingsGeneratedTools(registry) {
29
29
  hasBody: true,
30
30
  shape: {
31
31
  account: accountField(),
32
- groupUniqueId: z.string().describe("The group's email address."),
32
+ groupUniqueId: z.string().min(1).describe("The group's email address."),
33
33
  body: coerceJson(z.record(z.string(), z.unknown())).describe("Groups JSON request body. Top-level fields: allowExternalMembers, allowGoogleCommunication, allowWebPosting, archiveOnly, customFooterText, customReplyTo, customRolesEnabledForSettingsToBeMerged, defaultMessageDenyNotificationText, default_sender, description, email, enableCollaborativeInbox, +51 more."),
34
34
  fields: z.string().optional().describe('Response field mask.'),
35
35
  },
@@ -43,7 +43,7 @@ export function registerGroupssettingsGeneratedTools(registry) {
43
43
  hasBody: true,
44
44
  shape: {
45
45
  account: accountField(),
46
- groupUniqueId: z.string().describe("The group's email address."),
46
+ groupUniqueId: z.string().min(1).describe("The group's email address."),
47
47
  body: coerceJson(z.record(z.string(), z.unknown())).describe("Groups JSON request body. Top-level fields: allowExternalMembers, allowGoogleCommunication, allowWebPosting, archiveOnly, customFooterText, customReplyTo, customRolesEnabledForSettingsToBeMerged, defaultMessageDenyNotificationText, default_sender, description, email, enableCollaborativeInbox, +51 more."),
48
48
  fields: z.string().optional().describe('Response field mask.'),
49
49
  },
@@ -1,4 +1,5 @@
1
1
  import { registerAdminGeneratedTools } from './admin.js';
2
+ import { registerAnalyticsGeneratedTools } from './analytics.js';
2
3
  import { registerAppsmarketGeneratedTools } from './appsmarket.js';
3
4
  import { registerCalendarGeneratedTools } from './calendar.js';
4
5
  import { registerChatGeneratedTools } from './chat.js';
@@ -26,6 +27,7 @@ import { registerVaultGeneratedTools } from './vault.js';
26
27
  import { registerWorkspaceeventsGeneratedTools } from './workspaceevents.js';
27
28
  export const GENERATED_SERVICES = [
28
29
  { name: "admin", register: registerAdminGeneratedTools },
30
+ { name: "analytics", register: registerAnalyticsGeneratedTools },
29
31
  { name: "appsmarket", register: registerAppsmarketGeneratedTools },
30
32
  { name: "calendar", register: registerCalendarGeneratedTools },
31
33
  { name: "chat", register: registerChatGeneratedTools },
@@ -1,6 +1,6 @@
1
1
  // GENERATED by scripts/gen-tools.ts — do not edit. Regenerate: npm run gen:tools
2
2
  import { z } from 'zod';
3
- import { coerceJson } from '../_coerce.js';
3
+ import { coerceArray, coerceJson } from '../_coerce.js';
4
4
  import { accountField, registerGeneratedTool } from './_shared.js';
5
5
  export function registerKeepGeneratedTools(registry) {
6
6
  // Interned method scope sets (shared across tools; see scope-observability).
@@ -17,7 +17,7 @@ export function registerKeepGeneratedTools(registry) {
17
17
  hasBody: false,
18
18
  shape: {
19
19
  account: accountField(),
20
- name: z.string().describe("Required. The name of the attachment."),
20
+ name: z.string().min(1).describe("Required. The name of the attachment."),
21
21
  mimeType: z.string().describe("The IANA MIME type format requested. The requested MIME type must be one specified in the attachment.mime_type. Required when downloading attachment media and ignored otherwise.").optional(),
22
22
  fields: z.string().optional().describe('Response field mask.'),
23
23
  },
@@ -44,7 +44,7 @@ export function registerKeepGeneratedTools(registry) {
44
44
  hasBody: false,
45
45
  shape: {
46
46
  account: accountField(),
47
- name: z.string().describe("Required. Name of the note to delete."),
47
+ name: z.string().min(1).describe("Required. Name of the note to delete."),
48
48
  fields: z.string().optional().describe('Response field mask.'),
49
49
  },
50
50
  });
@@ -57,7 +57,7 @@ export function registerKeepGeneratedTools(registry) {
57
57
  hasBody: false,
58
58
  shape: {
59
59
  account: accountField(),
60
- name: z.string().describe("Required. Name of the resource."),
60
+ name: z.string().min(1).describe("Required. Name of the resource."),
61
61
  fields: z.string().optional().describe('Response field mask.'),
62
62
  },
63
63
  });
@@ -85,7 +85,7 @@ export function registerKeepGeneratedTools(registry) {
85
85
  hasBody: true,
86
86
  shape: {
87
87
  account: accountField(),
88
- parent: z.string().describe("The parent resource shared by all Permissions being created. Format: `notes/{note}` If this is set, the parent field in the CreatePermission messages must either be empty or match this field."),
88
+ parent: z.string().min(1).describe("The parent resource shared by all Permissions being created. Format: `notes/{note}` If this is set, the parent field in the CreatePermission messages must either be empty or match this field."),
89
89
  body: coerceJson(z.record(z.string(), z.unknown())).describe("BatchCreatePermissionsRequest JSON request body. Top-level fields: requests."),
90
90
  fields: z.string().optional().describe('Response field mask.'),
91
91
  },
@@ -97,10 +97,11 @@ export function registerKeepGeneratedTools(registry) {
97
97
  method: { id: "keep.notes.permissions.batchDelete", httpMethod: "POST", path: "v1/{+parent}/permissions:batchDelete", baseUrl: "https://keep.googleapis.com/", requiredParams: ["parent"], scopes: S_keep_v1[1] },
98
98
  params: [{ "field": "parent", "api": "parent", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
99
99
  hasBody: true,
100
+ bodyParams: [{ "field": "names", "api": "names" }],
100
101
  shape: {
101
102
  account: accountField(),
102
- parent: z.string().describe("The parent resource shared by all permissions being deleted. Format: `notes/{note}` If this is set, the parent of all of the permissions specified in the DeletePermissionRequest messages must match th"),
103
- body: coerceJson(z.record(z.string(), z.unknown())).describe("BatchDeletePermissionsRequest JSON request body. Top-level fields: names."),
103
+ parent: z.string().min(1).describe("The parent resource shared by all permissions being deleted. Format: `notes/{note}` If this is set, the parent of all of the permissions specified in the DeletePermissionRequest messages must match th"),
104
+ names: coerceArray(z.string()).describe("Required. The names of the permissions to delete. Format: `notes/{note}/permissions/{permission}`").optional(),
104
105
  fields: z.string().optional().describe('Response field mask.'),
105
106
  },
106
107
  });
@@ -1,6 +1,5 @@
1
1
  // GENERATED by scripts/gen-tools.ts — do not edit. Regenerate: npm run gen:tools
2
2
  import { z } from 'zod';
3
- import { coerceJson } from '../_coerce.js';
4
3
  import { accountField, registerGeneratedTool } from './_shared.js';
5
4
  export function registerLicensingGeneratedTools(registry) {
6
5
  // Interned method scope sets (shared across tools; see scope-observability).
@@ -16,9 +15,9 @@ export function registerLicensingGeneratedTools(registry) {
16
15
  hasBody: false,
17
16
  shape: {
18
17
  account: accountField(),
19
- productId: z.string().describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
20
- skuId: z.string().describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
21
- userId: z.string().describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
18
+ productId: z.string().min(1).describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
19
+ skuId: z.string().min(1).describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
20
+ userId: z.string().min(1).describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
22
21
  fields: z.string().optional().describe('Response field mask.'),
23
22
  },
24
23
  });
@@ -31,9 +30,9 @@ export function registerLicensingGeneratedTools(registry) {
31
30
  hasBody: false,
32
31
  shape: {
33
32
  account: accountField(),
34
- productId: z.string().describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
35
- skuId: z.string().describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
36
- userId: z.string().describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
33
+ productId: z.string().min(1).describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
34
+ skuId: z.string().min(1).describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
35
+ userId: z.string().min(1).describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
37
36
  fields: z.string().optional().describe('Response field mask.'),
38
37
  },
39
38
  });
@@ -44,11 +43,12 @@ export function registerLicensingGeneratedTools(registry) {
44
43
  method: { id: "licensing.licenseAssignments.insert", httpMethod: "POST", path: "apps/licensing/v1/product/{productId}/sku/{skuId}/user", baseUrl: "https://licensing.googleapis.com/", requiredParams: ["productId", "skuId"], scopes: S_licensing_v1[0] },
45
44
  params: [{ "field": "productId", "api": "productId", "location": "path" }, { "field": "skuId", "api": "skuId", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
46
45
  hasBody: true,
46
+ bodyParams: [{ "field": "userId", "api": "userId" }],
47
47
  shape: {
48
48
  account: accountField(),
49
- productId: z.string().describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
50
- skuId: z.string().describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
51
- body: coerceJson(z.record(z.string(), z.unknown())).describe("LicenseAssignmentInsert JSON request body. Top-level fields: userId."),
49
+ productId: z.string().min(1).describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
50
+ skuId: z.string().min(1).describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
51
+ userId: z.string().min(1).describe("Email id of the user"),
52
52
  fields: z.string().optional().describe('Response field mask.'),
53
53
  },
54
54
  });
@@ -61,8 +61,8 @@ export function registerLicensingGeneratedTools(registry) {
61
61
  hasBody: false,
62
62
  shape: {
63
63
  account: accountField(),
64
- productId: z.string().describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
65
- customerId: z.string().describe("The customer's unique ID as defined in the Admin console, such as `C00000000`. If the customer is suspended, the server returns an error."),
64
+ productId: z.string().min(1).describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
65
+ customerId: z.string().min(1).describe("The customer's unique ID as defined in the Admin console, such as `C00000000`. If the customer is suspended, the server returns an error."),
66
66
  maxResults: z.number().describe("The `maxResults` query string determines how many entries are returned on each page of a large response. This is an optional parameter. The value must be a positive number.").optional(),
67
67
  pageToken: z.string().describe("Token to fetch the next page of data. The `maxResults` query string is related to the `pageToken` since `maxResults` determines how many entries are returned on each page. This is an optional query st").optional(),
68
68
  fields: z.string().optional().describe('Response field mask.'),
@@ -77,9 +77,9 @@ export function registerLicensingGeneratedTools(registry) {
77
77
  hasBody: false,
78
78
  shape: {
79
79
  account: accountField(),
80
- productId: z.string().describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
81
- skuId: z.string().describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
82
- customerId: z.string().describe("The customer's unique ID as defined in the Admin console, such as `C00000000`. If the customer is suspended, the server returns an error."),
80
+ productId: z.string().min(1).describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
81
+ skuId: z.string().min(1).describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
82
+ customerId: z.string().min(1).describe("The customer's unique ID as defined in the Admin console, such as `C00000000`. If the customer is suspended, the server returns an error."),
83
83
  maxResults: z.number().describe("The `maxResults` query string determines how many entries are returned on each page of a large response. This is an optional parameter. The value must be a positive number.").optional(),
84
84
  pageToken: z.string().describe("Token to fetch the next page of data. The `maxResults` query string is related to the `pageToken` since `maxResults` determines how many entries are returned on each page. This is an optional query st").optional(),
85
85
  fields: z.string().optional().describe('Response field mask.'),
@@ -92,12 +92,20 @@ export function registerLicensingGeneratedTools(registry) {
92
92
  method: { id: "licensing.licenseAssignments.patch", httpMethod: "PATCH", path: "apps/licensing/v1/product/{productId}/sku/{skuId}/user/{userId}", baseUrl: "https://licensing.googleapis.com/", requiredParams: ["productId", "skuId", "userId"], scopes: S_licensing_v1[0] },
93
93
  params: [{ "field": "productId", "api": "productId", "location": "path" }, { "field": "skuId", "api": "skuId", "location": "path" }, { "field": "userId", "api": "userId", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
94
94
  hasBody: true,
95
+ bodyParams: [{ "field": "etags", "api": "etags" }, { "field": "kind", "api": "kind" }, { "field": "productId_", "api": "productId" }, { "field": "productName", "api": "productName" }, { "field": "selfLink", "api": "selfLink" }, { "field": "skuId_", "api": "skuId" }, { "field": "skuName", "api": "skuName" }, { "field": "userId_", "api": "userId" }],
95
96
  shape: {
96
97
  account: accountField(),
97
- productId: z.string().describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
98
- skuId: z.string().describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
99
- userId: z.string().describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
100
- body: coerceJson(z.record(z.string(), z.unknown())).describe("LicenseAssignment JSON request body. Top-level fields: etags, kind, productId, productName, selfLink, skuId, skuName, userId."),
98
+ productId: z.string().min(1).describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
99
+ skuId: z.string().min(1).describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
100
+ userId: z.string().min(1).describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
101
+ etags: z.string().describe("ETag of the resource.").optional(),
102
+ kind: z.string().describe("Identifies the resource as a LicenseAssignment, which is `licensing#licenseAssignment`.").optional(),
103
+ productId_: z.string().describe("A product's unique identifier. For more information about products in this version of the API, see Product and SKU IDs.").optional(),
104
+ productName: z.string().describe("Display Name of the product.").optional(),
105
+ selfLink: z.string().describe("Link to this page.").optional(),
106
+ skuId_: z.string().describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs.").optional(),
107
+ skuName: z.string().describe("Display Name of the sku of the product.").optional(),
108
+ userId_: z.string().describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k").optional(),
101
109
  fields: z.string().optional().describe('Response field mask.'),
102
110
  },
103
111
  });
@@ -108,12 +116,20 @@ export function registerLicensingGeneratedTools(registry) {
108
116
  method: { id: "licensing.licenseAssignments.update", httpMethod: "PUT", path: "apps/licensing/v1/product/{productId}/sku/{skuId}/user/{userId}", baseUrl: "https://licensing.googleapis.com/", requiredParams: ["productId", "skuId", "userId"], scopes: S_licensing_v1[0] },
109
117
  params: [{ "field": "productId", "api": "productId", "location": "path" }, { "field": "skuId", "api": "skuId", "location": "path" }, { "field": "userId", "api": "userId", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
110
118
  hasBody: true,
119
+ bodyParams: [{ "field": "productId_", "api": "productId" }, { "field": "skuId_", "api": "skuId" }, { "field": "userId_", "api": "userId" }, { "field": "etags", "api": "etags" }, { "field": "kind", "api": "kind" }, { "field": "productName", "api": "productName" }, { "field": "selfLink", "api": "selfLink" }, { "field": "skuName", "api": "skuName" }],
111
120
  shape: {
112
121
  account: accountField(),
113
- productId: z.string().describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
114
- skuId: z.string().describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
115
- userId: z.string().describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
116
- body: coerceJson(z.record(z.string(), z.unknown())).describe("LicenseAssignment JSON request body. Top-level fields: etags, kind, productId, productName, selfLink, skuId, skuName, userId."),
122
+ productId: z.string().min(1).describe("A product's unique identifier. For more information about products in this version of the API, see Products and SKUs."),
123
+ skuId: z.string().min(1).describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
124
+ userId: z.string().min(1).describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
125
+ productId_: z.string().min(1).describe("A product's unique identifier. For more information about products in this version of the API, see Product and SKU IDs."),
126
+ skuId_: z.string().min(1).describe("A product SKU's unique identifier. For more information about available SKUs in this version of the API, see Products and SKUs."),
127
+ userId_: z.string().min(1).describe("The user's current primary email address. If the user's email address changes, use the new email address in your API requests. Since a `userId` is subject to change, do not use a `userId` value as a k"),
128
+ etags: z.string().describe("ETag of the resource.").optional(),
129
+ kind: z.string().describe("Identifies the resource as a LicenseAssignment, which is `licensing#licenseAssignment`.").optional(),
130
+ productName: z.string().describe("Display Name of the product.").optional(),
131
+ selfLink: z.string().describe("Link to this page.").optional(),
132
+ skuName: z.string().describe("Display Name of the sku of the product.").optional(),
117
133
  fields: z.string().optional().describe('Response field mask.'),
118
134
  },
119
135
  });
@@ -19,7 +19,7 @@ export function registerMeetGeneratedTools(registry) {
19
19
  hasBody: false,
20
20
  shape: {
21
21
  account: accountField(),
22
- name: z.string().describe("Required. Resource name of the participant."),
22
+ name: z.string().min(1).describe("Required. Resource name of the participant."),
23
23
  fields: z.string().optional().describe('Response field mask.'),
24
24
  },
25
25
  });
@@ -32,7 +32,7 @@ export function registerMeetGeneratedTools(registry) {
32
32
  hasBody: false,
33
33
  shape: {
34
34
  account: accountField(),
35
- parent: z.string().describe("Required. Format: `conferenceRecords/{conference_record}`"),
35
+ parent: z.string().min(1).describe("Required. Format: `conferenceRecords/{conference_record}`"),
36
36
  filter: z.string().describe("Optional. User specified filtering condition in [EBNF format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). The following are the filterable fields: * `earliest_start_time` * `late").optional(),
37
37
  pageSize: z.number().describe("Maximum number of participants to return. The service might return fewer than this value. If unspecified, at most 100 participants are returned. The maximum value is 250; values above 250 are coerced ").optional(),
38
38
  pageToken: z.string().describe("Page token returned from previous List Call.").optional(),
@@ -48,7 +48,7 @@ export function registerMeetGeneratedTools(registry) {
48
48
  hasBody: false,
49
49
  shape: {
50
50
  account: accountField(),
51
- name: z.string().describe("Required. Resource name of the participant."),
51
+ name: z.string().min(1).describe("Required. Resource name of the participant."),
52
52
  fields: z.string().optional().describe('Response field mask.'),
53
53
  },
54
54
  });
@@ -61,7 +61,7 @@ export function registerMeetGeneratedTools(registry) {
61
61
  hasBody: false,
62
62
  shape: {
63
63
  account: accountField(),
64
- parent: z.string().describe("Required. Format: `conferenceRecords/{conference_record}/participants/{participant}`"),
64
+ parent: z.string().min(1).describe("Required. Format: `conferenceRecords/{conference_record}/participants/{participant}`"),
65
65
  filter: z.string().describe("Optional. User specified filtering condition in [EBNF format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). The following are the filterable fields: * `start_time` * `end_time` For").optional(),
66
66
  pageSize: z.number().describe("Optional. Maximum number of participant sessions to return. The service might return fewer than this value. If unspecified, at most 100 participants are returned. The maximum value is 250; values abov").optional(),
67
67
  pageToken: z.string().describe("Optional. Page token returned from previous List Call.").optional(),
@@ -77,7 +77,7 @@ export function registerMeetGeneratedTools(registry) {
77
77
  hasBody: false,
78
78
  shape: {
79
79
  account: accountField(),
80
- name: z.string().describe("Required. Resource name of the recording."),
80
+ name: z.string().min(1).describe("Required. Resource name of the recording."),
81
81
  fields: z.string().optional().describe('Response field mask.'),
82
82
  },
83
83
  });
@@ -90,7 +90,7 @@ export function registerMeetGeneratedTools(registry) {
90
90
  hasBody: false,
91
91
  shape: {
92
92
  account: accountField(),
93
- name: z.string().describe("Required. Resource name of the smart note. Format: conferenceRecords/{conference_record}/smartNotes/{smart_note}"),
93
+ name: z.string().min(1).describe("Required. Resource name of the smart note. Format: conferenceRecords/{conference_record}/smartNotes/{smart_note}"),
94
94
  fields: z.string().optional().describe('Response field mask.'),
95
95
  },
96
96
  });
@@ -103,7 +103,7 @@ export function registerMeetGeneratedTools(registry) {
103
103
  hasBody: false,
104
104
  shape: {
105
105
  account: accountField(),
106
- parent: z.string().describe("Required. Format: `conferenceRecords/{conference_record}`"),
106
+ parent: z.string().min(1).describe("Required. Format: `conferenceRecords/{conference_record}`"),
107
107
  pageSize: z.number().describe("Optional. Maximum number of smart notes to return. The service might return fewer than this value. If unspecified, at most 10 smart notes are returned. The maximum value is 100; values above 100 are c").optional(),
108
108
  pageToken: z.string().describe("Optional. Page token returned from previous List Call.").optional(),
109
109
  fields: z.string().optional().describe('Response field mask.'),
@@ -118,7 +118,7 @@ export function registerMeetGeneratedTools(registry) {
118
118
  hasBody: false,
119
119
  shape: {
120
120
  account: accountField(),
121
- name: z.string().describe("Required. Resource name of the `TranscriptEntry`."),
121
+ name: z.string().min(1).describe("Required. Resource name of the `TranscriptEntry`."),
122
122
  fields: z.string().optional().describe('Response field mask.'),
123
123
  },
124
124
  });
@@ -131,7 +131,7 @@ export function registerMeetGeneratedTools(registry) {
131
131
  hasBody: false,
132
132
  shape: {
133
133
  account: accountField(),
134
- name: z.string().describe("Required. Resource name of the transcript."),
134
+ name: z.string().min(1).describe("Required. Resource name of the transcript."),
135
135
  fields: z.string().optional().describe('Response field mask.'),
136
136
  },
137
137
  });
@@ -150,15 +150,15 @@ export function registerMeetGeneratedTools(registry) {
150
150
  });
151
151
  registerGeneratedTool(registry, {
152
152
  name: "meet_spaces_end_active_conference",
153
- cud: "create",
153
+ cud: "delete",
154
154
  description: "Ends an active conference (if there's one). For an example, see [End active conference](https://developers.google.com/workspace/meet/api/guides/meeting-spaces#e",
155
155
  method: { id: "meet.spaces.endActiveConference", httpMethod: "POST", path: "v2/{+name}:endActiveConference", baseUrl: "https://meet.googleapis.com/", requiredParams: ["name"], scopes: S_meet_v2[1] },
156
156
  params: [{ "field": "name", "api": "name", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
157
157
  hasBody: true,
158
+ bodyParams: [],
158
159
  shape: {
159
160
  account: accountField(),
160
- name: z.string().describe("Required. Resource name of the space. Format: `spaces/{space}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. For example, `jQCFfuBOdN5z"),
161
- body: coerceJson(z.record(z.string(), z.unknown())).describe("EndActiveConferenceRequest JSON request body."),
161
+ name: z.string().min(1).describe("Required. Resource name of the space. Format: `spaces/{space}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. For example, `jQCFfuBOdN5z"),
162
162
  fields: z.string().optional().describe('Response field mask.'),
163
163
  },
164
164
  });
@@ -171,7 +171,7 @@ export function registerMeetGeneratedTools(registry) {
171
171
  hasBody: false,
172
172
  shape: {
173
173
  account: accountField(),
174
- name: z.string().describe("Required. Resource name of the space. Format: `spaces/{space}` or `spaces/{meetingCode}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. "),
174
+ name: z.string().min(1).describe("Required. Resource name of the space. Format: `spaces/{space}` or `spaces/{meetingCode}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. "),
175
175
  fields: z.string().optional().describe('Response field mask.'),
176
176
  },
177
177
  });
@@ -184,7 +184,7 @@ export function registerMeetGeneratedTools(registry) {
184
184
  hasBody: true,
185
185
  shape: {
186
186
  account: accountField(),
187
- name: z.string().describe("Immutable. Resource name of the space. Format: `spaces/{space}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. For example, `jQCFfuBOdN5"),
187
+ name: z.string().min(1).describe("Immutable. Resource name of the space. Format: `spaces/{space}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. For example, `jQCFfuBOdN5"),
188
188
  updateMask: z.string().describe("Optional. Field mask used to specify the fields to be updated in the space. If update_mask isn't provided(not set, set with empty paths, or only has \"\" as paths), it defaults to update all fields prov").optional(),
189
189
  body: coerceJson(z.record(z.string(), z.unknown())).describe("Space JSON request body. Top-level fields: activeConference, config, gatewaySipAccess, meetingCode, meetingUri, name, phoneAccess."),
190
190
  fields: z.string().optional().describe('Response field mask.'),
@@ -0,0 +1,2 @@
1
+ export declare const GENERATED_METHOD_TOOLS: Record<string, string>;
2
+ export declare const CURATED_METHOD_IDS: readonly string[];