Claude Desktop Extension
BusyCal supports a Claude Desktop extension (built on MCP) 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.
This feature requires BusyCal version 2026.1.3 or later and the BusyCal extension installed in Claude Desktop. See the installation steps below to set up both.
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. Results include notes, URLs, and tags when present.
- Get a single item — retrieve the full details of a specific event or task by its ID.
- Read what you have selected — pull the events or tasks you currently have selected in the BusyCal window so Claude can act on them without re-searching.
- 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, named IANA timezone identifiers for cross-timezone scheduling, and reminders.
- Duplicate events and tasks — copy an existing item, optionally onto a different calendar.
- Open items in BusyCal — ask Claude to show you a specific event or task and BusyCal will reveal it in the window with the Info Panel open.
- Update, move, complete, and delete — change existing items, reschedule events, adjust notes, URLs, tags, and 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 v0.1.8 to your Mac.
Step 2: Enable sideloading in Claude Desktop
Open Claude Desktop and go to Settings > Extensions > 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. |
get_item | Get a single event or task by its ID. Returns the full item record including notes. |
selected_items | Get the events, tasks, or other items currently selected in the BusyCal window. Returns the same fields as query_items. |
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. |
Navigate — reveal items in BusyCal:
| Tool | What it does |
|---|---|
open_item | Open a specific event or task in the BusyCal window. |
Create — add new items:
| Tool | What it does |
|---|---|
create_event | Create a new event, with optional location, reminders, and IANA time zone identifiers for cross-timezone scheduling. |
create_task | Create a new task, with optional due date, reminders, and an IANA time zone identifier. |
Duplicate — copy existing items:
| Tool | What it does |
|---|---|
duplicate_item | Duplicate an event or task, optionally onto a different calendar. For recurring items, defaults to duplicating only the selected occurrence. |
Update — change existing items:
| Tool | What it does |
|---|---|
move_event | Reschedule an event to a new date or time, with optional IANA time zone identifier. |
update_event | Change an event's title, location, notes, URL, location URL, tags, My Tags, or reminders. |
update_task | Change a task's title, notes, URL, location URL, tags, My Tags, or reminders. |
defer_task | Change a task's due date, with optional IANA time zone identifier. |
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 IANA 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 named timezone identifiers (America/Los_Angeles for departure, America/New_York for arrival). In BusyCal, the start shows in Pacific time and the arrival in Eastern time — using proper named timezones rather than raw UTC offsets.
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.
Open an item in BusyCal
If Claude mentions an event or task and you want to see it in BusyCal, just ask:
You: Show me that Design Review event in BusyCal.
Claude uses open_item to reveal the event in the BusyCal window with the Info Panel open, so you can review or edit it directly.
Act on what you have selected
If you already have an event or task selected in BusyCal, Claude can pick it up directly without you needing to describe it again:
You: Move what I have selected to next Tuesday at 10 AM.
You: Add a 15-minute reminder to the task I have selected and add a note saying "bring Q1 numbers".
Claude reads the current BusyCal selection with selected_items, then routes the change through the appropriate update, move, or defer tool.
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.
Duplicate an event to another calendar
You have a recurring standup on your Work calendar and want a copy on your Personal calendar:
You: Duplicate next Monday's "Team Standup" to my Personal calendar.
Claude uses duplicate_item to copy just that occurrence onto the target calendar.
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 BusyCal timezone. - Named timezones — when you mention a timezone like
9 AM Pacificor5 PM Eastern, Claude uses the correct IANA timezone identifier (e.g.,America/Los_Angeles,America/New_York). BusyCal stores the named timezone on the event, so it displays as "Pacific Time" or "Eastern Time" rather than a raw UTC offset. - Cross-timezone events are fully supported — for example, a flight departing at
9 AM Pacificand arriving at5 PM Easternstores each named timezone separately on the start and end of the event.
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
Please ensure BusyCal.app is installed under /Applications (or /Applications/Setapp if you're a Setapp subscriber) - the MCP connection will not
work if the app is installed in any other location on disk
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.
Claude reports "automation socket isn't available" This error means the extension cannot connect to BusyCal's local automation service. First, confirm you are running BusyCal 2026.1.3 or later (check BusyCal > About BusyCal). If you are already on the correct version and still see this error, re-download and reinstall both BusyCal and the extension:
- Direct purchase — download and re-install the latest version from here.
- Setapp — quit BusyCal, then delete and re-download BusyCal from the Setapp store.
- Mac App Store — delete the app and re-download it from the App Store. Deleting the app will not delete your data as long as you don't use a 3rd party Cleaner tool.
After reinstalling BusyCal, re-install the extension in Claude Desktop (see Step 2 above), quit and reopen Claude Desktop, then try again in a new chat.
