Google Workspace (DWD)

Live

SERVICE ACCOUNT

PRODUCTIVITY

Productivity

Service Account productivity: your agent runs Gmail, Drive, Calendar, Chat, and Admin across a Google Workspace domain with domain-wide delegation.

  • Domain-wide delegation. one service account impersonates any user in the Workspace domain, no per-user OAuth dance.
  • Encrypted per-tenant vault. AES-256, resolved at request time, never in LLM context.
  • Scoped before every call. pre-call scope check, 90-day SIEM-exportable audit chain.
Google Workspace (DWD)
agent · Acme Q3
Run
Find unread mail for ada@acme.com about the Q4 board pack.
S
googledwd_fetch_mails
140ms
Workspace DWD agent
3 unread threads. Top: Board pack v3 from cfo@acme.com, 2 attachments, yesterday 4:12pm.
Sources: 3 threads, Gmail INBOX for ada@acme.com
googledwd
3 threads
18:29
Message Claude...

Tools your productivity agent reaches for on Google Workspace (DWD), scoped per user.

CALL ANY TOOL
Service Account productivity: Gmail, Drive, Calendar, Chat, Contacts, Forms, Sheets, Keep, Meet, Vault, and Admin across the domain.
googledwd_fetch_mails
Fetch Mails
Fetch Emails from Gmail · Read-only
Parameters
Name
Type
Required
Description
format
string
Optional
Format of the returned message. One of: `minimal`, `full`, `raw`, `metadata`. Default: `metadata`.
include_spam_trash
boolean
Optional
Whether to fetch emails from spam and trash folders. Default: `false`.
label_ids
array
Optional
Gmail label IDs to filter messages
max_results
integer
Optional
Maximum number of emails to fetch
page_token
string
Optional
Page token for pagination
query
string
Optional
Search query string using Gmail's search syntax (e.g., 'is:unread from:user@example.com')
googledwd_get_admin_group
Get Admin Group
googledwd_get_admin_user
Get Admin User
googledwd_get_alert
Get Alert
googledwd_get_alert_metadata
Get Alert Metadata
googledwd_get_attachment_by_id
Get Attachment By Id
googledwd_get_chat_space
Get Chat Space
googledwd_get_contacts
Get Contacts
googledwd_get_event_by_id
Get Event By Id
googledwd_get_file_metadata
Get File Metadata
googledwd_get_form
Get Form
googledwd_get_group_member
Get Group Member
googledwd_get_group_settings
Get Group Settings
googledwd_get_keep_note
Get Keep Note
googledwd_get_meet_space
Get Meet Space
googledwd_get_message_by_id
Get Message By Id
googledwd_get_response
Get Response
googledwd_get_send_as
Get Send As
googledwd_get_thread_by_id
Get Thread By Id
googledwd_get_userinfo
Get Userinfo
googledwd_get_vacation_settings
Get Vacation Settings
googledwd_get_values
Get Values
googledwd_get_vault_matter
Get Vault Matter
googledwd_list_admin_activities
List Admin Activities
googledwd_list_admin_groups
List Admin Groups
googledwd_list_admin_users
List Admin Users
googledwd_list_alert_feedback
List Alert Feedback
googledwd_list_alerts
List Alerts
googledwd_list_calendars
List Calendars
googledwd_list_chat_members
List Chat Members
googledwd_list_chat_messages
List Chat Messages
googledwd_list_chat_spaces
List Chat Spaces
googledwd_list_documents
List Documents
googledwd_list_drafts
List Drafts
googledwd_list_events
List Events
googledwd_list_filters
List Filters
googledwd_list_group_members
List Group Members
googledwd_list_keep_notes
List Keep Notes
googledwd_list_labels
List Labels
googledwd_list_org_units
List Org Units
googledwd_list_responses
List Responses
googledwd_list_task_lists
List Task Lists
googledwd_list_tasks
List Tasks
googledwd_list_threads
List Threads
googledwd_list_vault_matters
List Vault Matters
googledwd_read_document
Read Document
googledwd_read_presentation
Read Presentation
googledwd_read_spreadsheet
Read Spreadsheet
googledwd_search_content
Search Content
googledwd_search_files
Search Files
googledwd_search_people
Search People
googledwd_add_group_member
Add Group Member
googledwd_add_user_alias
Add User Alias
googledwd_append_values
Append Values
googledwd_complete_task
Complete Task
googledwd_copy_file
Copy File
googledwd_create_admin_group
Create Admin Group
googledwd_create_admin_user
Create Admin User
googledwd_create_chat_message
Create Chat Message
googledwd_create_contact
Create Contact
googledwd_create_document
Create Document
googledwd_create_draft
Create Draft
googledwd_create_event
Create Event
googledwd_create_filter
Create Filter
googledwd_create_folder
Create Folder
googledwd_create_form
Create Form
googledwd_create_meet_space
Create Meet Space
googledwd_create_presentation
Create Presentation
googledwd_create_spreadsheet
Create Spreadsheet
googledwd_create_task
Create Task
googledwd_create_task_list
Create Task List
googledwd_create_vault_matter
Create Vault Matter
googledwd_modify_message_labels
Modify Message Labels
googledwd_move_file
Move File
googledwd_query_drive_activity
Query Drive Activity
googledwd_send_message
Send Message
googledwd_share_file
Share File
googledwd_undelete_admin_user
Undelete Admin User
googledwd_update_admin_group
Update Admin Group
googledwd_update_admin_user
Update Admin User
googledwd_update_contact
Update Contact
googledwd_update_document
Update Document
googledwd_update_event
Update Event
googledwd_update_group_settings
Update Group Settings
googledwd_update_send_as
Update Send As
googledwd_update_task
Update Task
googledwd_update_vacation_settings
Update Vacation Settings
googledwd_update_values
Update Values
googledwd_clear_values
Clear Values
googledwd_delete_admin_group
Delete Admin Group
googledwd_delete_admin_user
Delete Admin User
googledwd_delete_contact
Delete Contact
googledwd_delete_event
Delete Event
googledwd_delete_file
Delete File
googledwd_delete_task
Delete Task
googledwd_end_meet_conference
End Meet Conference
googledwd_make_admin_user
Make Admin User
googledwd_remove_group_member
Remove Group Member
googledwd_signout_admin_user
Signout Admin User
googledwd_trash_message
Trash Message
Build your Agent
Same Scalekit listScopedTools pattern across every framework. Connection name googledwd.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);
const tools = await sk.tools.listScopedTools("user_123", { filter: { connectionNames: ["googledwd"], toolNames: [\"googledwd_fetch_mails\", \"googledwd_get_admin_group\", \"googledwd_get_admin_user\"] }, pageSize: 100 });
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);
const tools = await sk.tools.listScopedTools("user_123", { filter: { connectionNames: ["googledwd"], toolNames: [\"googledwd_fetch_mails\", \"googledwd_get_admin_group\", \"googledwd_get_admin_user\"] }, pageSize: 100 });
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);
const tools = await sk.tools.listScopedTools("user_123", { filter: { connectionNames: ["googledwd"], toolNames: [\"googledwd_fetch_mails\", \"googledwd_get_admin_group\", \"googledwd_get_admin_user\"] }, pageSize: 100 });
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);
const tools = await sk.tools.listScopedTools("user_123", { filter: { connectionNames: ["googledwd"], toolNames: [\"googledwd_fetch_mails\", \"googledwd_get_admin_group\", \"googledwd_get_admin_user\"] }, pageSize: 100 });
Try these prompts
Paste any prompt into your agent to start on Google Workspace with DWD.
Mail and calendar
Copy the prompt
Copied
List unread mail for the CFO about board materials this week.
Copy the prompt
Copied
Create a 30-minute sync tomorrow at 10am with the product leads.
Copy the prompt
Copied
Summarize the last three threads labeled board-prep.
Drive and docs
Copy the prompt
Copied
Find the latest Q4 board deck in Drive and share it with the exec group as viewers.
Copy the prompt
Copied
List files modified in the finance shared drive in the last 7 days.
Copy the prompt
Copied
Copy the template folder into the new project drive.
Admin and compliance
Copy the prompt
Copied
List open Vault matters and their holds.
Copy the prompt
Copied
Show admin activity for user suspension events this month.
Copy the prompt
Copied
Get vacation settings for support@ and confirm auto-reply is on.
SEE HOW AUTH WORKS
You register a service account once with domain-wide delegation. Scalekit vaults it, impersonates the target user on each call, and logs every action.
1
Authorize
Your user connects
Google Workspace (DWD)
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Google Workspace (DWD)
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Google Workspace (DWD)
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Google Workspace (DWD)
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
Pair Workspace DWD with other productivity and communication agents.
No items found.
Test other agents
Pair Workspace DWD with other productivity and communication agents.
No items found.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A single service account key in an agent runtime attributes every action to one bot identity. Scalekit maps each call to the impersonated Workspace user so mail sends, Drive shares, and admin changes stay attributable.
// shared SA key
audit → bot_acct

// scalekit DWD
audit → user_ada ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Google Workspace today. Others tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Google Workspace as the user or a shared key?
Domain-wide delegation uses your service account to impersonate a specific Workspace user on each call. Scalekit records that user on the audit trail so actions are not attributed to a shared bot.
Where is the Google service account material stored?
In Scalekit's AES-256 per-tenant vault. Credentials are resolved at request time, never placed in LLM context, and can be revoked from one dashboard.
Can I limit what the agent does in Workspace?
Yes. Pass toolNames in listScopedTools and rely on pre-API scope checks. Drop Admin, Vault, or write tools from the allow list when the agent only needs mail read.
What happens when a user or domain admin revokes access?
The next tool call fails closed for that mapping. Other users and tenants stay unaffected. The failure is logged for SIEM export.
How does DWD differ from the per-user Google OAuth connectors?
DWD is service-account impersonation for whole-domain automation without end-user consent screens. Per-user OAuth connectors fit consumer or consent-based flows. Pick DWD when your Workspace admin has granted the service account the needed scopes.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""googledwd"": {
""url"": ""https://mcp.scalekit.com/googledwd"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.googledwd]
url = ""https://mcp.scalekit.com/googledwd""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""googledwd"": {
""url"": ""https://mcp.scalekit.com/googledwd"",
""type"": ""http""
}
}
}