with one click
gmail
Gmail API — read, send, and manage emails via Gmail
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Gmail API — read, send, and manage emails via Gmail
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Google Calendar — list, create, and manage events via gcal CLI
Manage HubSpot CRM — contacts, companies, deals, tickets
Manage Shopify store — products, orders, customers, inventory
Configure audio transcription and image/video understanding for channels
AWS CLI for S3, EC2, Lambda, CloudWatch, RDS, and ECS
Google Calendar — list, create, and manage events via gcal CLI
| name | gmail |
| version | 0.1.0 |
| author | devclaw |
| description | Gmail API — read, send, and manage emails via Gmail |
| category | communication |
| tags | ["gmail","email","google","mail","inbox"] |
| requires | {"bins":["curl","jq"],"env":["GMAIL_ACCESS_TOKEN"]} |
Interact with Gmail using the Gmail API.
Check existing credentials:
vault_get gmail_access_token
If not configured:
vault_save gmail_access_token "ya29.a0..."
The token is auto-injected as $GMAIL_ACCESS_TOKEN.
Note: Access tokens expire after ~1 hour; refresh and re-save when needed.
# List recent emails
curl -s "https://gmail.googleapis.com/gmail/v1/users/me/messages?maxResults=10" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" | jq '.messages'
# Search emails
curl -s "https://gmail.googleapis.com/gmail/v1/users/me/messages?q=is:unread+from:boss@company.com" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" | jq '.messages'
# Common search queries:
# is:unread, is:starred, has:attachment, larger:5M
# from:email@example.com, to:me, subject:urgent
# newer_than:7d, older_than:1m
# Get message details
curl -s "https://gmail.googleapis.com/gmail/v1/users/me/messages/MESSAGE_ID?format=full" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" | jq '{
id, snippet,
from: (.payload.headers[] | select(.name == "From") | .value),
subject: (.payload.headers[] | select(.name == "Subject") | .value),
date: (.payload.headers[] | select(.name == "Date") | .value)
}'
# Get raw message (including body)
curl -s "https://gmail.googleapis.com/gmail/v1/users/me/messages/MESSAGE_ID?format=raw" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" | jq -r '.raw' | base64 -d
# Create raw email (RFC 2822 format)
RAW_EMAIL=$(cat <<EOF | base64 -w0
From: me@gmail.com
To: recipient@example.com
Subject: Test Email from DevClaw
This is the email body.
Can have multiple lines.
EOF
)
# Send
curl -s -X POST "https://gmail.googleapis.com/gmail/v1/users/me/messages/send" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"raw\": \"$RAW_EMAIL\"}"
# List labels
curl -s "https://gmail.googleapis.com/gmail/v1/users/me/labels" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" | jq '.labels[]'
# Add label to message
curl -s -X POST "https://gmail.googleapis.com/gmail/v1/users/me/messages/MESSAGE_ID/modify" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"addLabelIds": ["Label_123"]}'
# Mark as read
curl -s -X POST "https://gmail.googleapis.com/gmail/v1/users/me/messages/MESSAGE_ID/modify" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"removeLabelIds": ["UNREAD"]}'
# Star email
curl -s -X POST "https://gmail.googleapis.com/gmail/v1/users/me/messages/MESSAGE_ID/modify" \
-H "Authorization: Bearer $GMAIL_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"addLabelIds": ["STARRED"]}'
format=metadata for headers only (faster)gmail, email, check email, send email, read gmail, inbox, gmail api