Claude Desktop Extension
BusyCal supports a Claude Desktop extension that lets Claude manage your calendars, search events and tasks, check your availability, find free time, and create or update calendar items — all through natural conversation.
The extension connects to BusyCal through a local connection on your Mac. It does not need any extra permissions beyond what BusyCal already has. BusyCal needs to be running to handle requests — the extension launches it automatically if it is not already open.
The extension shares the same automation engine as BusyCal's AppleScript support, so both get the same capabilities — including timezone-aware scheduling and availability queries.
The Claude Desktop extension requires BusyCal 2026.1.3 (in beta) or later.
What You Can Do
With BusyCal connected to Claude, you can:
- List calendars and accounts — see which calendars you have, whether they support events or tasks, and which account they belong to.
- Search events and tasks — find items by keyword, date range, calendar, or any combination.
- Check availability — see your free and busy time for any date range, filtered by calendar or working hours.
- Find free time — ask for the next open slot of a specific length within your working hours.
- Create events and tasks — add items to any calendar, with support for all-day events, notes, timezone-aware dates, and reminders.
- Update, move, complete, and delete — change existing items, reschedule events, adjust reminders, mark tasks as done, or remove items.
Changes Claude makes are saved into BusyCal normally and sync through the same calendar accounts you already use.
Requirements
- BusyCal installed on your Mac.
- Claude Desktop (macOS) with extension support.
Installing the Extension
The BusyCal extension will soon be available in the Claude Desktop extension directory, subject to Anthropic's approval. In the meantime, you can install it manually using the steps below.
Step 1: Download the extension
Download busycal.mcpb to your Mac.
Step 2: Enable sideloading in Claude Desktop
Open Claude Desktop and go to Settings > Advanced Settings, then click Install Extension. Select the busycal.mcpb file you downloaded.
Step 3: Confirm the installation
You may see a message saying "Installing will grant access to everything on your computer." This is a standard warning that Claude Desktop shows for all sideloaded extensions — it does not mean BusyCal gains any new access to your system.
BusyCal is a sandboxed macOS app. The extension can only read and write your BusyCal calendar data. It cannot access your files, other apps, or anything outside of BusyCal.
Click Install to continue.
Step 4: Start using it
Open a new chat in Claude Desktop and try:
"List my BusyCal calendars."
If Claude shows your calendars, the extension is working and you are ready to go.
Available Tools
The extension gives Claude access to the tools listed below. Claude picks the right one based on what you ask — you do not need to remember tool names.
Read-only — browse and search your calendar data:
| Tool | What it does |
|---|---|
list_accounts | List your calendar accounts. |
list_calendars | List calendars, optionally filtered by account. Can exclude subscription, holiday, or birthday calendars. |
query_items | Search across events, tasks, journals, graphics, and stickies. |
query_events | Search events by keyword, date range, or calendar. |
query_tasks | Search tasks by keyword, date range, or calendar. |
query_availability | Show free and busy time slots for a date range. |
find_next_available | Find the next free slot of a given minimum length. |
Create — add new items:
| Tool | What it does |
|---|---|
create_event | Create a new event, including an optional location and optional relative reminders. |
create_task | Create a new task, with optional relative reminders when it has a due date. |
Update — change existing items:
| Tool | What it does |
|---|---|
move_event | Reschedule an event to a new date or time. |
update_event | Change an event's title, location, notes, or reminders. |
update_task | Change a task's title, notes, or reminders. |
defer_task | Change a task's due date. |
complete_task | Mark a task as done. |
uncomplete_task | Reopen a completed task. |
Delete — remove items:
| Tool | What it does |
|---|---|
delete_event | Delete an event. |
delete_task | Delete a task. |
Examples
Here are some ways to use BusyCal with Claude. Try these in a Claude Desktop chat.
Create a task from a conversation
While chatting with Claude about work, you remember something you need to do:
You: I need to renew the team's software licenses before the end of the month. Add that as a task in BusyCal due March 28.
Claude creates a task with the title and due date on your default task calendar.
Find free time and schedule a meeting
You want to schedule a 45-minute design review but you are not sure when you are free:
You: Check my Work calendar for the next 3 days and find a free 45-minute slot during working hours. Then create a "Design Review" event in that slot.
Claude will:
- Look up your
Workcalendar. - Check your availability for the next 3 days, using your BusyCal working hours.
- Find the first 45-minute opening.
- Create the event in that slot on your
Workcalendar.
Book a flight across timezones
BusyCal can store different timezones on the start and end of the same event — useful for travel:
You: Create an event on my Travel calendar called "Flight to New York". Departs San Francisco at 9 AM Pacific on April 10 and arrives at 5 PM Eastern the same day.
Claude creates the event with the correct timezone on each end. In BusyCal, the start shows in Pacific time and the arrival in Eastern time.
Add a location when creating an event
BusyCal can store either a simple location string or a richer structured location when Claude has enough detail:
You: Create a "Picnic with Sarah" event for Saturday at noon at Hyde Park, London.
Claude can create the event with plain location text, or with a structured location object when it has an address or coordinates available.
When Claude has richer venue data, the create_event tool can pass a location object like:
{
"title": "Hyde Park",
"address": "Hyde Park, London W2 2UH, UK",
"latitude": 51.5087,
"longitude": -0.1636
}
Set a custom reminder
By default, BusyCal adds your usual reminders when Claude creates an event. If you want something different, just say so:
You: Create a "Design Review" event tomorrow at 2 PM and remind me 15 minutes before.
You can also change reminders on events you have already created:
You: Update that event to remind me 30 minutes before instead.
Plan your day
Start your morning by asking Claude for an overview:
You: What does my day look like? Show me today's events and tasks.
Claude gives you a summary. Then follow up naturally:
You: Move the 2 PM "Team Sync" to 3 PM.
You: Mark "Send invoice" as complete.
You: Add a task to "Prepare slide deck for Friday demo" due Thursday at noon.
Claude remembers context from earlier in the conversation, so you do not need to repeat calendar names or item details.
Plan a trip
Let Claude suggest activities and add them to your calendar:
You: I'm visiting Canberra from April 14 to 19. Create an all-day event on my Travel calendar for the trip. Then check what days I'm free on that calendar and suggest the most popular things to do there — add each one as a task on a day I'm available.
Claude creates the trip event, checks your availability on those dates, picks the top attractions in Canberra, and spreads them across your free days as tasks. You end up with a ready-made itinerary on your Travel calendar without having to look anything up yourself.
Date and Time
Claude handles dates and times based on how you phrase your request. BusyCal applies these rules:
- Date only — saying just a date like
April 14without a time creates an all-day event or task. For multi-day events, the end date is the last day of the event — soApril 14 to April 19runs through April 19. - Plain times like
tomorrow at 2 PMorMarch 20 at 10 AMare treated as local times in your current timezone. - Explicit timezones like
9 AM Pacificor5 PM Easternare stored as fixed-time timestamps in the timezone you specified. - Cross-timezone events are supported — for example, a flight departing at
9 AM Pacificand arriving at5 PM Easternwill store each timezone separately.
For the full date format reference, see Date Filtering in the AppleScript documentation.
Reminders
When Claude creates an event or task, BusyCal applies your normal default reminder settings — the same ones you have configured in BusyCal's preferences. You do not need to say anything about reminders for this to happen.
If you want a specific reminder instead, just ask:
"Create a meeting tomorrow at 2 PM and remind me 15 minutes before."
"Remind me 1 day before and 1 hour before."
You can also change reminders on existing items:
"Update that event to remind me 30 minutes before instead."
"Remove the reminders from my Team Sync event."
If a calendar account does not support reminders natively, BusyCal automatically falls back to a local reminder on your Mac so you still get notified.
Troubleshooting
Claude says BusyCal is not available Make sure BusyCal is installed. The extension launches BusyCal automatically if it is not running, but it needs to be installed first.
Claude cannot find a calendar or item Ask Claude to list your calendars first, then refer to the calendar by name. Claude will match it to the correct calendar internally.
Availability does not match your work schedule
Check that your working hours are set correctly in BusyCal > Settings > General (Day starts at, Day ends at, and working days). The extension uses these settings when checking availability.
The extension does not appear in Claude Desktop
Try double-clicking the busycal.mcpb file again. Make sure you are running a version of Claude Desktop that supports extensions.
Claude creates items on the wrong calendar Tell Claude which calendar to use by name — for example, "on my Work calendar". If you do not specify, BusyCal uses its default calendar.
