From pear
iCloud Calendar, Reminders, Contacts, and Mail via Pear. Manage events, reminders, contacts, inbox workflows, scheduling, and batch actions. 34 tools for Apple iCloud via CalDAV/CardDAV/IMAP/SMTP.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pear:pear-icloudThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pear provides read/write access to iCloud Calendar, Reminders, Contacts, and Mail through 34 MCP tools. All tools are prefixed with `pear_` and communicate with iCloud via CalDAV/CardDAV for Calendar, Reminders, and Contacts, plus IMAP/SMTP for Mail.
Pear provides read/write access to iCloud Calendar, Reminders, Contacts, and Mail through 34 MCP tools. All tools are prefixed with pear_ and communicate with iCloud via CalDAV/CardDAV for Calendar, Reminders, and Contacts, plus IMAP/SMTP for Mail.
Activate this skill when the user wants to:
Activation triggers:
Do NOT activate for:
Required Environment Variable:
PEAR_API_KEY — Your Pear API key (format: pear_sk_...)
Optional:
PEAR_MCP_URL — Custom endpoint URL (defaults to https://pearmcp.com/api/mcp)| Tool | Description |
|---|---|
pear_list_calendars | List all iCloud calendars (including read-only subscriptions) |
pear_list_events | List events in a time range, with pagination and calendar filtering |
pear_search_events | Search events by title or description within a date range |
pear_create_event | Create an event with optional recurrence, alarms, attendees, and location |
pear_update_event | Update an existing event's properties |
pear_delete_event | Delete an event by filename |
pear_find_free_slots | Find available time slots of a given duration |
pear_check_availability | Check if a specific time slot is free, returns conflicts |
| Tool | Description |
|---|---|
pear_list_reminders | List reminders with optional list filtering, includes completed toggle |
pear_create_reminder | Create a reminder with optional due date, priority (1=high, 5=med, 9=low), and notes |
pear_update_reminder | Update a reminder's properties |
pear_complete_reminder | Mark a reminder as completed |
pear_delete_reminder | Delete a reminder |
| Tool | Description |
|---|---|
pear_list_contacts | List all contacts with full vCard data (phones, emails, addresses, birthdays) |
pear_search_contacts | Search by name, email, phone, or organization |
pear_create_contact | Create a contact with full vCard support including photo |
pear_update_contact | Update contact fields (merges with existing data) |
pear_delete_contact | Delete a contact |
pear_list_contact_groups | List all contact groups with member counts |
pear_create_contact_group | Create a new contact group |
pear_add_contact_to_group | Add a contact to a group by name or email |
pear_update_contact_photo | Update a contact's photo (inline base64 or data:image/... URI) |
| Tool | Description |
|---|---|
pear_find_best_time | AI-scored optimal meeting slots. Considers work hours, time-of-day preference, day-of-week preference, buffer time, and reminder deadlines. |
| Tool | Description |
|---|---|
pear_create_events_batch | Create up to 50 events in one call |
pear_create_reminders_batch | Create up to 50 reminders in one call |
pear_create_contacts_batch | Create up to 50 contacts in one call |
pear_delete_contacts_batch | Delete up to 50 contacts in one call |
| Tool | Description |
|---|---|
pear_list_mail_folders | List mail folders and mailboxes available in iCloud Mail |
pear_list_emails | List emails from a folder, with unread and query filters |
pear_read_email | Read the full content of an email |
pear_send_email | Send an email through iCloud Mail |
pear_move_email | Move an email between folders |
pear_mark_email_read | Mark an email as read or unread |
pear_delete_email | Delete an email by moving it to Trash |
2025-06-15T14:30:00Z or 2025-06-15T14:30:00+10:00timezone (IANA format like America/New_York or Australia/Sydney) for user-friendly display timesisAllDay: true and use date-only format 2025-06-15pear_list_events requires a timeRange object: { start: "...", end: "..." }When creating events, follow this pattern:
calendarName — Pear auto-selects the defaultrecurrence object: { frequency: "WEEKLY", interval: 1, count: 10 }idempotencyKey when retrying to prevent duplicate events{ action: "display", trigger: 15 } for a 15-minute reminderFor scheduling, prefer pear_find_best_time over pear_find_free_slots:
pear_find_best_time returns AI-scored slots considering work hours, preferences, and existing commitmentspreferences to customize: { timeOfDay: "morning", focusTime: true, workHoursStart: 9, workHoursEnd: 17 }pear_find_free_slots is simpler — just returns raw available slots without scoring1 = high, 5 = medium, 9 = low, 0 = noneincludeCompleted: false (default)listName@icloud.com address or an iCloud Mail custom-domain address tied to the mailboxpear_list_emails is best for inbox scans; use query and unreadOnly to keep results tightpear_read_email gives full body content after you identify the message with pear_list_emailspear_send_email supports to, cc, bcc, reply headers, and HTML/plain-text bodiespear_update_contact merges fields — it won't erase data you don't include in the updateYYYY-MM-DD for full date, --MM-DD for year-unknowndata:image/... URIsPear generates all-day birthday events from contact birthday fields. These appear as events on a "Birthdays" calendar when listing events. This is a synthesized feature — Apple's native Birthdays calendar is not exposed via CalDAV.
Pear does not currently expose a single dedicated briefing tool in the hosted MCP surface. Build daily briefings by combining:
pear_list_events for the chosen daypear_list_reminders for incomplete taskspear_list_emails for unread inbox context when Mail mattersThe /pear:briefing command in this plugin already follows that pattern.
| Action | Risk | Guidance |
|---|---|---|
pear_delete_event | Removes event permanently | Confirm event title and date with user before deleting |
pear_delete_contact | Removes contact permanently | Always confirm — show contact name first |
pear_delete_contacts_batch | Bulk delete up to 50 contacts | Require explicit user confirmation with count |
pear_update_event | Overwrites event fields | Summarize changes before applying |
pear_complete_reminder | Marks as done | Safe — can be undone by updating completed: false |
| Batch create operations | Creates up to 50 items | Confirm count and summarize before executing |
pear_update_contact preserves fields you don't mentionPEAR_API_KEY — treat it as a secret| Error Code | Meaning | What to Do |
|---|---|---|
-32001 | Missing or invalid API key | Check PEAR_API_KEY is set correctly |
-32602 | Invalid parameters | Check parameter names and types against tool reference |
-32603 | Server error | Retry once, then report to user |
404 on event/reminder | Item not found | The filename may have changed — re-list to get current filenames |
| Calendar is read-only | Cannot modify subscription calendars | List calendars first to check which are writable |
Event creation failed mid-request or timed out:
→ Retry pear_create_event with the same idempotencyKey
→ Pear deduplicates — no double-booking even if the first request succeeded silently
User: "What's on my plate today?"
→ Call pear_list_events for today with timezone
→ Call pear_list_reminders for incomplete tasks
→ Optionally call pear_list_emails for unread inbox context
→ Summarize events chronologically, then pending reminders, then important unread mail
User: "Find time for a 1-hour meeting this week"
→ Call pear_find_best_time with durationMinutes: 60 and this week's range
→ Present top 3 options with scores
→ On user selection, call pear_create_event
User: "Remind me to call the dentist tomorrow"
→ Call pear_create_reminder with title and dueDate set to tomorrow
User: "What's Sarah's phone number?"
→ Call pear_search_contacts with query: "Sarah"
→ Return matching contacts with phone numbers
User: "Add these 5 meetings to my calendar"
→ Call pear_create_events_batch with all events in one request
→ Summarize results (created count, any failures)
npx claudepluginhub ashtonau/pear-plugin --plugin pearManages Gmail, Google Calendar, Drive, Docs, Sheets, iMessage, WhatsApp, Signal, and Apple Reminders. Sends/drafts email, checks calendar, creates events, finds Drive files, reads spreadsheets, and sends messages.
Manages calendars and contacts on self-hosted Radicale CalDAV/CardDAV server. List, create, update, delete events and contacts using Python caldav library.
Automates Microsoft Outlook operations (emails, calendar, contacts, folders, attachments) via Composio's Outlook toolkit through Rube MCP. Requires Rube MCP connection and active Outlook OAuth.