Pear provides read/write access to iCloud Calendar, Reminders, and Contacts through 27 MCP tools. All tools are prefixed with pear_ and communicate with iCloud via CalDAV/CardDAV protocols.
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)ToolDescriptionpear_list_calendarsList all iCloud calendars (including read-only subscriptions)pear_list_eventsList events in a time range, with pagination and calendar filteringpear_search_eventsSearch events by title or description within a date rangepear_create_eventCreate an event with optional recurrence, alarms, attendees, and locationpear_update_eventUpdate an existing event's propertiespear_delete_eventDelete an event by filenamepear_find_free_slotsFind available time slots of a given durationpear_check_availabilityCheck if a specific time slot is free, returns conflicts
ToolDescriptionpear_list_remindersList reminders with optional list filtering, includes completed togglepear_create_reminderCreate a reminder with optional due date, priority (1=high, 5=med, 9=low), and notespear_update_reminderUpdate a reminder's propertiespear_complete_reminderMark a reminder as completed
ToolDescriptionpear_list_contactsList all contacts with full vCard data (phones, emails, addresses, birthdays)pear_search_contactsSearch by name, email, phone, or organizationpear_create_contactCreate a contact with full vCard support including photopear_update_contactUpdate contact fields (merges with existing data)pear_delete_contactDelete a contactpear_list_contact_groupsList all contact groups with member countspear_create_contact_groupCreate a new contact grouppear_add_contact_to_groupAdd a contact to a group by name or emailpear_update_contact_photoUpdate a contact's photo (Base64, data URI, or external URL)
ToolDescriptionpear_get_daily_briefingGet today's events and pending reminders in one call. Enriches attendees with contact data.
ToolDescriptionpear_find_best_timeAI-scored optimal meeting slots. Considers work hours, time-of-day preference, day-of-week preference, buffer time, and reminder deadlines.
ToolDescriptionpear_create_events_batchCreate up to 50 events in one callpear_create_reminders_batchCreate up to 50 reminders in one callpear_create_contacts_batchCreate up to 50 contacts in one callpear_delete_contacts_batchDelete up to 50 contacts in one call
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)listNamepear_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-unknownPear 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_get_daily_briefing is the most efficient way to give the user an overview:
timezone for correct day boundariesdate to get a briefing for a different dayActionRiskGuidancepear_delete_eventRemoves event permanentlyConfirm event title and date with user before deletingpear_delete_contactRemoves contact permanentlyAlways confirm — show contact name firstpear_delete_contacts_batchBulk delete up to 50 contactsRequire explicit user confirmation with countpear_update_eventOverwrites event fieldsSummarize changes before applyingpear_complete_reminderMarks as doneSafe — can be undone by updating completed: falseBatch create operationsCreates up to 50 itemsConfirm count and summarize before executing
pear_update_contact preserves fields you don't mentionPEAR_API_KEY — treat it as a secretError CodeMeaningWhat to Do-32001Missing or invalid API keyCheck PEAR_API_KEY is set correctly-32602Invalid parametersCheck parameter names and types against tool reference-32603Server errorRetry once, then report to user404 on event/reminderItem not foundThe filename may have changed — re-list to get current filenamesCalendar is read-onlyCannot modify subscription calendarsList calendars first to check which are writable
text
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
text
User: "What's on my plate today?"
→ Call pear_get_daily_briefing with timezone
→ Summarize events chronologically, then pending reminders
text
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
text
User: "Remind me to call the dentist tomorrow"
→ Call pear_create_reminder with title and dueDate set to tomorrow
text
User: "What's Sarah's phone number?"
→ Call pear_search_contacts with query: "Sarah"
→ Return matching contacts with phone numbers
text
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)