Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aws-samples avatar

Gmail

  • 56 installs
  • 186 repo stars
  • Updated August 4, 2026
  • aws-samples/sample-strands-agent-with-agentcore

gmail is a Claude skill that reads, sends, drafts, deletes, and organizes Gmail emails through tools that use Gmail's search query syntax.

About

This skill connects an agent to Gmail so it can list, search, read, send, draft, delete, label, and thread emails. It exposes Gmail query syntax and label operations like archive, star, and mark-read. A developer uses it when an assistant needs to triage or send mail on the user's behalf. Bulk deletion is permanent and gated behind a required reason and user approval.

  • Reads, sends, drafts, deletes, and organizes Gmail emails via dedicated tools
  • Supports Gmail query syntax (from:, subject:, is:unread, has:attachment)
  • bulk_delete_emails permanently removes matching mail and requires a reason plus user confirmation

Gmail by the numbers

  • 56 all-time installs (skills.sh)
  • Ranked #1,034 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

gmail capabilities & compatibility

Capabilities
email triage · email sending
Works with
gmail
Use cases
email
Pricing
Free
From the docs

What gmail says it does

Read, send, draft, delete, and organize Gmail emails
SKILL.md
Permanently delete multiple emails by query. **Cannot be undone.**
SKILL.md
npx skills add https://github.com/aws-samples/sample-strands-agent-with-agentcore --skill gmail

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs56
repo stars186
Last updatedAugust 4, 2026
Repositoryaws-samples/sample-strands-agent-with-agentcore

What it does

Let an agent search, read, send, draft, and organize Gmail emails, including bulk cleanup with approval.

Who is it for?

Triaging, searching, sending, and labeling Gmail email from an agent.

Skip if: Non-Gmail mail providers or calendar scheduling.

When should I use this skill?

The user asks to read, send, draft, delete, or organize Gmail email.

What you get

Emails read, sent, drafted, labeled, or bulk-deleted with confirmation, using Gmail query filters.

By the numbers

  • 10 Gmail tools
  • bulk_delete_emails max 100 emails

Files

SKILL.mdMarkdownGitHub ↗

Gmail

Available Tools

  • list_labels(): List all Gmail labels (system: INBOX, SENT, TRASH, SPAM, DRAFT, IMPORTANT, STARRED, UNREAD; plus user-created labels).
  • list_emails(label?, max_results?, include_spam_trash?): List emails by label.
  • label (string, optional, default: "INBOX"): Label to filter by (INBOX, SENT, DRAFT, TRASH, SPAM, STARRED, IMPORTANT, or custom label ID)
  • max_results (integer, optional, default: 10, max: 100): Number of emails to return
  • include_spam_trash (boolean, optional, default: false): Include SPAM and TRASH
  • search_emails(query, max_results?): Search Gmail using query syntax.
  • query (string, required): Gmail search query (from:, to:, subject:, is:unread, has:attachment, after:, before:, older_than:, newer_than:)
  • max_results (integer, optional, default: 10, max: 50): Number of results
  • read_email(message_id): Read a full email including body and attachments.
  • message_id (string, required): Gmail message ID (from list_emails or search_emails)
  • send_email(to, subject, body, cc?, bcc?, reply_to?, in_reply_to?, html_body?): Send an email.
  • to (string, required): Recipient(s), comma-separated
  • subject (string, required): Email subject
  • body (string, required): Plain text email body
  • cc (string, optional): CC recipient(s)
  • bcc (string, optional): BCC recipient(s)
  • reply_to (string, optional): Reply-To address
  • in_reply_to (string, optional): Message-ID to reply to (for threading)
  • html_body (string, optional): HTML version of email body
  • draft_email(to, subject, body, cc?, bcc?, reply_to?, in_reply_to?, html_body?): Create a draft for later editing/sending. Same parameters as send_email.
  • delete_email(message_id, permanent?): Delete an email.
  • message_id (string, required): Gmail message ID
  • permanent (boolean, optional, default: false): If true, permanently delete; if false, move to Trash
  • bulk_delete_emails(query, reason, max_delete?): Permanently delete multiple emails by query. Cannot be undone.
  • query (string, required): Gmail search query to find emails
  • reason (string, required): Human-readable explanation (shown to user for approval)
  • max_delete (integer, optional, default: 50, max: 100): Maximum emails to delete
  • modify_email(message_id, add_labels?, remove_labels?): Add/remove labels on an email.
  • message_id (string, required): Gmail message ID
  • add_labels (string, optional): Comma-separated label IDs to add (e.g., "STARRED,IMPORTANT")
  • remove_labels (string, optional): Comma-separated label IDs to remove (e.g., "UNREAD,INBOX")
  • get_email_thread(thread_id): Get all messages in an email thread/conversation.
  • thread_id (string, required): Gmail thread ID (from read_email or search_emails)

Usage Guidelines

  • Use list_labels first to discover available labels before filtering.
  • Gmail search query syntax: from:sender, to:recipient, subject:text, is:unread, has:attachment, after:2024/01/01, before:2024/12/31.
  • Use get_email_thread to view entire conversation context before replying.

Common Operations

Label operations via modify_email:

OperationParameters
Mark as readremove_labels="UNREAD"
Mark as unreadadd_labels="UNREAD"
Archiveremove_labels="INBOX"
Staradd_labels="STARRED"
Unstarremove_labels="STARRED"
Mark importantadd_labels="IMPORTANT"

Bulk Deletion

bulk_delete_emails(query, reason) permanently deletes all emails matching a Gmail query. This cannot be undone.

  • Always provide a reason parameter explaining the intent.
  • Always explain what will be deleted and get user confirmation before calling.

Common queries:

  • Spam cleanup: "is:spam older_than:7d"
  • Old unread: "in:inbox is:unread older_than:14d"
  • Promotions purge: "category:promotions older_than:30d"
  • From specific sender: "from:noreply@example.com older_than:30d"

UI Guidance (from tools-config)

Gmail Tool Usage:

  • list_labels: Get all available labels before filtering emails
  • list_emails: Browse emails by label (INBOX, SENT, DRAFT, TRASH, etc.)
  • search_emails: Use Gmail query syntax (from:, to:, subject:, is:unread, has:attachment, after:, before:)
  • read_email: Get full email content with attachments
  • send_email: Send emails with optional CC, BCC, and HTML body
  • draft_email: Create drafts for later editing/sending
  • delete_email: Move to trash (permanent=True for permanent deletion)
  • bulk_delete_emails: Permanently delete multiple emails by query (requires user approval)
  • modify_email: Add/remove labels (mark read: remove UNREAD, archive: remove INBOX, star: add STARRED)
  • get_email_thread: View entire conversation thread

Bulk Deletion (bulk_delete_emails):

  • Use for spam cleanup, old email purge, etc.
  • Always provide 'reason' parameter explaining the intent
  • Common queries: "is:spam older_than:7d", "in:inbox is:unread older_than:14d", "category:promotions older_than:30d"
  • WARNING: Permanently deletes emails - cannot be recovered

Common Operations:

  • Mark as read: modify_email(id, remove_labels="UNREAD")
  • Archive: modify_email(id, remove_labels="INBOX")
  • Star: modify_email(id, add_labels="STARRED")
  • Mark important: modify_email(id, add_labels="IMPORTANT")

Related skills

FAQ

Can it permanently delete emails?

Yes, bulk_delete_emails permanently deletes matching emails; it requires a reason and user confirmation and cannot be undone.

How do I filter emails?

Use Gmail query syntax like from:, to:, subject:, is:unread, has:attachment, after:, and before:.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.