# Send Pear Apple to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pear-apple",
    "name": "Pear Apple",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/AshtonAU/pear-apple",
    "canonicalUrl": "https://clawhub.ai/AshtonAU/pear-apple",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/pear-apple",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pear-apple",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "pear-apple",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T20:28:38.274Z",
      "expiresAt": "2026-05-07T20:28:38.274Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pear-apple",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pear-apple",
        "contentDisposition": "attachment; filename=\"pear-apple-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "pear-apple"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/pear-apple"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pear-apple",
    "downloadUrl": "https://openagent3.xyz/downloads/pear-apple",
    "agentUrl": "https://openagent3.xyz/skills/pear-apple/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pear-apple/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pear-apple/agent.md"
  }
}
```
## Documentation

### Pear — iCloud Integration

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.

### When to Use

Activate this skill when the user wants to:

Check their schedule, upcoming events, or daily agenda
Create, update, or delete calendar events
Manage reminders or to-do lists
Look up, create, or update contacts
Find free time slots or schedule meetings
Get a daily briefing of events and tasks
Check availability for a specific time
Work with contact groups
Perform bulk operations on events, reminders, or contacts

Activation triggers:

"What's on my calendar", "my schedule", "upcoming events"
"Remind me to", "add a reminder", "my tasks", "to-do"
"Find contact", "add a contact", "phone number for"
"Schedule a meeting", "find a time", "when am I free"
"Daily briefing", "what's today look like"
"Birthday", "anniversaries"

Do NOT activate for:

Apple Notes (not supported — CalDAV only)
Apple Mail or iMessage
iCloud Drive or file storage
Apple Music, Photos, or other non-PIM services
Local macOS Calendar.app scripting (Pear works cross-platform via API)

### Prerequisites

Required Environment Variable:

PEAR_API_KEY — Your Pear API key (format: pear_sk_...)

Sign up at pearmcp.com
Generate an API key from the dashboard
Connect your iCloud account (requires an app-specific password)

Optional:

PEAR_MCP_URL — Custom endpoint URL (defaults to https://pearmcp.com/api/mcp)

### Events (8 tools)

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

### Reminders (4 tools)

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

### Contacts (9 tools)

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)

### Briefing (1 tool)

ToolDescriptionpear_get_daily_briefingGet today's events and pending reminders in one call. Enriches attendees with contact data.

### Scheduling (1 tool)

ToolDescriptionpear_find_best_timeAI-scored optimal meeting slots. Considers work hours, time-of-day preference, day-of-week preference, buffer time, and reminder deadlines.

### Batch Operations (4 tools)

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

### Dates and Times

Always use ISO 8601 format: 2025-06-15T14:30:00Z or 2025-06-15T14:30:00+10:00
Timezone parameter: Pass timezone (IANA format like America/New_York or Australia/Sydney) for user-friendly display times
All-day events: Set isAllDay: true and use date-only format 2025-06-15
Date ranges: pear_list_events requires a timeRange object: { start: "...", end: "..." }

### Creating Events

When creating events, follow this pattern:

If the user doesn't specify a calendar, omit calendarName — Pear auto-selects the default
For recurring events, use the recurrence object: { frequency: "WEEKLY", interval: 1, count: 10 }
For attendees, you can pass names — Pear resolves them against the user's contacts automatically
Use idempotencyKey when retrying to prevent duplicate events
Alarms use minutes before: { action: "display", trigger: 15 } for a 15-minute reminder

### Finding Meeting Times

For 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 commitments
Pass preferences to customize: { timeOfDay: "morning", focusTime: true, workHoursStart: 9, workHoursEnd: 17 }
pear_find_free_slots is simpler — just returns raw available slots without scoring

### Reminders

Reminders are accessed via CalDAV (VTODO protocol) — basic operations work well (title, due date, priority, notes, completion). Modern Apple Reminders features like subtasks, tags, smart lists, and location-based reminders are not available via CalDAV.
Priority values: 1 = high, 5 = medium, 9 = low, 0 = none
To list only incomplete reminders, use includeCompleted: false (default)
Reminder lists are auto-created if they don't exist when using listName

### Contacts

pear_update_contact merges fields — it won't erase data you don't include in the update
Birthday format: YYYY-MM-DD for full date, --MM-DD for year-unknown
Phone/email can be a single string or an array for multiple entries
Contact photos accept Base64 or data URI format

### Virtual Birthdays

Pear 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.

### Daily Briefing

pear_get_daily_briefing is the most efficient way to give the user an overview:

Returns today's events + pending reminders in a single call
Automatically enriches event attendees with contact details (name, email, phone)
Pass timezone for correct day boundaries
Pass date to get a briefing for a different day

### Actions Requiring Care

ActionRiskGuidancepear_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

### Data Safety

Read operations are always safe — listing, searching, and briefings have no side effects
Updates merge, not replace — pear_update_contact preserves fields you don't mention
Batch operations are rate-limited — chunks of 5 with 200ms delays, no need to throttle manually
Never expose the user's PEAR_API_KEY — treat it as a secret

### Error Handling

Error 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

### Error Recovery (Idempotency)

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

### Morning Briefing

User: "What's on my plate today?"
→ Call pear_get_daily_briefing with timezone
→ Summarize events chronologically, then pending reminders

### Schedule a Meeting

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

### Quick Reminder

User: "Remind me to call the dentist tomorrow"
→ Call pear_create_reminder with title and dueDate set to tomorrow

### Contact Lookup

User: "What's Sarah's phone number?"
→ Call pear_search_contacts with query: "Sarah"
→ Return matching contacts with phone numbers

### Bulk Event Creation

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)

### References

Pear Documentation
Apple App-Specific Passwords
CalDAV Protocol (RFC 4791)
CardDAV Protocol (RFC 6352)
IANA Timezone Database
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: AshtonAU
- Version: 1.0.2
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-30T20:28:38.274Z
- Expires at: 2026-05-07T20:28:38.274Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/pear-apple)
- [Send to Agent page](https://openagent3.xyz/skills/pear-apple/agent)
- [JSON manifest](https://openagent3.xyz/skills/pear-apple/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/pear-apple/agent.md)
- [Download page](https://openagent3.xyz/downloads/pear-apple)