Caly: finding meeting times
Answer "when can this meeting happen" from the user's live Caly event types, schedules and availability.
Connecting and calling the tools
Every tool in this skill comes from the caly MCP server, the Caly connector, and is written here as caly:<tool>.
- Tools listed by name: call them directly, for example
caly:find_available_slots. - Only
caly:search_toolsandcaly:execute_typescriptlisted (Code Mode, the default): callcaly:search_toolsfirst, then call each tool insidecaly:execute_typescriptasexternal_<tool>(for exampleexternal_find_available_slots); the program mustreturnits result. Batch independent reads withPromise.all. - "Tool not found": switch to the Code Mode route instead of retrying the direct call.
- No
calytools at all: Caly is not connected yet. Add the server as shown in https://github.com/DevinoSolutions/mcp-servers/tree/main/caly#install; it signs in with OAuth on first use.
A refused call throws an Error whose message starts with its code, for example INVALID_INPUT:.
Tools you will use
caly:whoami: the account this connection acts as, with its time zone, week start and default schedule. Takes no input.caly:list_event_types: the user's event types (the bookable meeting kinds) with id, slug, title, length and booking URL, hidden ones included.caly:get_event_type: one event type in full: lengths, locations, booking questions, buffers, minimum notice and schedule.caly:list_schedules: the user's availability schedules: working hours per weekday, date overrides, time zone, and which one is the default.caly:find_available_slots: the free start times for an event type between two dates (eventTypeId,start,end, optionaltimeZoneandduration), grouped by date.
Workflow
- Call
caly:whoamiandcaly:list_event_typestogether. Use the account'stimeZoneunless the user names another one, and say which time zone you are using. - Pick the event type. Match the user's words to a title or length ("30 minute call" → the 30-minute type). If two could fit, or none does, list the event types and ask which one.
- Turn the user's range ("next week", "Thursday afternoon") into concrete
startandenddates in that time zone. If no range is given, use the next 7 days. - Call
caly:find_available_slotswith the event type id, the range and the time zone. If the user wants a length the event type allows (lengthInMinutesOptions), pass it asduration. - Present a short list of options grouped by day, in the user's time zone, not every slot. If the user asked for a part of the day, filter to it.
- If there are no slots, call
caly:list_schedulesand explain why (outside working hours, a date override, minimum notice fromcaly:get_event_type), then offer the nearest free day. - Offer next steps: book one of the slots with the
booking-meetingsskill, or share the event type'sbookingUrlso the other person picks a time.
Rules
- This skill only reads. Never call
caly:create_booking,caly:reschedule_bookingorcaly:cancel_bookingfrom it. - Report only slots that
caly:find_available_slotsreturned. Never infer free time from the schedule alone; bookings and buffers can block it. - Always state the time zone next to every time you show.
