Gmail
Purpose
Operate Gmail through the connected integration: search and list messages, fetch full bodies, send mail, and inspect labels—without fabricating message content or send confirmations.
When to Use
- List or search messages (unread, from, subject, label filters).
- Read full email content after listing by message ID.
- Send email with to/subject/body (and cc/bcc when specified).
- List labels or check the connected profile.
When NOT to Use
- Calendar, Drive, Docs, or Sheets tasks → google-calendar, google-drive, google-docs, google-sheets.
- Skill authoring or publishing in this repo → create-skill / publish-skill.
- Gmail is not connected or tools are unavailable.
Expected Outcome
- Tool-backed results: subjects, snippets, IDs, send confirmations from API responses.
- List-then-get pattern when full bodies are needed.
- Explicit errors for auth, quota, or missing message IDs.
Inputs to Gather
- Search intent:
q string (e.g. is:unread, from:user@example.com, subject:meeting) and/or labelIds.
- Message IDs from a prior list when fetching full content.
- Send payload: to, subject, body; cc/bcc only if the user specified them.
Workflow
- Confirm Gmail tools are available; do not invent messages or send status.
- Search/list first:
gmail_list_messages with q and/or labelIds, maxResults as needed.
- Get full body when needed:
gmail_get_message with messageId from the list.
- Send:
gmail_send_email with required to, subject, body; add cc/bcc when specified.
- Summarize results (subject, from, snippet or body excerpt); offer to open specific messages.
Domain rules
- Search with
q: Gmail search syntax in q (e.g. is:unread); use labelIds for INBOX, UNREAD, etc.
- One list, then get: Prefer filtered list before per-message gets.
- Send with required fields: Never omit to, subject, or body unless the tool schema allows defaults.
Main tools
gmail_list_messages (q, labelIds, maxResults), gmail_get_message
gmail_send_email (to, subject, body), gmail_get_profile, gmail_list_labels
Examples
Unread inbox: gmail_list_messages with q: "is:unread". Return subject, from, snippet; offer gmail_get_message for one thread.
Send: gmail_send_email with user-provided to, subject, body; confirm from tool response only.
Tool Availability Rules
| Access |
Behavior |
| Full tool access |
Execute list/get/send; report API errors. |
| Read-only |
List and get only; draft send payload for user approval. |
| No integration |
State limitation; do not fabricate messages or send confirmations. |
Related tool sets
Review / Decision / Execution Criteria
- Use Gmail
q syntax correctly; paginate when result sets are large.
- Do not expose full PII unnecessarily in summaries.
- Confirm before bulk send or destructive label changes if supported.
Output Format
- Request and actions taken.
- Message list or send confirmation (from tool output).
- Errors or missing permissions.
- Optional next steps (open message, refine search).
Quality Bar
- Grounded in tool responses; cite message IDs when relevant.
- Concise tables or bullets for multiple messages.
Safety and Boundaries
- No secrets or tokens in skill examples or logs.
- Do not fabricate send success.
- Confirm unusual bulk operations with the user.
Escalation / Dispatch Rules
- Cross-product Google work → route to the matching Google skill after resolving file IDs in Drive if needed.
- No write access → provide exact tool arguments for dispatch.
References
- Legacy:
skills/old_skills.json (gmail).
skills/skill.instruction.md, skills/meta.instructions.md
1---2name: gmail3description: Lists, searches, reads, and sends Gmail messages and labels via native gmail_* tools. Use for inbox triage, unread filters, full message bodies, and outbound email.4---56# Gmail78## Purpose910Operate Gmail through the connected integration: search and list messages, fetch full bodies, send mail, and inspect labels—without fabricating message content or send confirmations.1112## When to Use1314- List or search messages (unread, from, subject, label filters).15- Read full email content after listing by message ID.16- Send email with to/subject/body (and cc/bcc when specified).17- List labels or check the connected profile.1819## When NOT to Use2021- Calendar, Drive, Docs, or Sheets tasks → **google-calendar**, **google-drive**, **google-docs**, **google-sheets**.22- Skill authoring or publishing in this repo → **create-skill** / **publish-skill**.23- Gmail is not connected or tools are unavailable.2425## Expected Outcome2627- Tool-backed results: subjects, snippets, IDs, send confirmations from API responses.28- List-then-get pattern when full bodies are needed.29- Explicit errors for auth, quota, or missing message IDs.3031## Inputs to Gather3233- Search intent: `q` string (e.g. `is:unread`, `from:user@example.com`, `subject:meeting`) and/or `labelIds`.34- Message IDs from a prior list when fetching full content.35- Send payload: to, subject, body; cc/bcc only if the user specified them.3637## Workflow38391. Confirm Gmail tools are available; do not invent messages or send status.402. **Search/list first**: `gmail_list_messages` with `q` and/or `labelIds`, `maxResults` as needed.413. **Get full body when needed**: `gmail_get_message` with `messageId` from the list.424. **Send**: `gmail_send_email` with required to, subject, body; add cc/bcc when specified.435. Summarize results (subject, from, snippet or body excerpt); offer to open specific messages.4445### Domain rules46471. **Search with `q`**: Gmail search syntax in `q` (e.g. `is:unread`); use `labelIds` for INBOX, UNREAD, etc.482. **One list, then get**: Prefer filtered list before per-message gets.493. **Send with required fields**: Never omit to, subject, or body unless the tool schema allows defaults.5051### Main tools5253- `gmail_list_messages` (`q`, `labelIds`, `maxResults`), `gmail_get_message`54- `gmail_send_email` (to, subject, body), `gmail_get_profile`, `gmail_list_labels`5556### Examples5758**Unread inbox:** `gmail_list_messages` with `q: "is:unread"`. Return subject, from, snippet; offer `gmail_get_message` for one thread.5960**Send:** `gmail_send_email` with user-provided to, subject, body; confirm from tool response only.6162## Tool Availability Rules6364| Access | Behavior |65|--------|----------|66| Full tool access | Execute list/get/send; report API errors. |67| Read-only | List and get only; draft send payload for user approval. |68| No integration | State limitation; do not fabricate messages or send confirmations. |6970### Related tool sets7172- `email`7374## Review / Decision / Execution Criteria7576- Use Gmail `q` syntax correctly; paginate when result sets are large.77- Do not expose full PII unnecessarily in summaries.78- Confirm before bulk send or destructive label changes if supported.7980## Output Format81821. Request and actions taken.832. Message list or send confirmation (from tool output).843. Errors or missing permissions.854. Optional next steps (open message, refine search).8687## Quality Bar8889- Grounded in tool responses; cite message IDs when relevant.90- Concise tables or bullets for multiple messages.9192## Safety and Boundaries9394- No secrets or tokens in skill examples or logs.95- Do not fabricate send success.96- Confirm unusual bulk operations with the user.9798## Escalation / Dispatch Rules99100- Cross-product Google work → route to the matching Google skill after resolving file IDs in Drive if needed.101- No write access → provide exact tool arguments for dispatch.102103## References104105- Legacy: `skills/old_skills.json` (`gmail`).106- `skills/skill.instruction.md`, `skills/meta.instructions.md`