Quick Start
Invoke tools via CLI using the Bash tool:
# Install dependencies first (one-time setup)
cd <skill-directory>
uv venv .venv && uv pip install -r requirements.txt
# Or: python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
# Email: List mailboxes
.venv/bin/python scripts/cli.py list_mailboxes
# Email: Send
.venv/bin/python scripts/cli.py send_email \
'{"to": [{"email": "user@example.com"}], "subject": "Hi", "text_body": "Message"}'
# Calendar: List events
.venv/bin/python scripts/cli.py list_events \
'{"start_date": "2024-01-01", "end_date": "2024-01-31"}'
# Calendar: Create event with reminder
.venv/bin/python scripts/cli.py create_event_with_reminder \
'{"title": "Meeting", "start": "2024-01-15T10:00:00+07:00", "end": "2024-01-15T11:00:00+07:00", "reminders": [{"minutesBefore": 15}, {"minutesBefore": 60}]}'
# List all available tools
.venv/bin/python scripts/cli.py --list
When to Use This Skill
- Check inbox or search emails
- Send, reply, or move emails
- Apply labels or organize mailbox
- View calendar or events
- Create, update, or delete events
- Set event reminders or alarms
Email Tools (10 total)
| Tool |
Purpose |
list_mailboxes |
List all folders |
list_emails |
List emails in mailbox |
get_email |
Get full email content |
get_thread |
Get all emails in a conversation thread |
search_emails |
Search by text query |
send_email |
Send new email |
reply_email |
Reply to email |
move_email |
Move to folder |
set_labels |
Apply labels ($seen, $flagged) |
delete_email |
Delete (move to trash) |
Bulk Email Tools (3 total)
| Tool |
Purpose |
bulk_move_emails |
Move multiple emails at once |
bulk_set_labels |
Apply labels to multiple emails |
bulk_delete_emails |
Delete multiple emails at once |
Calendar Tools (10 total)
| Tool |
Purpose |
list_calendars |
List all calendars |
list_events |
List events by date range |
get_event |
Get event details |
create_event |
Create new event |
update_event |
Update existing event |
delete_event |
Delete event |
search_events |
Search by title/description |
create_recurring_event |
Create repeating event |
list_invitations |
List calendar invitations |
respond_to_invitation |
Accept/decline/maybe invitations |
Reminder Tools (4 total)
| Tool |
Purpose |
add_event_reminder |
Add reminder to event |
remove_event_reminder |
Remove reminder(s) |
list_event_reminders |
List reminders for event |
create_event_with_reminder |
Create event + reminder in one call |
Common Examples
# Check inbox (limit 10)
.venv/bin/python scripts/cli.py list_emails '{"limit": 10}'
# Search for emails
.venv/bin/python scripts/cli.py search_emails '{"query": "invoice"}'
# Get specific email content
.venv/bin/python scripts/cli.py get_email '{"email_id": "xxx"}'
# Get email thread/conversation
.venv/bin/python scripts/cli.py get_thread '{"email_id": "xxx"}'
# Bulk operations
.venv/bin/python scripts/cli.py bulk_move_emails '{"email_ids": ["id1", "id2"], "target_mailbox_id": "archive"}'
.venv/bin/python scripts/cli.py bulk_delete_emails '{"email_ids": ["id1", "id2", "id3"]}'
# Create recurring event (daily for 10 days)
.venv/bin/python scripts/cli.py create_recurring_event \
'{"title": "Standup", "start": "2024-01-01T09:00:00", "end": "2024-01-01T09:30:00", "recurrence": "daily", "recurrence_count": 10}'
# Calendar invitations
.venv/bin/python scripts/cli.py list_invitations
.venv/bin/python scripts/cli.py respond_to_invitation '{"event_id": "xxx", "response": "accept"}'
Decision Tree
Need to manage email?
- List/search:
list_emails or search_emails
- Read content:
get_email
- View conversation:
get_thread
- Send/reply:
send_email or reply_email
- Organize:
move_email, set_labels, delete_email
- Bulk actions:
bulk_move_emails, bulk_set_labels, bulk_delete_emails
Need to manage calendar?
- View:
list_calendars or list_events
- Create:
create_event or create_recurring_event
- Modify:
update_event
- Delete:
delete_event
- Invitations:
list_invitations, respond_to_invitation
Need reminders?
- Add to existing event:
add_event_reminder
- Create event + reminder:
create_event_with_reminder (faster)
- Manage:
list_event_reminders, remove_event_reminder
Output Format
All tools return JSON:
{
"success": true,
"result": {
/* tool-specific response */
}
}
Environment Variables
| Variable |
Purpose |
Required |
FASTMAIL_API_TOKEN |
Email via JMAP |
Yes (for email) |
FASTMAIL_USERNAME |
Calendar via CalDAV |
Yes (for calendar) |
FASTMAIL_PASSWORD |
Calendar app password |
Yes (for calendar) |
FASTMAIL_TIMEZONE |
Calendar timezone (IANA format) |
No (auto-detected) |
Setup:
export FASTMAIL_API_TOKEN="your-api-token"
export FASTMAIL_USERNAME="your-email@fastmail.com"
export FASTMAIL_PASSWORD="your-app-password"
# Optional: Override timezone (defaults to system local timezone)
export FASTMAIL_TIMEZONE="America/New_York" # or "Asia/Bangkok", "Europe/London", etc.
Timezone Support
Configurable calendar timezone
- Default: Auto-detects your system's local timezone
- Override: Set
FASTMAIL_TIMEZONE environment variable
- Uses IANA timezone identifiers (e.g.,
America/New_York, Asia/Bangkok, Europe/London)
- Input times assumed in configured timezone
- Output times shown in configured timezone
- Stored internally as UTC
- Handles Daylight Saving Time (DST) automatically
See Also
1---2name: fastmail3description: Manages Fastmail email and calendar via JMAP and CalDAV APIs. Use for emails (read, send, reply, search, organize, bulk operations, threads) or calendar (events, reminders, RSVP invitations). Timezone auto-detected from system.4---56## Quick Start78Invoke tools via CLI using the `Bash` tool:910```bash11# Install dependencies first (one-time setup)12cd <skill-directory>13uv venv .venv && uv pip install -r requirements.txt14# Or: python3 -m venv .venv && .venv/bin/pip install -r requirements.txt1516# Email: List mailboxes17.venv/bin/python scripts/cli.py list_mailboxes1819# Email: Send20.venv/bin/python scripts/cli.py send_email \21 '{"to": [{"email": "user@example.com"}], "subject": "Hi", "text_body": "Message"}'2223# Calendar: List events24.venv/bin/python scripts/cli.py list_events \25 '{"start_date": "2024-01-01", "end_date": "2024-01-31"}'2627# Calendar: Create event with reminder28.venv/bin/python scripts/cli.py create_event_with_reminder \29 '{"title": "Meeting", "start": "2024-01-15T10:00:00+07:00", "end": "2024-01-15T11:00:00+07:00", "reminders": [{"minutesBefore": 15}, {"minutesBefore": 60}]}'3031# List all available tools32.venv/bin/python scripts/cli.py --list33```3435## When to Use This Skill3637- Check inbox or search emails38- Send, reply, or move emails39- Apply labels or organize mailbox40- View calendar or events41- Create, update, or delete events42- Set event reminders or alarms4344## Email Tools (10 total)4546| Tool | Purpose |47| --- | --- |48| `list_mailboxes` | List all folders |49| `list_emails` | List emails in mailbox |50| `get_email` | Get full email content |51| `get_thread` | Get all emails in a conversation thread |52| `search_emails` | Search by text query |53| `send_email` | Send new email |54| `reply_email` | Reply to email |55| `move_email` | Move to folder |56| `set_labels` | Apply labels ($seen, $flagged) |57| `delete_email` | Delete (move to trash) |5859## Bulk Email Tools (3 total)6061| Tool | Purpose |62| --- | --- |63| `bulk_move_emails` | Move multiple emails at once |64| `bulk_set_labels` | Apply labels to multiple emails |65| `bulk_delete_emails` | Delete multiple emails at once |6667## Calendar Tools (10 total)6869| Tool | Purpose |70| --- | --- |71| `list_calendars` | List all calendars |72| `list_events` | List events by date range |73| `get_event` | Get event details |74| `create_event` | Create new event |75| `update_event` | Update existing event |76| `delete_event` | Delete event |77| `search_events` | Search by title/description |78| `create_recurring_event` | Create repeating event |79| `list_invitations` | List calendar invitations |80| `respond_to_invitation` | Accept/decline/maybe invitations |8182## Reminder Tools (4 total)8384| Tool | Purpose |85| --- | --- |86| `add_event_reminder` | Add reminder to event |87| `remove_event_reminder` | Remove reminder(s) |88| `list_event_reminders` | List reminders for event |89| `create_event_with_reminder` | Create event + reminder in one call |9091## Common Examples9293```bash94# Check inbox (limit 10)95.venv/bin/python scripts/cli.py list_emails '{"limit": 10}'9697# Search for emails98.venv/bin/python scripts/cli.py search_emails '{"query": "invoice"}'99100# Get specific email content101.venv/bin/python scripts/cli.py get_email '{"email_id": "xxx"}'102103# Get email thread/conversation104.venv/bin/python scripts/cli.py get_thread '{"email_id": "xxx"}'105106# Bulk operations107.venv/bin/python scripts/cli.py bulk_move_emails '{"email_ids": ["id1", "id2"], "target_mailbox_id": "archive"}'108.venv/bin/python scripts/cli.py bulk_delete_emails '{"email_ids": ["id1", "id2", "id3"]}'109110# Create recurring event (daily for 10 days)111.venv/bin/python scripts/cli.py create_recurring_event \112 '{"title": "Standup", "start": "2024-01-01T09:00:00", "end": "2024-01-01T09:30:00", "recurrence": "daily", "recurrence_count": 10}'113114# Calendar invitations115.venv/bin/python scripts/cli.py list_invitations116.venv/bin/python scripts/cli.py respond_to_invitation '{"event_id": "xxx", "response": "accept"}'117```118119## Decision Tree120121**Need to manage email?**122123- List/search: `list_emails` or `search_emails`124- Read content: `get_email`125- View conversation: `get_thread`126- Send/reply: `send_email` or `reply_email`127- Organize: `move_email`, `set_labels`, `delete_email`128- Bulk actions: `bulk_move_emails`, `bulk_set_labels`, `bulk_delete_emails`129130**Need to manage calendar?**131132- View: `list_calendars` or `list_events`133- Create: `create_event` or `create_recurring_event`134- Modify: `update_event`135- Delete: `delete_event`136- Invitations: `list_invitations`, `respond_to_invitation`137138**Need reminders?**139140- Add to existing event: `add_event_reminder`141- Create event + reminder: `create_event_with_reminder` (faster)142- Manage: `list_event_reminders`, `remove_event_reminder`143144## Output Format145146All tools return JSON:147148```json149{150 "success": true,151 "result": {152 /* tool-specific response */153 }154}155```156157## Environment Variables158159| Variable | Purpose | Required |160| --- | --- | --- |161| `FASTMAIL_API_TOKEN` | Email via JMAP | Yes (for email) |162| `FASTMAIL_USERNAME` | Calendar via CalDAV | Yes (for calendar) |163| `FASTMAIL_PASSWORD` | Calendar app password | Yes (for calendar) |164| `FASTMAIL_TIMEZONE` | Calendar timezone (IANA format) | No (auto-detected) |165166**Setup:**167168```bash169export FASTMAIL_API_TOKEN="your-api-token"170export FASTMAIL_USERNAME="your-email@fastmail.com"171export FASTMAIL_PASSWORD="your-app-password"172# Optional: Override timezone (defaults to system local timezone)173export FASTMAIL_TIMEZONE="America/New_York" # or "Asia/Bangkok", "Europe/London", etc.174```175176## Timezone Support177178**Configurable calendar timezone**179180- **Default:** Auto-detects your system's local timezone181- **Override:** Set `FASTMAIL_TIMEZONE` environment variable182- Uses IANA timezone identifiers (e.g., `America/New_York`, `Asia/Bangkok`, `Europe/London`)183- Input times assumed in configured timezone184- Output times shown in configured timezone185- Stored internally as UTC186- Handles Daylight Saving Time (DST) automatically187188## See Also189190- **Detailed reference:** `./references/TOOLS.md`191- **Setup help:** Fastmail Settings → Privacy & Security → Integrations192- **JMAP docs:** https://jmap.io/193- **CalDAV RFC:** https://datatracker.ietf.org/doc/html/rfc4791