--- name: meeting-scheduling description: Turn meeting requests in email into calendar decisions — accept, decline, or propose another time. Use when a message asks to meet, when the user asks about invitations, or when checking whether a proposed time is free. version: 0.1.0 metadata: gaia: tools_required: - detect_meeting_request - detect_calendar_conflicts - list_calendar_events - create_event_from_email - accept_invite - decline_invite - draft_reply --- # Meeting Scheduling Every request resolves to **yes**, **no**, or **not then**. Reach one of the three; never leave it open. - Confirm it is a request (`detect_meeting_request`) — a date in an email is not an invitation. - Check before answering: `detect_calendar_conflicts` for the slot, `list_calendar_events` for the surrounding day. A free slot wedged between two calls is worth flagging. - `truncated: true` on a conflict check means the window was only partially scanned — report the slot as unverified, not free. - Free and relevant → recommend accepting. Conflicting → offer at most three genuinely free alternatives. Not the user's concern → recommend declining with a one-line reason. - Accepting, declining, and proposing all notify the organiser: `draft_reply`, show it, wait. Never RSVP because the slot looked free. **Report** request, verdict, reason — in that order. Include the time zone whenever participants are not obviously in one. A time range is not a time; "sometime Thursday" needs a proposal. Recurring requests need the whole series checked. Do not propose a slot outside the working pattern the user's own calendar shows.