tinyhat-google-workspace
Connect, select, change permissions for, disconnect, or use one of this Tinyhat Computer's Google Workspace accounts through Tinyhat's managed gws bridge.
Skill by tinyhat-ai
Chalk Labs
Need help deploying tinyhat-google-workspace?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/tinyhat-ai-tinyhat-google-workspace
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/tinyhat-google-workspace
What's inside
- Skill name
tinyhat-google-workspace- Description
- Connect, select, change permissions for, disconnect, or use one of this Tinyhat Computer's Google Workspace accounts through Tinyhat's managed gws bridge. Use for "Connect my Google Workspace", personal or work Google accounts, Google sign-in, Gmail, Calendar, Drive, sending email, or other Google Workspace requests.
- License
- MIT
- Instructions
- 247 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Tinyhat Google Workspace
Use `tinyhat_google_workspace` for account and permission lifecycle. Use
`tinyhat_google_workspace_app` for Google API operations.
## Choose the account
Call `{"action": "status"}` when the intended account is not already known.
Status returns safe account metadata, including an opaque `account_id` for each
connected Google account. Match the user's wording to the returned email; never
guess between multiple accounts. If the user did not identify one, show the
safe account list and ask which account to use.
Pass the selected `account_id` to permission changes, disconnect, and every gws
operation when multiple accounts are connected. Do not expose or ask for raw
tokens.
## Connect and change permissions
If the current `tinyhat_google_workspace` schema is not already visible, call
`tool_describe` before the first invocation. Never discover the schema by
probing with `{"action": "connect"}`: that creates a real identity-only OAuth
attempt. For a message that names a Gmail action, make one correctly parameterized
call with the matching preset or exact Custom scopes.
`{"action": "connect"}` adds another account with identity only: `openid`,
`email`, and `profile`. Phrases such as "add my personal account" or "connect my
work Google account" mean add, not replace. Do not add Workspace data access
unless the user's request needs it.
When the user asks vaguely to connect Gmail or grant "reasonable", "normal",
or unspecified Google access, call `{"action": "choose_permissions"}`. The
tool sends a concise Telegram Mini App chooser. Do not guess a broad preset,
and do not ask the user to know OAuth scope names. If the user clearly states
the intended work, skip the chooser and request the narrowest matching preset:
- "send email", "email people", or "send messages" → `mail_sender`
- "draft", "prepare", "write", or "edit email drafts" → `mail_writer`
- "read", "search", "summarize", or "review email" → `mail_reader`
- "organize", "label", "archive", "mark read", or "manage my inbox" →
`inbox_manager`
Normal wording is enough. Do not require phrases such as "send-only scope" or
an exact permission URL. A request to draft email must use `mail_writer`
because Google does not offer a draft-only scope: `gmail.compose` also permits
sending. A request only to send must use the narrower `mail_sender` preset and
must not use `mail_writer` or `inbox_manager`.
Use a preset only when its capabilities exactly cover what the user asked for.
Never translate an exact or Custom request to the "closest" preset, and never
silently broaden access because a broader preset is already implemented. If no
preset is an exact match, use an exact manifest-listed `scopes` subset or union
with a precise `reason`. If the requested access is ambiguous or cannot be
represented exactly by implemented scopes, ask the user to clarify or return
the tool's `review_required` result; do not retry with broader access.
Use the `presets` array for common access. Presets compose, so request the
smallest combination that supports the user's task:
| Preset | Id | Access |
| --- | --- | --- |
| Mail Reader | `mail_reader` | Read Gmail messages, threads, and settings without changing them. |
| Mail Sender | `mail_sender` | Send confirmed email without reading the inbox or managing drafts. |
| Workspace Reader | `workspace_reader` | Read Gmail messages, threads, and settings, Calendar events, and Drive files. |
| Mail Writer | `mail_writer` | Create and manage Gmail drafts and send email through `gmail.compose`. |
| Inbox Manager | `inbox_manager` | Read, compose, send, draft, label, archive, and change read state through `gmail.modify`; it cannot bypass Trash for immediate permanent deletion. |
| Calendar Coordinator | `calendar_coordinator` | Read, create, update, and delete Calendar events through `calendar.events`. |
| File Collaborator | `file_collaborator` | Work with Drive files Tinyhat creates or files you explicitly share with the app through `drive.file`; it does not grant access to other Drive files. |
Examples:
```json
{"action": "connect", "presets": ["mail_sender"]}
```
```json
{"action": "connect", "presets": ["workspace_reader"]}
```
```json
{"action": "set_permissions", "account_id": "...", "presets": ["mail_writer", "calendar_coordinator"]}
```
For Custom access, supply an exact subset or union of manifest-listed canonical
`scopes` and a short `reason`. Custom scopes may extend a `presets` selection.
An explicit Custom request stays Custom even when its scope set happens to
equal a preset. Do not replace it with a nearby preset or infer extra
capabilities from the user's reason.
Tinyhat always includes the identity baseline and normalizes redundant scopes
before it prepares consent:
- `gmail.modify` supersedes Gmail read, compose, send, and label-only scopes.
- `gmail.compose` supersedes `gmail.send`.
- `calendar.events` supersedes `calendar.events.readonly`.
The public manifest is the source of truth for which scopes are implemented and
which OAuth clients may request them. Its request state is separate from its
Google verification state. An implemented scope may start authorization while
verification is `preparing_submission`; Google may show an unverified-app
warning and the user decides whether to continue. Unknown, unimplemented, or
legacy-only scopes return a structured `review_required` result before creating
OAuth state, starting a worker, or sending a Google button. Explain that result
and do not retry with a broader permission.
The historical `profile` field and its values remain compatibility inputs for
older callers and saved grants. Do not choose a legacy profile for a new
request when `presets` or `scopes` can express the intent. `profile` is
mutually exclusive with `presets` and `scopes`.
`connect` with an explicit `account_id` is additive: it combines the selected
account's current scopes with the requested presets and Custom scopes.
`set_permissions` is exact replacement: it installs only the selected presets
and Custom scopes, plus identity. Use exact replacement when narrowing access.
Google consent is the permission decision. The native Google button opens the
exact request. The user may grant it or return and ask for narrower access. Do
not add a separate Tinyhat permission-upgrade confirmation or pass `confirmed`
or `confirmation_id` to the connection tool. OAuth consent does not authorize
an email send, draft or label mutation, Calendar change, file write, or otherFrom tinyhat-ai/tinyhat, MIT.
More from tinyhat-ai/tinyhat
- 0.547score
tinyhat-plugin-skill-authoring
tinyhat-ai
Create, modify, or review Tinyhat plugin skills.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-credentials
tinyhat-ai
List, find, or remove secure credentials stored only on this Tinyhat Computer.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-google-workspace-app-manager
tinyhat-ai
Inspect or, after explicit approval, install or uninstall Tinyhat's pinned Google Workspace CLI app.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-hat-wearing
tinyhat-ai
Install, wear, resume, or finish an accessible Tinyhat Hat on this agent from its handle or URL.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-local-app-sharing
tinyhat-ai
Create, list, or expire short-lived Tinyhat Visuals when visual communication would help the user, including reports, charts, dashboards, previews…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-mail
tinyhat-ai
Use when the owner says "check your inbox," "I sent you an email, did you get it?," "read/search your email," asks whether this Agent can receive email, asks…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-mail-client
tinyhat-ai
Help the owner open Mail on their Tinyhat desktop or connect their agent mailbox to Thunderbird, Apple Mail, Epistles, or another IMAP/SMTP client.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-account-upgrade
tinyhat-ai
Use when the owner asks to upgrade their Tinyhat account, enable Stripe Projects services, or prepare their individual connected account.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-agentphone
tinyhat-ai
Use when the owner says "call me," "call this number," "call again," "send a text/SMS," "I sent you a text, did you receive it?," asks whether this Agent can…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-codex-auth
tinyhat-ai
Start Tinyhat's OpenAI Codex / ChatGPT subscription device-auth flow, and explain the funding model.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-complete-setup
tinyhat-ai
Finish a Tinyhat Computer's onboarding when the owner asks to set up their selected coding agent and Slack or Telegram, finish setup, or get their Computer…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-connect-channel
tinyhat-ai
Connect an existing Tinyhat Computer to Telegram or Slack when its owner asks to chat with their agent there, connect a bot, or add another channel.
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 10
- Last commit (this folder)
- Jul 31, 2026 (3 months ago)
- Last release
- Sep 24, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/tinyhat-ai/tinyhat
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from tinyhat-ai
- 0.547score
tinyhat-plugin-skill-authoring
tinyhat-ai
Create, modify, or review Tinyhat plugin skills.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-account-upgrade
tinyhat-ai
Use when the owner asks to upgrade their Tinyhat account, enable Stripe Projects services, or prepare their individual connected account.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-agentphone
tinyhat-ai
Use when the owner says "call me," "call this number," "call again," "send a text/SMS," "I sent you a text, did you receive it?," asks whether this Agent can…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-codex-auth
tinyhat-ai
Start Tinyhat's OpenAI Codex / ChatGPT subscription device-auth flow, and explain the funding model.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-complete-setup
tinyhat-ai
Finish a Tinyhat Computer's onboarding when the owner asks to set up their selected coding agent and Slack or Telegram, finish setup, or get their Computer…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tinyhat-connect-channel
tinyhat-ai
Connect an existing Tinyhat Computer to Telegram or Slack when its owner asks to chat with their agent there, connect a bot, or add another channel.
SkillBFreshness: B★ 1Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get tinyhat-google-workspace running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
tinyhat-google-workspace skill. Agent Mart. https://agentmart.dev/skills/tinyhat-ai-tinyhat-google-workspace (last updated 2026-10-24)