Skip to content

Connectors · Identity & security

Google Workspace Directory MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Google Workspace Directory and the rest of your systems. It gives your agent 128 Google Workspace Directory actions (46 reads, 54 writes and 28 that wait for a confirmation) and holds the Google Workspace Directory credential itself, so the agent never does. It paces Google Workspace Directory's limits and records every call. Connecting Google Workspace Directory needs your own Google Workspace Directory OAuth app and one admin sign-in.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "gws_directory.customers.get",  intent: "check which Google Workspace Directory account is connected"}# Get one customer · read · 1 upstream call
  • 128actionsin one signed file
  • 46readlook, never change
  • 54writecreate and update
  • 28wait for a yesdestructive, confirmed first

Set up

Connect Google Workspace Directory in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Google Workspace Directory.

    OAuth 2.0, authorization code with PKCE. You register your own OAuth app with Google Workspace Directory, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.

    Before the first sign-in, Google Workspace Directory needs an OAuth app of your own, registered in its developer portal. actionlake has no Google Workspace Directory app to lend you.

    • access_tokenAccess token from one sign-in with your own OAuth app
    • refresh_tokenRefresh token from the same sign-in; the access token is renewed from it
    • client_idGoogle OAuth client id
    • client_secretGoogle OAuth client secret
    account { op: "connections.requirements", service: "gws_directory" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "gws_directory.customers.get" }# get one customer · read · 1 upstream callcheck { action: "gws_directory.users.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Google Workspace Directory at a glance

Sign-in
OAuth 2.0, authorization code with PKCE. You register your own OAuth app with Google Workspace Directory, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.
You provide
access_tokenrefresh_tokenclient_idclient_secret
Limits we pace to
2,400 calls a minute, per connection
API covered
Google Workspace Directory API 1admin.googleapis.com/admin/directory/v1
Built from
Google Workspace Directory's documentation, read 15 September 2026admin.googleapis.com
Service file
Version 2.0.0, signed (Ed25519)
Cached reads
44 of 46 reads, for up to an hour; a write clears what it affects
Ready-made plans
8 in the store
Shared entities
5, so ask can line Google Workspace Directory up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Google Workspace Directory.

128 actions in 10 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 46readlook, never change
  • 54writecreate and update
  • 28destructivewait for a confirmation
  1. Directory

    31

    8 read · 16 write · 7 destructive

    List users · Create a user · Create a guest user · Get one user

  2. Resources

    19

    6 read · 10 write · 3 destructive

    List buildings · Create a building · List calendar resources · Create a calendar resource

  3. Groups

    16

    6 read · 7 write · 3 destructive

    List groups · Create a group · Get one group · Update a group

  4. Printing

    15

    5 read · 6 write · 4 destructive

    List printers · Create a printer · List supported printer models · Get one printer

  5. Devices

    14

    6 read · 6 write · 2 destructive

    List ChromeOS devices · Get one ChromeOS device · List mobile devices · Run an action on a ChromeOS device

  6. Access

    11

    5 read · 3 write · 3 destructive

    List admin roles · Create an admin role · Get one admin role · Update an admin role

  7. Security

    10

    5 read · 2 write · 3 destructive

    List application-specific passwords · List OAuth tokens · Get one application-specific password · Get one OAuth token

  8. Domains

    8

    4 read · 2 write · 2 destructive

    Create a domain alias · Create a domain · List domain aliases · List domains

2 more areas · 4 actions
  • Tenant 3
  • Notifications 1

Top actions

The Google Workspace Directory API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 87 of Google Workspace Directory's 95 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
gws_directory.users.listList usersRetrieves a paginated list of either deleted users or all users in a domain.readidentity.user.list474 connectors
gws_directory.groups.listList groupsRetrieves all groups of a domain or of a user given a userKey (paginated).readidentity.group.list262 connectors
gws_directory.users.createCreate a userCreates a user. Mutate calls immediately following user creation might sometimes fail as the user isn't fully created due to propagation delay in our…writeidentity.user.create262 connectors
gws_directory.groups.createCreate a groupCreates a group.writeidentity.group.create205 connectors
gws_directory.roles.listList admin rolesRetrieves a paginated list of all the roles in a domain.readidentity.role.list184 connectors
gws_directory.chromeosdevices.listList ChromeOS devicesRetrieves a paginated list of Chrome OS devices within an account.readdevice.endpoint.list65 connectors
gws_directory.users.deleteDelete a userDeletes a user.destructiveidentity.user.delete253 connectors
gws_directory.roles.createCreate an admin roleCreates a role.writeidentity.role.create105 connectors
gws_directory.members.listList group membersRetrieves a paginated list of all members in a group. This method times out after 60 minutes. For more information, see [Troubleshoot error…readidentity.group_member.list103 connectors
gws_directory.chromeosdevices.getGet one ChromeOS deviceRetrieves a Chrome OS device's properties.readdevice.endpoint.get57 connectors
gws_directory.asps.listList application-specific passwordsLists the ASPs issued by a user.readidentity.api_key.list96 connectors
gws_directory.members.patchUpdate a group memberUpdates the membership properties of a user in the specified group. This method supports [patch…writeidentity.group_member.update34 connectors

Try it

Prompts to paste into Claude.

Each one names the Google Workspace Directory actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Which Google Workspace Directory devices have not checked in for a week?

    callsgws_directory.chromeosdevices.list

  2. Plandestructive

    Lock down a compromised account in Google Workspace Directory. Ask me before anything is sent or changed.

    callsgws_directory.users.getgws_directory.tokens.listgws_directory.asps.listgws_directory.users.patchgws_directory.users.sign_out+2 more

  3. Plandestructive

    Offboard a departing user in Google Workspace Directory. Ask me before anything is sent or changed.

    callsgws_directory.users.getgws_directory.tokens.listgws_directory.asps.listgws_directory.users.patchgws_directory.users.sign_out+1 more

  4. Writewrite

    Create a user in Google Workspace Directory. Show me exactly what you will send before you save it.

    callsgws_directory.users.create

The plan store

Ready-made plans for Google Workspace Directory.

8 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

  1. Audit suspended accounts and their lingering access

    Use it when You need a report of suspended accounts that still hold OAuth tokens, app passwords or aliases.

    Effect
    read
    Steps
    3 · loops
    Install
    gws_directory-suspended-account-audit
  2. Review who holds admin roles

    Use it when You need to see which accounts hold which admin roles and what privileges those roles carry.

    Effect
    read
    Steps
    4 · loops
    Install
    gws_directory-admin-privilege-review
  3. Onboard a new hire

    Use it when A new employee is starting and needs a mailbox, an alias and their team group memberships created.

    A person decidesCreate primary email in name and add to group group key.

    Effect
    write
    Steps
    6
    Needs
    primary email, name, password, org unit path and group key
    Install
    gws_directory-onboard-new-hire
  4. Retire a batch of ChromeOS devices

    Use it when A set of Chromebooks in one org unit is being returned or recycled and must be deprovisioned together.

    A person decidesDeprovision number of items ChromeOS devices in org unit path with reason deprovision reason.

    Effect
    write
    Steps
    6 · loops
    Needs
    org unit path and deprovision reason
    Install
    gws_directory-retire-chromebook-fleet
  5. Add a domain and its alias to the tenant

    Use it when A newly acquired or rebranded domain has to be registered on the tenant along with an alias.

    A person decidesAdd domain domain name with alias alias domain to the tenant.

    Effect
    write
    Steps
    7
    Needs
    domain name and alias domain
    Install
    gws_directory-add-verified-domain
  6. Clean suspended members out of a group

    Use it when A group still lists suspended or departed accounts as members and needs pruning.

    A person decidesRemove suspended accounts from email, which currently has number of items members.

    Effect
    destructive
    Steps
    6 · loops
    Needs
    group key
    Install
    gws_directory-group-membership-cleanup
  7. Offboard a departing user

    Use it when An employee has left and their Google Workspace account must be suspended and its access revoked.

    A person decidesSuspend primary email, sign out all sessions and revoke number of items OAuth tokens.

    Effect
    destructive
    Steps
    7 · loops
    Needs
    user key
    Install
    gws_directory-offboard-departing-user
  8. Lock down a compromised account

    Use it when An account is suspected of being compromised and must be locked down and its sessions and credentials cut.

    A person decidesLock down primary email: reset password, sign out all sessions and drop number of items app passwords.

    Effect
    destructive
    Steps
    8 · loops
    Needs
    user key and new password
    Install
    gws_directory-reset-compromised-account
install a plan
account { op: "plans.install", slug: "gws_directory-suspended-account-audit" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Google Workspace Directory

Destructive actions wait for a yes.

28 Google Workspace Directory actions are destructive. These are all of them:

  • Delete a usergws_directory.users.delete
  • Delete a groupgws_directory.groups.delete
  • Delete an admin rolegws_directory.roles.delete
  • Delete a group membergws_directory.members.delete
  • Grant or revoke super-admingws_directory.users.make_admin
  • Delete a mobile devicegws_directory.mobiledevices.delete
  • Sign a user out everywheregws_directory.users.sign_out
  • Delete an org unitgws_directory.orgunits.delete
  • Delete a role assignmentgws_directory.role_assignments.delete
  • Create a role assignmentgws_directory.role_assignments.create
  • Delete a domaingws_directory.domains.delete
  • Delete a domain aliasgws_directory.domain_aliases.delete
  • Delete an application-specific passwordgws_directory.asps.delete
  • Delete an OAuth tokengws_directory.tokens.delete
  • Invalidate verification codesgws_directory.verification_codes.invalidate
  • Delete a user photogws_directory.user_photos.delete
  • Delete a custom schemagws_directory.schemas.delete
  • Delete a user aliasgws_directory.user_aliases.delete
  • Delete a group aliasgws_directory.group_aliases.delete
  • Stop a notification channelgws_directory.channels.stop
  • Issue a command to a ChromeOS devicegws_directory.chromeos_fleet.issue_command
  • Delete a buildinggws_directory.buildings.delete
  • Delete a calendar resourcegws_directory.calendars.delete
  • Delete a resource featuregws_directory.features.delete
  • Delete a printergws_directory.printers.delete
  • Delete many printers at oncegws_directory.printers.batch_delete
  • Delete a print servergws_directory.print_servers.delete
  • Delete many print servers at oncegws_directory.print_servers.batch_delete

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

dogws_directory.users.deleteconfirm_policy: human

Delete a user?

intent: the user asked me to delete a user

run suspended · waiting for a named person · key gws-directory-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "gws-directory-agent",  allowed_actions: ["gws_directory.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "gws_directory.users.delete", approver: "[email protected]" },    { match: "gws_directory.groups.delete", approver: "[email protected]" },    { match: "gws_directory.roles.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Google Workspace Directory only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Google Workspace Directory costs on actionlake.

Every Google Workspace Directory action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Google Workspace Directory refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 128 Google Workspace Directory actions
  • 128actions pageeach page of a long list is one call
  • 44reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Google Workspace Directory action.

128 actions by area: the id your agent calls, what it does, and its effect.

Directory31
  • gws_directory.orgunits.createCreate an org unitwrite
  • gws_directory.orgunits.deleteDelete an org unitdestructive
  • gws_directory.orgunits.getGet one org unitread
  • gws_directory.orgunits.listList org unitsread
  • gws_directory.orgunits.patchUpdate an org unitwrite
  • gws_directory.orgunits.updateReplace an org unitwrite
  • gws_directory.schemas.createCreate a custom schemawrite
  • gws_directory.schemas.deleteDelete a custom schemadestructive
  • gws_directory.schemas.getGet one custom schemaread
  • gws_directory.schemas.listList custom schemasread
  • gws_directory.schemas.patchUpdate a custom schemawrite
  • gws_directory.schemas.updateReplace a custom schemawrite
  • gws_directory.user_aliases.createCreate a user aliaswrite
  • gws_directory.user_aliases.deleteDelete a user aliasdestructive
  • gws_directory.user_aliases.listList user aliasesread
  • gws_directory.user_aliases.watchWatch user aliases for changeswrite
  • gws_directory.user_photos.deleteDelete a user photodestructive
  • gws_directory.user_photos.getGet one user photoread
  • gws_directory.user_photos.patchUpdate a user photowrite
  • gws_directory.user_photos.updateReplace a user photowrite
  • gws_directory.users.createCreate a userwrite
  • gws_directory.users.create_guestCreate a guest userwrite
  • gws_directory.users.deleteDelete a userdestructive
  • gws_directory.users.getGet one userread
  • gws_directory.users.listList usersread
  • gws_directory.users.make_adminGrant or revoke super-admindestructive
  • gws_directory.users.patchUpdate a userwrite
  • gws_directory.users.sign_outSign a user out everywheredestructive
  • gws_directory.users.undeleteRestore a deleted userwrite
  • gws_directory.users.updateReplace a userwrite
  • gws_directory.users.watchWatch users for changeswrite
Resources19
  • gws_directory.buildings.createCreate a buildingwrite
  • gws_directory.buildings.deleteDelete a buildingdestructive
  • gws_directory.buildings.getGet one buildingread
  • gws_directory.buildings.listList buildingsread
  • gws_directory.buildings.patchUpdate a buildingwrite
  • gws_directory.buildings.updateReplace a buildingwrite
  • gws_directory.calendars.createCreate a calendar resourcewrite
  • gws_directory.calendars.deleteDelete a calendar resourcedestructive
  • gws_directory.calendars.getGet one calendar resourceread
  • gws_directory.calendars.listList calendar resourcesread
  • gws_directory.calendars.patchUpdate a calendar resourcewrite
  • gws_directory.calendars.updateReplace a calendar resourcewrite
  • gws_directory.features.createCreate a resource featurewrite
  • gws_directory.features.deleteDelete a resource featuredestructive
  • gws_directory.features.getGet one resource featureread
  • gws_directory.features.listList resource featuresread
  • gws_directory.features.patchUpdate a resource featurewrite
  • gws_directory.features.renameRename a resource featurewrite
  • gws_directory.features.updateReplace a resource featurewrite
Groups16
  • gws_directory.group_aliases.createCreate a group aliaswrite
  • gws_directory.group_aliases.deleteDelete a group aliasdestructive
  • gws_directory.group_aliases.listList group aliasesread
  • gws_directory.groups.createCreate a groupwrite
  • gws_directory.groups.deleteDelete a groupdestructive
  • gws_directory.groups.getGet one groupread
  • gws_directory.groups.listList groupsread
  • gws_directory.groups.patchUpdate a groupwrite
  • gws_directory.groups.updateReplace a groupwrite
  • gws_directory.members.createCreate a group memberwrite
  • gws_directory.members.deleteDelete a group memberdestructive
  • gws_directory.members.getGet one group memberread
  • gws_directory.members.has_memberCheck group membershipread
  • gws_directory.members.listList group membersread
  • gws_directory.members.patchUpdate a group memberwrite
  • gws_directory.members.updateReplace a group memberwrite
Printing15
  • gws_directory.print_servers.batch_createCreate many print servers at oncewrite
  • gws_directory.print_servers.batch_deleteDelete many print servers at oncedestructive
  • gws_directory.print_servers.createCreate a print serverwrite
  • gws_directory.print_servers.deleteDelete a print serverdestructive
  • gws_directory.print_servers.getGet one print serverread
  • gws_directory.print_servers.listList print serversread
  • gws_directory.print_servers.patchUpdate a print serverwrite
  • gws_directory.printers.batch_createCreate many printers at oncewrite
  • gws_directory.printers.batch_deleteDelete many printers at oncedestructive
  • gws_directory.printers.createCreate a printerwrite
  • gws_directory.printers.deleteDelete a printerdestructive
  • gws_directory.printers.getGet one printerread
  • gws_directory.printers.listList printersread
  • gws_directory.printers.list_modelsList supported printer modelsread
  • gws_directory.printers.patchUpdate a printerwrite
Devices14
  • gws_directory.chromeos_commands.getGet one ChromeOS commandread
  • gws_directory.chromeos_fleet.batch_change_statusChange the status of many ChromeOS deviceswrite
  • gws_directory.chromeos_fleet.countCount ChromeOS devices by auto-update expiryread
  • gws_directory.chromeos_fleet.issue_commandIssue a command to a ChromeOS devicedestructive
  • gws_directory.chromeosdevices.actionRun an action on a ChromeOS devicewrite
  • gws_directory.chromeosdevices.getGet one ChromeOS deviceread
  • gws_directory.chromeosdevices.listList ChromeOS devicesread
  • gws_directory.chromeosdevices.move_to_orgunitMove ChromeOS devices to an org unitwrite
  • gws_directory.chromeosdevices.patchUpdate a ChromeOS devicewrite
  • gws_directory.chromeosdevices.updateReplace a ChromeOS devicewrite
  • gws_directory.mobiledevices.actionRun an action on a mobile devicewrite
  • gws_directory.mobiledevices.deleteDelete a mobile devicedestructive
  • gws_directory.mobiledevices.getGet one mobile deviceread
  • gws_directory.mobiledevices.listList mobile devicesread
Access11
  • gws_directory.privileges.listList privilegesread
  • gws_directory.role_assignments.createCreate a role assignmentdestructive
  • gws_directory.role_assignments.deleteDelete a role assignmentdestructive
  • gws_directory.role_assignments.getGet one role assignmentread
  • gws_directory.role_assignments.listList role assignmentsread
  • gws_directory.roles.createCreate an admin rolewrite
  • gws_directory.roles.deleteDelete an admin roledestructive
  • gws_directory.roles.getGet one admin roleread
  • gws_directory.roles.listList admin rolesread
  • gws_directory.roles.patchUpdate an admin rolewrite
  • gws_directory.roles.updateReplace an admin rolewrite
Security10
  • gws_directory.asps.deleteDelete an application-specific passworddestructive
  • gws_directory.asps.getGet one application-specific passwordread
  • gws_directory.asps.listList application-specific passwordsread
  • gws_directory.tokens.deleteDelete an OAuth tokendestructive
  • gws_directory.tokens.getGet one OAuth tokenread
  • gws_directory.tokens.listList OAuth tokensread
  • gws_directory.two_step_verification.turn_offTurn off two-step verificationwrite
  • gws_directory.verification_codes.generateGenerate verification codeswrite
  • gws_directory.verification_codes.invalidateInvalidate verification codesdestructive
  • gws_directory.verification_codes.listList verification codesread
Domains8
  • gws_directory.domain_aliases.createCreate a domain aliaswrite
  • gws_directory.domain_aliases.deleteDelete a domain aliasdestructive
  • gws_directory.domain_aliases.getGet one domain aliasread
  • gws_directory.domain_aliases.listList domain aliasesread
  • gws_directory.domains.createCreate a domainwrite
  • gws_directory.domains.deleteDelete a domaindestructive
  • gws_directory.domains.getGet one domainread
  • gws_directory.domains.listList domainsread
Tenant3
  • gws_directory.customers.getGet one customerread
  • gws_directory.customers.patchUpdate a customerwrite
  • gws_directory.customers.updateReplace a customerwrite
Notifications1
  • gws_directory.channels.stopStop a notification channeldestructive

Questions

The Google Workspace Directory MCP server, answered.

Is there a Google Workspace Directory MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 128 Google Workspace Directory actions across directory, resources, groups and printing, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Google Workspace Directory.

What do I need to connect Google Workspace Directory?

Your own Google Workspace Directory OAuth app, registered with Google Workspace Directory (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no Google Workspace Directory app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. The free call account { op: "connections.requirements", service: "gws_directory" } lists exactly what to paste.

Can an AI agent delete or change things in Google Workspace Directory?

Only if its key allows it, and only with an explicit confirmation. 28 Google Workspace Directory actions are destructive, including delete a user, delete a group and delete an admin role. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Google Workspace Directory API limit?

actionlake paces every call to the limits in the Google Workspace Directory service file: 2,400 calls a minute per connection. Repeated reads are answered from cache (44 Google Workspace Directory actions can be), which never reaches Google Workspace Directory.

What does a Google Workspace Directory action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (128 Google Workspace Directory actions page). Cache hits, searches, dry runs and calls Google Workspace Directory refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Google Workspace Directory API does it cover?

The Google Workspace Directory API 1 at admin.googleapis.com/admin/directory/v1. It is built from Google Workspace Directory's documentation as read on 15 September 2026. 128 actions in 10 areas, each one in the signed service file (version 2.0.0).

Does actionlake keep my Google Workspace Directory data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Google Workspace Directory credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Google Workspace Directory today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.