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