mcp-google-multi 6.0.0-alpha.2 → 6.0.0-alpha.21

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 (60) hide show
  1. package/README.md +5 -3
  2. package/dist/api-probe.d.ts +18 -0
  3. package/dist/api-probe.js +68 -0
  4. package/dist/arg-normalize.d.ts +19 -0
  5. package/dist/arg-normalize.js +90 -0
  6. package/dist/auth.js +15 -72
  7. package/dist/client.js +3 -1
  8. package/dist/discover.js +35 -14
  9. package/dist/discovery-client.d.ts +8 -1
  10. package/dist/discovery-client.js +67 -15
  11. package/dist/doctor.d.ts +12 -0
  12. package/dist/doctor.js +98 -15
  13. package/dist/http-transport.d.ts +3 -0
  14. package/dist/http-transport.js +2 -1
  15. package/dist/index.js +4 -1
  16. package/dist/oauth-consent.d.ts +25 -10
  17. package/dist/oauth-consent.js +85 -39
  18. package/dist/registry.d.ts +12 -0
  19. package/dist/registry.js +61 -3
  20. package/dist/scope-catalog.d.ts +1 -0
  21. package/dist/scope-catalog.js +17 -1
  22. package/dist/services.js +3 -1
  23. package/dist/tools/_errors.js +69 -5
  24. package/dist/tools/_local-files.d.ts +3 -0
  25. package/dist/tools/_local-files.js +34 -0
  26. package/dist/tools/account-wizard.d.ts +10 -0
  27. package/dist/tools/account-wizard.js +52 -19
  28. package/dist/tools/analytics.d.ts +18 -0
  29. package/dist/tools/analytics.js +279 -0
  30. package/dist/tools/drive.d.ts +2 -1
  31. package/dist/tools/drive.js +75 -33
  32. package/dist/tools/generated/_shared.d.ts +6 -0
  33. package/dist/tools/generated/_shared.js +11 -1
  34. package/dist/tools/generated/admin.js +160 -29
  35. package/dist/tools/generated/analytics.d.ts +2 -0
  36. package/dist/tools/generated/analytics.js +981 -0
  37. package/dist/tools/generated/chat.js +39 -12
  38. package/dist/tools/generated/classroom.js +56 -14
  39. package/dist/tools/generated/cloudidentity.js +18 -10
  40. package/dist/tools/generated/cloudsearch.js +4 -3
  41. package/dist/tools/generated/contacts.js +13 -4
  42. package/dist/tools/generated/drive.js +15 -6
  43. package/dist/tools/generated/drivelabels.js +33 -5
  44. package/dist/tools/generated/forms.js +1 -1
  45. package/dist/tools/generated/gmail.js +39 -12
  46. package/dist/tools/generated/index.js +2 -0
  47. package/dist/tools/generated/keep.js +3 -2
  48. package/dist/tools/generated/licensing.js +20 -4
  49. package/dist/tools/generated/meet.js +1 -1
  50. package/dist/tools/generated/reseller.js +8 -2
  51. package/dist/tools/generated/script.js +13 -3
  52. package/dist/tools/generated/searchconsole.js +4 -2
  53. package/dist/tools/generated/sheets.js +2 -1
  54. package/dist/tools/generated/tasks.js +7 -1
  55. package/dist/tools/generated/vault.js +18 -9
  56. package/dist/tools/generated/workspaceevents.js +3 -2
  57. package/dist/tools/gmail.js +3 -3
  58. package/dist/tools/google-api.d.ts +4 -1
  59. package/dist/tools/google-api.js +59 -15
  60. package/package.json +22 -17
@@ -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 { coerceBoolean, coerceJson } from '../_coerce.js';
3
+ import { coerceArray, coerceBoolean, coerceJson } from '../_coerce.js';
4
4
  import { accountField, registerGeneratedTool } from './_shared.js';
5
5
  export function registerAdminGeneratedTools(registry) {
6
6
  // Interned method scope sets (shared across tools; see scope-observability).
@@ -133,10 +133,13 @@ export function registerAdminGeneratedTools(registry) {
133
133
  method: { id: "admin.customer.devices.chromeos.batchChangeStatus", httpMethod: "POST", path: "admin/directory/v1/customer/{customerId}/devices/chromeos:batchChangeStatus", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customerId"], scopes: S_admin_directory_v1[1] },
134
134
  params: [{ "field": "customerId", "api": "customerId", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
135
135
  hasBody: true,
136
+ bodyParams: [{ "field": "changeChromeOsDeviceStatusAction", "api": "changeChromeOsDeviceStatusAction" }, { "field": "deprovisionReason", "api": "deprovisionReason" }, { "field": "deviceIds", "api": "deviceIds" }],
136
137
  shape: {
137
138
  account: accountField(),
138
139
  customerId: z.string().describe("Required. Immutable ID of the Google Workspace account."),
139
- body: coerceJson(z.record(z.string(), z.unknown())).describe("BatchChangeChromeOsDeviceStatusRequest JSON request body. Top-level fields: changeChromeOsDeviceStatusAction, deprovisionReason, deviceIds."),
140
+ changeChromeOsDeviceStatusAction: z.enum(["CHANGE_CHROME_OS_DEVICE_STATUS_ACTION_UNSPECIFIED", "CHANGE_CHROME_OS_DEVICE_STATUS_ACTION_DEPROVISION", "CHANGE_CHROME_OS_DEVICE_STATUS_ACTION_DISABLE", "CHANGE_CHROME_OS_DEVICE_STATUS_ACTION_REENABLE"]).describe("Required. The action to take on the ChromeOS device in order to change its status.").optional(),
141
+ deprovisionReason: z.enum(["DEPROVISION_REASON_UNSPECIFIED", "DEPROVISION_REASON_SAME_MODEL_REPLACEMENT", "DEPROVISION_REASON_UPGRADE", "DEPROVISION_REASON_DOMAIN_MOVE", "DEPROVISION_REASON_SERVICE_EXPIRATION", "DEPROVISION_REASON_OTHER", "DEPROVISION_REASON_DIFFERENT_MODEL_REPLACEMENT", "DEPROVISION_REASON_RETIRING_DEVICE", "DEPROVISION_REASON_UPGRADE_TRANSFER", "DEPROVISION_REASON_NOT_REQUIRED", "DEPROVISION_REASON_REPAIR_CENTER"]).describe("Optional. The reason behind a device deprovision. Must be provided if 'changeChromeOsDeviceStatusAction' is set to 'CHANGE_CHROME_OS_DEVICE_STATUS_ACTION_DEPROVISION'. Otherwise, omit this field.").optional(),
142
+ deviceIds: coerceArray(z.string()).describe("Required. List of the IDs of the ChromeOS devices to change. Maximum 50.").optional(),
140
143
  fields: z.string().optional().describe('Response field mask.'),
141
144
  },
142
145
  });
@@ -178,11 +181,13 @@ export function registerAdminGeneratedTools(registry) {
178
181
  method: { id: "admin.customer.devices.chromeos.issueCommand", httpMethod: "POST", path: "admin/directory/v1/customer/{customerId}/devices/chromeos/{deviceId}:issueCommand", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customerId", "deviceId"], scopes: S_admin_directory_v1[1] },
179
182
  params: [{ "field": "customerId", "api": "customerId", "location": "path" }, { "field": "deviceId", "api": "deviceId", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
180
183
  hasBody: true,
184
+ bodyParams: [{ "field": "commandType", "api": "commandType" }, { "field": "payload", "api": "payload" }],
181
185
  shape: {
182
186
  account: accountField(),
183
187
  customerId: z.string().describe("Immutable. ID of the Google Workspace account."),
184
188
  deviceId: z.string().describe("Immutable. ID of Chrome OS Device."),
185
- body: coerceJson(z.record(z.string(), z.unknown())).describe("DirectoryChromeosdevicesIssueCommandRequest JSON request body. Top-level fields: commandType, payload."),
189
+ commandType: z.enum(["COMMAND_TYPE_UNSPECIFIED", "REBOOT", "TAKE_A_SCREENSHOT", "SET_VOLUME", "WIPE_USERS", "REMOTE_POWERWASH", "DEVICE_START_CRD_SESSION", "CAPTURE_LOGS", "FETCH_CRD_AVAILABILITY_INFO", "FETCH_SUPPORT_PACKET"]).describe("The type of command.").optional(),
190
+ payload: z.string().describe("The payload for the command, provide it only if command supports it. The following commands support adding payload: * `SET_VOLUME`: Payload is a stringified JSON object in the form: { \"volume\": 50 }. ").optional(),
186
191
  fields: z.string().optional().describe('Response field mask.'),
187
192
  },
188
193
  });
@@ -207,10 +212,11 @@ export function registerAdminGeneratedTools(registry) {
207
212
  method: { id: "admin.customers.chrome.printers.batchDeletePrinters", httpMethod: "POST", path: "admin/directory/v1/{+parent}/chrome/printers:batchDeletePrinters", baseUrl: "https://admin.googleapis.com/", requiredParams: ["parent"], scopes: S_admin_directory_v1[3] },
208
213
  params: [{ "field": "parent", "api": "parent", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
209
214
  hasBody: true,
215
+ bodyParams: [{ "field": "printerIds", "api": "printerIds" }],
210
216
  shape: {
211
217
  account: accountField(),
212
218
  parent: z.string().describe("Required. The name of the customer. Format: customers/{customer_id}"),
213
- body: coerceJson(z.record(z.string(), z.unknown())).describe("BatchDeletePrintersRequest JSON request body. Top-level fields: printerIds."),
219
+ printerIds: coerceArray(z.string()).describe("A list of Printer.id that should be deleted. Max 100 at a time.").optional(),
214
220
  fields: z.string().optional().describe('Response field mask.'),
215
221
  },
216
222
  });
@@ -325,10 +331,11 @@ export function registerAdminGeneratedTools(registry) {
325
331
  method: { id: "admin.customers.chrome.printServers.batchDeletePrintServers", httpMethod: "POST", path: "admin/directory/v1/{+parent}/chrome/printServers:batchDeletePrintServers", baseUrl: "https://admin.googleapis.com/", requiredParams: ["parent"], scopes: S_admin_directory_v1[3] },
326
332
  params: [{ "field": "parent", "api": "parent", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
327
333
  hasBody: true,
334
+ bodyParams: [{ "field": "printServerIds", "api": "printServerIds" }],
328
335
  shape: {
329
336
  account: accountField(),
330
337
  parent: z.string().describe("Required. The [unique ID](https://developers.google.com/workspace/admin/directory/reference/rest/v1/customers) of the customer's Google Workspace account. Format: `customers/{customer.id}`"),
331
- body: coerceJson(z.record(z.string(), z.unknown())).describe("BatchDeletePrintServersRequest JSON request body. Top-level fields: printServerIds."),
338
+ printServerIds: coerceArray(z.string()).describe("A list of print server IDs that should be deleted (max `100` per batch).").optional(),
332
339
  fields: z.string().optional().describe('Response field mask.'),
333
340
  },
334
341
  });
@@ -339,10 +346,17 @@ export function registerAdminGeneratedTools(registry) {
339
346
  method: { id: "admin.customers.chrome.printServers.create", httpMethod: "POST", path: "admin/directory/v1/{+parent}/chrome/printServers", baseUrl: "https://admin.googleapis.com/", requiredParams: ["parent"], scopes: S_admin_directory_v1[3] },
340
347
  params: [{ "field": "parent", "api": "parent", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
341
348
  hasBody: true,
349
+ bodyParams: [{ "field": "createTime", "api": "createTime" }, { "field": "description", "api": "description" }, { "field": "displayName", "api": "displayName" }, { "field": "id", "api": "id" }, { "field": "name", "api": "name" }, { "field": "orgUnitId", "api": "orgUnitId" }, { "field": "uri", "api": "uri" }],
342
350
  shape: {
343
351
  account: accountField(),
344
352
  parent: z.string().describe("Required. The [unique ID](https://developers.google.com/workspace/admin/directory/reference/rest/v1/customers) of the customer's Google Workspace account. Format: `customers/{id}`"),
345
- body: coerceJson(z.record(z.string(), z.unknown())).describe("PrintServer JSON request body. Top-level fields: createTime, description, displayName, id, name, orgUnitId, uri."),
353
+ createTime: z.string().describe("Output only. Time when the print server was created.").optional(),
354
+ description: z.string().describe("Editable. Description of the print server (as shown in the Admin console).").optional(),
355
+ displayName: z.string().describe("Editable. Display name of the print server (as shown in the Admin console).").optional(),
356
+ id: z.string().describe("Immutable. ID of the print server. Leave empty when creating.").optional(),
357
+ name: z.string().describe("Identifier. Resource name of the print server. Leave empty when creating. Format: `customers/{customer.id}/printServers/{print_server.id}`").optional(),
358
+ orgUnitId: z.string().describe("ID of the organization unit (OU) that owns this print server. This value can only be set when the print server is initially created. If it's not populated, the print server is placed under the root OU").optional(),
359
+ uri: z.string().describe("Editable. Print server URI.").optional(),
346
360
  fields: z.string().optional().describe('Response field mask.'),
347
361
  },
348
362
  });
@@ -397,11 +411,18 @@ export function registerAdminGeneratedTools(registry) {
397
411
  method: { id: "admin.customers.chrome.printServers.patch", httpMethod: "PATCH", path: "admin/directory/v1/{+name}", baseUrl: "https://admin.googleapis.com/", requiredParams: ["name"], scopes: S_admin_directory_v1[3] },
398
412
  params: [{ "field": "name", "api": "name", "location": "path" }, { "field": "updateMask", "api": "updateMask", "location": "query" }, { "field": "fields", "api": "fields", "location": "query" }],
399
413
  hasBody: true,
414
+ bodyParams: [{ "field": "createTime", "api": "createTime" }, { "field": "description", "api": "description" }, { "field": "displayName", "api": "displayName" }, { "field": "id", "api": "id" }, { "field": "name_", "api": "name" }, { "field": "orgUnitId", "api": "orgUnitId" }, { "field": "uri", "api": "uri" }],
400
415
  shape: {
401
416
  account: accountField(),
402
417
  name: z.string().describe("Identifier. Resource name of the print server. Leave empty when creating. Format: `customers/{customer.id}/printServers/{print_server.id}`"),
403
418
  updateMask: z.string().describe("The list of fields to update. Some fields are read-only and cannot be updated. Values for unspecified fields are patched.").optional(),
404
- body: coerceJson(z.record(z.string(), z.unknown())).describe("PrintServer JSON request body. Top-level fields: createTime, description, displayName, id, name, orgUnitId, uri."),
419
+ createTime: z.string().describe("Output only. Time when the print server was created.").optional(),
420
+ description: z.string().describe("Editable. Description of the print server (as shown in the Admin console).").optional(),
421
+ displayName: z.string().describe("Editable. Display name of the print server (as shown in the Admin console).").optional(),
422
+ id: z.string().describe("Immutable. ID of the print server. Leave empty when creating.").optional(),
423
+ name_: z.string().describe("Identifier. Resource name of the print server. Leave empty when creating. Format: `customers/{customer.id}/printServers/{print_server.id}`").optional(),
424
+ orgUnitId: z.string().describe("ID of the organization unit (OU) that owns this print server. This value can only be set when the print server is initially created. If it's not populated, the print server is placed under the root OU").optional(),
425
+ uri: z.string().describe("Editable. Print server URI.").optional(),
405
426
  fields: z.string().optional().describe('Response field mask.'),
406
427
  },
407
428
  });
@@ -453,11 +474,13 @@ export function registerAdminGeneratedTools(registry) {
453
474
  method: { id: "directory.chromeosdevices.action", httpMethod: "POST", path: "admin/directory/v1/customer/{customerId}/devices/chromeos/{resourceId}/action", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customerId", "resourceId"], scopes: S_admin_directory_v1[1] },
454
475
  params: [{ "field": "customerId", "api": "customerId", "location": "path" }, { "field": "resourceId", "api": "resourceId", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
455
476
  hasBody: true,
477
+ bodyParams: [{ "field": "action", "api": "action" }, { "field": "deprovisionReason", "api": "deprovisionReason" }],
456
478
  shape: {
457
479
  account: accountField(),
458
480
  customerId: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's `customerId`. The `customerId` is also retu"),
459
481
  resourceId: z.string().describe("The unique ID of the device. The `resourceId`s are returned in the response from the [chromeosdevices.list](https://developers.google.com/workspace/admin/directory/v1/reference/chromeosdevices/list) m"),
460
- body: coerceJson(z.record(z.string(), z.unknown())).describe("ChromeOsDeviceAction JSON request body. Top-level fields: action, deprovisionReason."),
482
+ action: z.string().describe("Action to be taken on the Chrome OS device."),
483
+ deprovisionReason: z.string().describe("Only used when the action is `deprovision`. With the `deprovision` action, this field is required. *Note*: The deprovision reason is audited because it might have implications on licenses for perpetua").optional(),
461
484
  fields: z.string().optional().describe('Response field mask.'),
462
485
  },
463
486
  });
@@ -504,11 +527,12 @@ export function registerAdminGeneratedTools(registry) {
504
527
  method: { id: "directory.chromeosdevices.moveDevicesToOu", httpMethod: "POST", path: "admin/directory/v1/customer/{customerId}/devices/chromeos/moveDevicesToOu", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customerId", "orgUnitPath"], scopes: S_admin_directory_v1[1] },
505
528
  params: [{ "field": "customerId", "api": "customerId", "location": "path" }, { "field": "orgUnitPath", "api": "orgUnitPath", "location": "query" }, { "field": "fields", "api": "fields", "location": "query" }],
506
529
  hasBody: true,
530
+ bodyParams: [{ "field": "deviceIds", "api": "deviceIds" }],
507
531
  shape: {
508
532
  account: accountField(),
509
533
  customerId: z.string().describe("Immutable. ID of the Google Workspace account"),
510
534
  orgUnitPath: z.string().describe("Full path of the target organizational unit or its ID"),
511
- body: coerceJson(z.record(z.string(), z.unknown())).describe("ChromeOsMoveDevicesToOu JSON request body. Top-level fields: deviceIds."),
535
+ deviceIds: coerceArray(z.string()).describe("Chrome OS devices to be moved to OU"),
512
536
  fields: z.string().optional().describe('Response field mask.'),
513
537
  },
514
538
  });
@@ -620,10 +644,16 @@ export function registerAdminGeneratedTools(registry) {
620
644
  method: { id: "directory.domainAliases.insert", httpMethod: "POST", path: "admin/directory/v1/customer/{customer}/domainaliases", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customer"], scopes: S_admin_directory_v1[8] },
621
645
  params: [{ "field": "customer", "api": "customer", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
622
646
  hasBody: true,
647
+ bodyParams: [{ "field": "creationTime", "api": "creationTime" }, { "field": "domainAliasName", "api": "domainAliasName" }, { "field": "etag", "api": "etag" }, { "field": "kind", "api": "kind" }, { "field": "parentDomainName", "api": "parentDomainName" }, { "field": "verified", "api": "verified" }],
623
648
  shape: {
624
649
  account: accountField(),
625
650
  customer: z.string().describe("Immutable ID of the Google Workspace account."),
626
- body: coerceJson(z.record(z.string(), z.unknown())).describe("DomainAlias JSON request body. Top-level fields: creationTime, domainAliasName, etag, kind, parentDomainName, verified."),
651
+ creationTime: z.string().describe("The creation time of the domain alias. (Read-only).").optional(),
652
+ domainAliasName: z.string().describe("The domain alias name.").optional(),
653
+ etag: z.string().describe("ETag of the resource.").optional(),
654
+ kind: z.string().describe("Kind of resource this is.").optional(),
655
+ parentDomainName: z.string().describe("The parent domain name that the domain alias is associated with. This can either be a primary or secondary domain name within a customer.").optional(),
656
+ verified: coerceBoolean.describe("Indicates the verification state of a domain alias. (Read-only)").optional(),
627
657
  fields: z.string().optional().describe('Response field mask.'),
628
658
  },
629
659
  });
@@ -717,10 +747,15 @@ export function registerAdminGeneratedTools(registry) {
717
747
  method: { id: "directory.groups.aliases.insert", httpMethod: "POST", path: "admin/directory/v1/groups/{groupKey}/aliases", baseUrl: "https://admin.googleapis.com/", requiredParams: ["groupKey"], scopes: S_admin_directory_v1[10] },
718
748
  params: [{ "field": "groupKey", "api": "groupKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
719
749
  hasBody: true,
750
+ bodyParams: [{ "field": "alias", "api": "alias" }, { "field": "etag", "api": "etag" }, { "field": "id", "api": "id" }, { "field": "kind", "api": "kind" }, { "field": "primaryEmail", "api": "primaryEmail" }],
720
751
  shape: {
721
752
  account: accountField(),
722
753
  groupKey: z.string().describe("Identifies the group in the API request. The value can be the group's email address, group alias, or the unique group ID."),
723
- body: coerceJson(z.record(z.string(), z.unknown())).describe("Alias JSON request body. Top-level fields: alias, etag, id, kind, primaryEmail."),
754
+ alias: z.string().optional(),
755
+ etag: z.string().optional(),
756
+ id: z.string().optional(),
757
+ kind: z.string().optional(),
758
+ primaryEmail: z.string().optional(),
724
759
  fields: z.string().optional().describe('Response field mask.'),
725
760
  },
726
761
  });
@@ -853,10 +888,18 @@ export function registerAdminGeneratedTools(registry) {
853
888
  method: { id: "directory.members.insert", httpMethod: "POST", path: "admin/directory/v1/groups/{groupKey}/members", baseUrl: "https://admin.googleapis.com/", requiredParams: ["groupKey"], scopes: S_admin_directory_v1[12] },
854
889
  params: [{ "field": "groupKey", "api": "groupKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
855
890
  hasBody: true,
891
+ bodyParams: [{ "field": "delivery_settings", "api": "delivery_settings" }, { "field": "email", "api": "email" }, { "field": "etag", "api": "etag" }, { "field": "id", "api": "id" }, { "field": "kind", "api": "kind" }, { "field": "role", "api": "role" }, { "field": "status", "api": "status" }, { "field": "type", "api": "type" }],
856
892
  shape: {
857
893
  account: accountField(),
858
894
  groupKey: z.string().describe("Identifies the group in the API request. The value can be the group's email address, group alias, or the unique group ID."),
859
- body: coerceJson(z.record(z.string(), z.unknown())).describe("Member JSON request body. Top-level fields: delivery_settings, email, etag, id, kind, role, status, type."),
895
+ delivery_settings: z.string().describe("Defines mail delivery preferences of member. This field is only supported by `insert`, `update`, and `get` methods.").optional(),
896
+ email: z.string().describe("The member's email address. A member can be a user or another group. This property is required when adding a member to a group. The `email` must be unique and cannot be an alias of another group. If t").optional(),
897
+ etag: z.string().describe("ETag of the resource.").optional(),
898
+ id: z.string().describe("The unique ID of the group member. A member `id` can be used as a member request URI's `memberKey`.").optional(),
899
+ kind: z.string().describe("The type of the API resource. For Members resources, the value is `admin#directory#member`.").optional(),
900
+ role: z.string().describe("The member's role in a group. The API returns an error for cycles in group memberships. For example, if `group1` is a member of `group2`, `group2` cannot be a member of `group1`. For more information ").optional(),
901
+ status: z.string().describe("Status of member (Immutable)").optional(),
902
+ type: z.string().describe("The type of group member.").optional(),
860
903
  fields: z.string().optional().describe('Response field mask.'),
861
904
  },
862
905
  });
@@ -867,11 +910,19 @@ export function registerAdminGeneratedTools(registry) {
867
910
  method: { id: "directory.members.patch", httpMethod: "PATCH", path: "admin/directory/v1/groups/{groupKey}/members/{memberKey}", baseUrl: "https://admin.googleapis.com/", requiredParams: ["groupKey", "memberKey"], scopes: S_admin_directory_v1[12] },
868
911
  params: [{ "field": "groupKey", "api": "groupKey", "location": "path" }, { "field": "memberKey", "api": "memberKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
869
912
  hasBody: true,
913
+ bodyParams: [{ "field": "delivery_settings", "api": "delivery_settings" }, { "field": "email", "api": "email" }, { "field": "etag", "api": "etag" }, { "field": "id", "api": "id" }, { "field": "kind", "api": "kind" }, { "field": "role", "api": "role" }, { "field": "status", "api": "status" }, { "field": "type", "api": "type" }],
870
914
  shape: {
871
915
  account: accountField(),
872
916
  groupKey: z.string().describe("Identifies the group in the API request. The value can be the group's email address, group alias, or the unique group ID."),
873
917
  memberKey: z.string().describe("Identifies the group member in the API request. A group member can be a user or another group. The value can be the member's (group or user) primary email address, alias, or unique ID."),
874
- body: coerceJson(z.record(z.string(), z.unknown())).describe("Member JSON request body. Top-level fields: delivery_settings, email, etag, id, kind, role, status, type."),
918
+ delivery_settings: z.string().describe("Defines mail delivery preferences of member. This field is only supported by `insert`, `update`, and `get` methods.").optional(),
919
+ email: z.string().describe("The member's email address. A member can be a user or another group. This property is required when adding a member to a group. The `email` must be unique and cannot be an alias of another group. If t").optional(),
920
+ etag: z.string().describe("ETag of the resource.").optional(),
921
+ id: z.string().describe("The unique ID of the group member. A member `id` can be used as a member request URI's `memberKey`.").optional(),
922
+ kind: z.string().describe("The type of the API resource. For Members resources, the value is `admin#directory#member`.").optional(),
923
+ role: z.string().describe("The member's role in a group. The API returns an error for cycles in group memberships. For example, if `group1` is a member of `group2`, `group2` cannot be a member of `group1`. For more information ").optional(),
924
+ status: z.string().describe("Status of member (Immutable)").optional(),
925
+ type: z.string().describe("The type of group member.").optional(),
875
926
  fields: z.string().optional().describe('Response field mask.'),
876
927
  },
877
928
  });
@@ -882,11 +933,19 @@ export function registerAdminGeneratedTools(registry) {
882
933
  method: { id: "directory.members.update", httpMethod: "PUT", path: "admin/directory/v1/groups/{groupKey}/members/{memberKey}", baseUrl: "https://admin.googleapis.com/", requiredParams: ["groupKey", "memberKey"], scopes: S_admin_directory_v1[12] },
883
934
  params: [{ "field": "groupKey", "api": "groupKey", "location": "path" }, { "field": "memberKey", "api": "memberKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
884
935
  hasBody: true,
936
+ bodyParams: [{ "field": "delivery_settings", "api": "delivery_settings" }, { "field": "email", "api": "email" }, { "field": "etag", "api": "etag" }, { "field": "id", "api": "id" }, { "field": "kind", "api": "kind" }, { "field": "role", "api": "role" }, { "field": "status", "api": "status" }, { "field": "type", "api": "type" }],
885
937
  shape: {
886
938
  account: accountField(),
887
939
  groupKey: z.string().describe("Identifies the group in the API request. The value can be the group's email address, group alias, or the unique group ID."),
888
940
  memberKey: z.string().describe("Identifies the group member in the API request. A group member can be a user or another group. The value can be the member's (group or user) primary email address, alias, or unique ID."),
889
- body: coerceJson(z.record(z.string(), z.unknown())).describe("Member JSON request body. Top-level fields: delivery_settings, email, etag, id, kind, role, status, type."),
941
+ delivery_settings: z.string().describe("Defines mail delivery preferences of member. This field is only supported by `insert`, `update`, and `get` methods.").optional(),
942
+ email: z.string().describe("The member's email address. A member can be a user or another group. This property is required when adding a member to a group. The `email` must be unique and cannot be an alias of another group. If t").optional(),
943
+ etag: z.string().describe("ETag of the resource.").optional(),
944
+ id: z.string().describe("The unique ID of the group member. A member `id` can be used as a member request URI's `memberKey`.").optional(),
945
+ kind: z.string().describe("The type of the API resource. For Members resources, the value is `admin#directory#member`.").optional(),
946
+ role: z.string().describe("The member's role in a group. The API returns an error for cycles in group memberships. For example, if `group1` is a member of `group2`, `group2` cannot be a member of `group1`. For more information ").optional(),
947
+ status: z.string().describe("Status of member (Immutable)").optional(),
948
+ type: z.string().describe("The type of group member.").optional(),
890
949
  fields: z.string().optional().describe('Response field mask.'),
891
950
  },
892
951
  });
@@ -897,11 +956,12 @@ export function registerAdminGeneratedTools(registry) {
897
956
  method: { id: "directory.mobiledevices.action", httpMethod: "POST", path: "admin/directory/v1/customer/{customerId}/devices/mobile/{resourceId}/action", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customerId", "resourceId"], scopes: S_admin_directory_v1[14] },
898
957
  params: [{ "field": "customerId", "api": "customerId", "location": "path" }, { "field": "resourceId", "api": "resourceId", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
899
958
  hasBody: true,
959
+ bodyParams: [{ "field": "action", "api": "action" }],
900
960
  shape: {
901
961
  account: accountField(),
902
962
  customerId: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's `customerId`. The `customerId` is also retu"),
903
963
  resourceId: z.string().describe("The unique ID the API service uses to identify the mobile device."),
904
- body: coerceJson(z.record(z.string(), z.unknown())).describe("MobileDeviceAction JSON request body. Top-level fields: action."),
964
+ action: z.string().describe("The action to be performed on the device."),
905
965
  fields: z.string().optional().describe('Response field mask.'),
906
966
  },
907
967
  });
@@ -988,10 +1048,19 @@ export function registerAdminGeneratedTools(registry) {
988
1048
  method: { id: "directory.orgunits.insert", httpMethod: "POST", path: "admin/directory/v1/customer/{customerId}/orgunits", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customerId"], scopes: S_admin_directory_v1[17] },
989
1049
  params: [{ "field": "customerId", "api": "customerId", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
990
1050
  hasBody: true,
1051
+ bodyParams: [{ "field": "name", "api": "name" }, { "field": "blockInheritance", "api": "blockInheritance" }, { "field": "description", "api": "description" }, { "field": "etag", "api": "etag" }, { "field": "kind", "api": "kind" }, { "field": "orgUnitId", "api": "orgUnitId" }, { "field": "orgUnitPath", "api": "orgUnitPath" }, { "field": "parentOrgUnitId", "api": "parentOrgUnitId" }, { "field": "parentOrgUnitPath", "api": "parentOrgUnitPath" }],
991
1052
  shape: {
992
1053
  account: accountField(),
993
1054
  customerId: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's `customerId`. The `customerId` is also retu"),
994
- body: coerceJson(z.record(z.string(), z.unknown())).describe("OrgUnit JSON request body. Top-level fields: blockInheritance, description, etag, kind, name, orgUnitId, orgUnitPath, parentOrgUnitId, parentOrgUnitPath."),
1055
+ name: z.string().describe("The organizational unit's path name. For example, an organizational unit's name within the /corp/support/sales_support parent path is sales_support. Required."),
1056
+ blockInheritance: coerceBoolean.describe("This field is deprecated and setting its value has no effect.").optional(),
1057
+ description: z.string().describe("Description of the organizational unit.").optional(),
1058
+ etag: z.string().describe("ETag of the resource.").optional(),
1059
+ kind: z.string().describe("The type of the API resource. For Orgunits resources, the value is `admin#directory#orgUnit`.").optional(),
1060
+ orgUnitId: z.string().describe("The unique ID of the organizational unit.").optional(),
1061
+ orgUnitPath: z.string().describe("The full path to the organizational unit. The `orgUnitPath` is a derived property. When listed, it is derived from `parentOrgunitPath` and organizational unit's `name`. For example, for an organizatio").optional(),
1062
+ parentOrgUnitId: z.string().describe("The unique ID of the parent organizational unit. Required, unless `parentOrgUnitPath` is set.").optional(),
1063
+ parentOrgUnitPath: z.string().describe("The organizational unit's parent path. For example, /corp/sales is the parent path for /corp/sales/sales_support organizational unit. Required, unless `parentOrgUnitId` is set.").optional(),
995
1064
  fields: z.string().optional().describe('Response field mask.'),
996
1065
  },
997
1066
  });
@@ -1017,11 +1086,20 @@ export function registerAdminGeneratedTools(registry) {
1017
1086
  method: { id: "directory.orgunits.patch", httpMethod: "PATCH", path: "admin/directory/v1/customer/{customerId}/orgunits/{+orgUnitPath}", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customerId", "orgUnitPath"], scopes: S_admin_directory_v1[17] },
1018
1087
  params: [{ "field": "customerId", "api": "customerId", "location": "path" }, { "field": "orgUnitPath", "api": "orgUnitPath", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1019
1088
  hasBody: true,
1089
+ bodyParams: [{ "field": "blockInheritance", "api": "blockInheritance" }, { "field": "description", "api": "description" }, { "field": "etag", "api": "etag" }, { "field": "kind", "api": "kind" }, { "field": "name", "api": "name" }, { "field": "orgUnitId", "api": "orgUnitId" }, { "field": "orgUnitPath_", "api": "orgUnitPath" }, { "field": "parentOrgUnitId", "api": "parentOrgUnitId" }, { "field": "parentOrgUnitPath", "api": "parentOrgUnitPath" }],
1020
1090
  shape: {
1021
1091
  account: accountField(),
1022
1092
  customerId: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's `customerId`. The `customerId` is also retu"),
1023
1093
  orgUnitPath: z.string().describe("The full path of the organizational unit (minus the leading `/`) or its unique ID."),
1024
- body: coerceJson(z.record(z.string(), z.unknown())).describe("OrgUnit JSON request body. Top-level fields: blockInheritance, description, etag, kind, name, orgUnitId, orgUnitPath, parentOrgUnitId, parentOrgUnitPath."),
1094
+ blockInheritance: coerceBoolean.describe("This field is deprecated and setting its value has no effect.").optional(),
1095
+ description: z.string().describe("Description of the organizational unit.").optional(),
1096
+ etag: z.string().describe("ETag of the resource.").optional(),
1097
+ kind: z.string().describe("The type of the API resource. For Orgunits resources, the value is `admin#directory#orgUnit`.").optional(),
1098
+ name: z.string().describe("The organizational unit's path name. For example, an organizational unit's name within the /corp/support/sales_support parent path is sales_support. Required.").optional(),
1099
+ orgUnitId: z.string().describe("The unique ID of the organizational unit.").optional(),
1100
+ orgUnitPath_: z.string().describe("The full path to the organizational unit. The `orgUnitPath` is a derived property. When listed, it is derived from `parentOrgunitPath` and organizational unit's `name`. For example, for an organizatio").optional(),
1101
+ parentOrgUnitId: z.string().describe("The unique ID of the parent organizational unit. Required, unless `parentOrgUnitPath` is set.").optional(),
1102
+ parentOrgUnitPath: z.string().describe("The organizational unit's parent path. For example, /corp/sales is the parent path for /corp/sales/sales_support organizational unit. Required, unless `parentOrgUnitId` is set.").optional(),
1025
1103
  fields: z.string().optional().describe('Response field mask.'),
1026
1104
  },
1027
1105
  });
@@ -1032,11 +1110,20 @@ export function registerAdminGeneratedTools(registry) {
1032
1110
  method: { id: "directory.orgunits.update", httpMethod: "PUT", path: "admin/directory/v1/customer/{customerId}/orgunits/{+orgUnitPath}", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customerId", "orgUnitPath"], scopes: S_admin_directory_v1[17] },
1033
1111
  params: [{ "field": "customerId", "api": "customerId", "location": "path" }, { "field": "orgUnitPath", "api": "orgUnitPath", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1034
1112
  hasBody: true,
1113
+ bodyParams: [{ "field": "blockInheritance", "api": "blockInheritance" }, { "field": "description", "api": "description" }, { "field": "etag", "api": "etag" }, { "field": "kind", "api": "kind" }, { "field": "name", "api": "name" }, { "field": "orgUnitId", "api": "orgUnitId" }, { "field": "orgUnitPath_", "api": "orgUnitPath" }, { "field": "parentOrgUnitId", "api": "parentOrgUnitId" }, { "field": "parentOrgUnitPath", "api": "parentOrgUnitPath" }],
1035
1114
  shape: {
1036
1115
  account: accountField(),
1037
1116
  customerId: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's `customerId`. The `customerId` is also retu"),
1038
1117
  orgUnitPath: z.string().describe("The full path of the organizational unit (minus the leading `/`) or its unique ID."),
1039
- body: coerceJson(z.record(z.string(), z.unknown())).describe("OrgUnit JSON request body. Top-level fields: blockInheritance, description, etag, kind, name, orgUnitId, orgUnitPath, parentOrgUnitId, parentOrgUnitPath."),
1118
+ blockInheritance: coerceBoolean.describe("This field is deprecated and setting its value has no effect.").optional(),
1119
+ description: z.string().describe("Description of the organizational unit.").optional(),
1120
+ etag: z.string().describe("ETag of the resource.").optional(),
1121
+ kind: z.string().describe("The type of the API resource. For Orgunits resources, the value is `admin#directory#orgUnit`.").optional(),
1122
+ name: z.string().describe("The organizational unit's path name. For example, an organizational unit's name within the /corp/support/sales_support parent path is sales_support. Required.").optional(),
1123
+ orgUnitId: z.string().describe("The unique ID of the organizational unit.").optional(),
1124
+ orgUnitPath_: z.string().describe("The full path to the organizational unit. The `orgUnitPath` is a derived property. When listed, it is derived from `parentOrgunitPath` and organizational unit's `name`. For example, for an organizatio").optional(),
1125
+ parentOrgUnitId: z.string().describe("The unique ID of the parent organizational unit. Required, unless `parentOrgUnitPath` is set.").optional(),
1126
+ parentOrgUnitPath: z.string().describe("The organizational unit's parent path. For example, /corp/sales is the parent path for /corp/sales/sales_support organizational unit. Required, unless `parentOrgUnitId` is set.").optional(),
1040
1127
  fields: z.string().optional().describe('Response field mask.'),
1041
1128
  },
1042
1129
  });
@@ -1267,10 +1354,13 @@ export function registerAdminGeneratedTools(registry) {
1267
1354
  method: { id: "directory.resources.features.insert", httpMethod: "POST", path: "admin/directory/v1/customer/{customer}/resources/features", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customer"], scopes: S_admin_directory_v1[20] },
1268
1355
  params: [{ "field": "customer", "api": "customer", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1269
1356
  hasBody: true,
1357
+ bodyParams: [{ "field": "name", "api": "name" }, { "field": "etags", "api": "etags" }, { "field": "kind", "api": "kind" }],
1270
1358
  shape: {
1271
1359
  account: accountField(),
1272
1360
  customer: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's customer ID."),
1273
- body: coerceJson(z.record(z.string(), z.unknown())).describe("Feature JSON request body. Top-level fields: etags, kind, name."),
1361
+ name: z.string().describe("The name of the feature."),
1362
+ etags: z.string().describe("ETag of the resource.").optional(),
1363
+ kind: z.string().describe("Kind of resource this is.").optional(),
1274
1364
  fields: z.string().optional().describe('Response field mask.'),
1275
1365
  },
1276
1366
  });
@@ -1296,11 +1386,14 @@ export function registerAdminGeneratedTools(registry) {
1296
1386
  method: { id: "directory.resources.features.patch", httpMethod: "PATCH", path: "admin/directory/v1/customer/{customer}/resources/features/{featureKey}", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customer", "featureKey"], scopes: S_admin_directory_v1[20] },
1297
1387
  params: [{ "field": "customer", "api": "customer", "location": "path" }, { "field": "featureKey", "api": "featureKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1298
1388
  hasBody: true,
1389
+ bodyParams: [{ "field": "etags", "api": "etags" }, { "field": "kind", "api": "kind" }, { "field": "name", "api": "name" }],
1299
1390
  shape: {
1300
1391
  account: accountField(),
1301
1392
  customer: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's customer ID."),
1302
1393
  featureKey: z.string().describe("The unique ID of the feature to update."),
1303
- body: coerceJson(z.record(z.string(), z.unknown())).describe("Feature JSON request body. Top-level fields: etags, kind, name."),
1394
+ etags: z.string().describe("ETag of the resource.").optional(),
1395
+ kind: z.string().describe("Kind of resource this is.").optional(),
1396
+ name: z.string().describe("The name of the feature.").optional(),
1304
1397
  fields: z.string().optional().describe('Response field mask.'),
1305
1398
  },
1306
1399
  });
@@ -1311,11 +1404,12 @@ export function registerAdminGeneratedTools(registry) {
1311
1404
  method: { id: "directory.resources.features.rename", httpMethod: "POST", path: "admin/directory/v1/customer/{customer}/resources/features/{oldName}/rename", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customer", "oldName"], scopes: S_admin_directory_v1[20] },
1312
1405
  params: [{ "field": "customer", "api": "customer", "location": "path" }, { "field": "oldName", "api": "oldName", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1313
1406
  hasBody: true,
1407
+ bodyParams: [{ "field": "newName", "api": "newName" }],
1314
1408
  shape: {
1315
1409
  account: accountField(),
1316
1410
  customer: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's customer ID."),
1317
1411
  oldName: z.string().describe("The unique ID of the feature to rename."),
1318
- body: coerceJson(z.record(z.string(), z.unknown())).describe("FeatureRename JSON request body. Top-level fields: newName."),
1412
+ newName: z.string().describe("New name of the feature."),
1319
1413
  fields: z.string().optional().describe('Response field mask.'),
1320
1414
  },
1321
1415
  });
@@ -1326,11 +1420,14 @@ export function registerAdminGeneratedTools(registry) {
1326
1420
  method: { id: "directory.resources.features.update", httpMethod: "PUT", path: "admin/directory/v1/customer/{customer}/resources/features/{featureKey}", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customer", "featureKey"], scopes: S_admin_directory_v1[20] },
1327
1421
  params: [{ "field": "customer", "api": "customer", "location": "path" }, { "field": "featureKey", "api": "featureKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1328
1422
  hasBody: true,
1423
+ bodyParams: [{ "field": "etags", "api": "etags" }, { "field": "kind", "api": "kind" }, { "field": "name", "api": "name" }],
1329
1424
  shape: {
1330
1425
  account: accountField(),
1331
1426
  customer: z.string().describe("The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account's customer ID."),
1332
1427
  featureKey: z.string().describe("The unique ID of the feature to update."),
1333
- body: coerceJson(z.record(z.string(), z.unknown())).describe("Feature JSON request body. Top-level fields: etags, kind, name."),
1428
+ etags: z.string().describe("ETag of the resource.").optional(),
1429
+ kind: z.string().describe("Kind of resource this is.").optional(),
1430
+ name: z.string().describe("The name of the feature.").optional(),
1334
1431
  fields: z.string().optional().describe('Response field mask.'),
1335
1432
  },
1336
1433
  });
@@ -1369,10 +1466,19 @@ export function registerAdminGeneratedTools(registry) {
1369
1466
  method: { id: "directory.roleAssignments.insert", httpMethod: "POST", path: "admin/directory/v1/customer/{customer}/roleassignments", baseUrl: "https://admin.googleapis.com/", requiredParams: ["customer"], scopes: S_admin_directory_v1[22] },
1370
1467
  params: [{ "field": "customer", "api": "customer", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1371
1468
  hasBody: true,
1469
+ bodyParams: [{ "field": "assignedTo", "api": "assignedTo" }, { "field": "assigneeType", "api": "assigneeType" }, { "field": "condition", "api": "condition" }, { "field": "etag", "api": "etag" }, { "field": "kind", "api": "kind" }, { "field": "orgUnitId", "api": "orgUnitId" }, { "field": "roleAssignmentId", "api": "roleAssignmentId" }, { "field": "roleId", "api": "roleId" }, { "field": "scopeType", "api": "scopeType" }],
1372
1470
  shape: {
1373
1471
  account: accountField(),
1374
1472
  customer: z.string().describe("Immutable ID of the Google Workspace account."),
1375
- body: coerceJson(z.record(z.string(), z.unknown())).describe("RoleAssignment JSON request body. Top-level fields: assignedTo, assigneeType, condition, etag, kind, orgUnitId, roleAssignmentId, roleId, scopeType."),
1473
+ assignedTo: z.string().describe("The unique ID of the entity this role is assigned to—either the `user_id` of a user, the `group_id` of a group, or the `uniqueId` of a service account as defined in [Identity and Access Management (IA").optional(),
1474
+ assigneeType: z.enum(["user", "group"]).describe("Output only. The type of the assignee (`USER` or `GROUP`).").optional(),
1475
+ condition: z.string().describe("Optional. The condition associated with this role assignment. Note: Feature is available to Enterprise Standard, Enterprise Plus, Google Workspace for Education Plus and Cloud Identity Premium custome").optional(),
1476
+ etag: z.string().describe("ETag of the resource.").optional(),
1477
+ kind: z.string().describe("The type of the API resource. This is always `admin#directory#roleAssignment`.").optional(),
1478
+ orgUnitId: z.string().describe("If the role is restricted to an organization unit, this contains the ID for the organization unit the exercise of this role is restricted to.").optional(),
1479
+ roleAssignmentId: z.string().describe("ID of this roleAssignment.").optional(),
1480
+ roleId: z.string().describe("The ID of the role that is assigned.").optional(),
1481
+ scopeType: z.string().describe("The scope in which this role is assigned.").optional(),
1376
1482
  fields: z.string().optional().describe('Response field mask.'),
1377
1483
  },
1378
1484
  });
@@ -1641,10 +1747,15 @@ export function registerAdminGeneratedTools(registry) {
1641
1747
  method: { id: "directory.users.aliases.insert", httpMethod: "POST", path: "admin/directory/v1/users/{userKey}/aliases", baseUrl: "https://admin.googleapis.com/", requiredParams: ["userKey"], scopes: S_admin_directory_v1[25] },
1642
1748
  params: [{ "field": "userKey", "api": "userKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1643
1749
  hasBody: true,
1750
+ bodyParams: [{ "field": "alias", "api": "alias" }, { "field": "etag", "api": "etag" }, { "field": "id", "api": "id" }, { "field": "kind", "api": "kind" }, { "field": "primaryEmail", "api": "primaryEmail" }],
1644
1751
  shape: {
1645
1752
  account: accountField(),
1646
1753
  userKey: z.string().describe("Identifies the user in the API request. The value can be the user's primary email address, alias email address, or unique user ID."),
1647
- body: coerceJson(z.record(z.string(), z.unknown())).describe("Alias JSON request body. Top-level fields: alias, etag, id, kind, primaryEmail."),
1754
+ alias: z.string().optional(),
1755
+ etag: z.string().optional(),
1756
+ id: z.string().optional(),
1757
+ kind: z.string().optional(),
1758
+ primaryEmail: z.string().optional(),
1648
1759
  fields: z.string().optional().describe('Response field mask.'),
1649
1760
  },
1650
1761
  });
@@ -1684,9 +1795,11 @@ export function registerAdminGeneratedTools(registry) {
1684
1795
  method: { id: "directory.users.createGuest", httpMethod: "POST", path: "admin/directory/v1/users:createGuest", baseUrl: "https://admin.googleapis.com/", requiredParams: [], scopes: S_admin_directory_v1[27] },
1685
1796
  params: [{ "field": "fields", "api": "fields", "location": "query" }],
1686
1797
  hasBody: true,
1798
+ bodyParams: [{ "field": "customer", "api": "customer" }, { "field": "primaryGuestEmail", "api": "primaryGuestEmail" }],
1687
1799
  shape: {
1688
1800
  account: accountField(),
1689
- body: coerceJson(z.record(z.string(), z.unknown())).describe("DirectoryUsersCreateGuestRequest JSON request body. Top-level fields: customer, primaryGuestEmail."),
1801
+ customer: z.string().describe("Optional. Immutable ID of the Google Workspace account. Only required when request is created by a service account. Defaults to the authenticated user's customer ID otherwise.").optional(),
1802
+ primaryGuestEmail: z.string().describe("Required. External email of the guest user being created.").optional(),
1690
1803
  fields: z.string().optional().describe('Response field mask.'),
1691
1804
  },
1692
1805
  });
@@ -1724,10 +1837,11 @@ export function registerAdminGeneratedTools(registry) {
1724
1837
  method: { id: "directory.users.makeAdmin", httpMethod: "POST", path: "admin/directory/v1/users/{userKey}/makeAdmin", baseUrl: "https://admin.googleapis.com/", requiredParams: ["userKey"], scopes: S_admin_directory_v1[27] },
1725
1838
  params: [{ "field": "userKey", "api": "userKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1726
1839
  hasBody: true,
1840
+ bodyParams: [{ "field": "status", "api": "status" }],
1727
1841
  shape: {
1728
1842
  account: accountField(),
1729
1843
  userKey: z.string().describe("Identifies the user in the API request. The value can be the user's primary email address, alias email address, or unique user ID."),
1730
- body: coerceJson(z.record(z.string(), z.unknown())).describe("UserMakeAdmin JSON request body. Top-level fields: status."),
1844
+ status: coerceBoolean.describe("Indicates the administrator status of the user."),
1731
1845
  fields: z.string().optional().describe('Response field mask.'),
1732
1846
  },
1733
1847
  });
@@ -1764,10 +1878,18 @@ export function registerAdminGeneratedTools(registry) {
1764
1878
  method: { id: "directory.users.photos.patch", httpMethod: "PATCH", path: "admin/directory/v1/users/{userKey}/photos/thumbnail", baseUrl: "https://admin.googleapis.com/", requiredParams: ["userKey"], scopes: S_admin_directory_v1[27] },
1765
1879
  params: [{ "field": "userKey", "api": "userKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1766
1880
  hasBody: true,
1881
+ bodyParams: [{ "field": "etag", "api": "etag" }, { "field": "height", "api": "height" }, { "field": "id", "api": "id" }, { "field": "kind", "api": "kind" }, { "field": "mimeType", "api": "mimeType" }, { "field": "photoData", "api": "photoData" }, { "field": "primaryEmail", "api": "primaryEmail" }, { "field": "width", "api": "width" }],
1767
1882
  shape: {
1768
1883
  account: accountField(),
1769
1884
  userKey: z.string().describe("Identifies the user in the API request. The value can be the user's primary email address, alias email address, or unique user ID."),
1770
- body: coerceJson(z.record(z.string(), z.unknown())).describe("UserPhoto JSON request body. Top-level fields: etag, height, id, kind, mimeType, photoData, primaryEmail, width."),
1885
+ etag: z.string().describe("ETag of the resource.").optional(),
1886
+ height: z.number().describe("Height of the photo in pixels.").optional(),
1887
+ id: z.string().describe("The ID the API uses to uniquely identify the user.").optional(),
1888
+ kind: z.string().describe("The type of the API resource. For Photo resources, this is `admin#directory#user#photo`.").optional(),
1889
+ mimeType: z.string().describe("The MIME type of the photo. Allowed values are `JPEG`, `PNG`, `GIF`, `BMP`, `TIFF`, and web-safe base64 encoding.").optional(),
1890
+ photoData: z.string().describe("The user photo's upload data in [web-safe Base64](https://en.wikipedia.org/wiki/Base64#URL_applications) format in bytes. This means: * The slash (/) character is replaced with the underscore (_) char").optional(),
1891
+ primaryEmail: z.string().describe("The user's primary email address.").optional(),
1892
+ width: z.number().describe("Width of the photo in pixels.").optional(),
1771
1893
  fields: z.string().optional().describe('Response field mask.'),
1772
1894
  },
1773
1895
  });
@@ -1778,10 +1900,18 @@ export function registerAdminGeneratedTools(registry) {
1778
1900
  method: { id: "directory.users.photos.update", httpMethod: "PUT", path: "admin/directory/v1/users/{userKey}/photos/thumbnail", baseUrl: "https://admin.googleapis.com/", requiredParams: ["userKey"], scopes: S_admin_directory_v1[27] },
1779
1901
  params: [{ "field": "userKey", "api": "userKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1780
1902
  hasBody: true,
1903
+ bodyParams: [{ "field": "photoData", "api": "photoData" }, { "field": "etag", "api": "etag" }, { "field": "height", "api": "height" }, { "field": "id", "api": "id" }, { "field": "kind", "api": "kind" }, { "field": "mimeType", "api": "mimeType" }, { "field": "primaryEmail", "api": "primaryEmail" }, { "field": "width", "api": "width" }],
1781
1904
  shape: {
1782
1905
  account: accountField(),
1783
1906
  userKey: z.string().describe("Identifies the user in the API request. The value can be the user's primary email address, alias email address, or unique user ID."),
1784
- body: coerceJson(z.record(z.string(), z.unknown())).describe("UserPhoto JSON request body. Top-level fields: etag, height, id, kind, mimeType, photoData, primaryEmail, width."),
1907
+ photoData: z.string().describe("The user photo's upload data in [web-safe Base64](https://en.wikipedia.org/wiki/Base64#URL_applications) format in bytes. This means: * The slash (/) character is replaced with the underscore (_) char"),
1908
+ etag: z.string().describe("ETag of the resource.").optional(),
1909
+ height: z.number().describe("Height of the photo in pixels.").optional(),
1910
+ id: z.string().describe("The ID the API uses to uniquely identify the user.").optional(),
1911
+ kind: z.string().describe("The type of the API resource. For Photo resources, this is `admin#directory#user#photo`.").optional(),
1912
+ mimeType: z.string().describe("The MIME type of the photo. Allowed values are `JPEG`, `PNG`, `GIF`, `BMP`, `TIFF`, and web-safe base64 encoding.").optional(),
1913
+ primaryEmail: z.string().describe("The user's primary email address.").optional(),
1914
+ width: z.number().describe("Width of the photo in pixels.").optional(),
1785
1915
  fields: z.string().optional().describe('Response field mask.'),
1786
1916
  },
1787
1917
  });
@@ -1805,10 +1935,11 @@ export function registerAdminGeneratedTools(registry) {
1805
1935
  method: { id: "directory.users.undelete", httpMethod: "POST", path: "admin/directory/v1/users/{userKey}/undelete", baseUrl: "https://admin.googleapis.com/", requiredParams: ["userKey"], scopes: S_admin_directory_v1[27] },
1806
1936
  params: [{ "field": "userKey", "api": "userKey", "location": "path" }, { "field": "fields", "api": "fields", "location": "query" }],
1807
1937
  hasBody: true,
1938
+ bodyParams: [{ "field": "orgUnitPath", "api": "orgUnitPath" }],
1808
1939
  shape: {
1809
1940
  account: accountField(),
1810
1941
  userKey: z.string().describe("The immutable id of the user"),
1811
- body: coerceJson(z.record(z.string(), z.unknown())).describe("UserUndelete JSON request body. Top-level fields: orgUnitPath."),
1942
+ orgUnitPath: z.string().describe("OrgUnit of User").optional(),
1812
1943
  fields: z.string().optional().describe('Response field mask.'),
1813
1944
  },
1814
1945
  });
@@ -0,0 +1,2 @@
1
+ import type { ToolRegistry } from '../../registry.js';
2
+ export declare function registerAnalyticsGeneratedTools(registry: ToolRegistry): void;