Schedule Meeting
Find available time slots and create a Google Calendar event. Requires meetings persona for google_calendar_* tools.
Inputs
| Input | Type | Default | Purpose |
|---|---|---|---|
title |
string | required | Meeting title |
duration_minutes |
int | 30 | Meeting duration |
attendees |
string | - | Comma-separated emails |
preferred_time |
string | - | e.g. "tomorrow 2pm", "next Monday morning" |
days_ahead |
int | 5 | Days to search for slots |
description |
string | "" | Meeting agenda |
Workflow
1. Load Persona
persona_load("meetings")— Google Calendar tools
2. Check Known Issues
check_known_issues("google_calendar", "")
3. Verify Calendar
google_calendar_status— verify API accessible
4. Get Availability
- With attendees:
google_calendar_check_mutual_availability(attendee_email=attendees, days_ahead, duration_minutes) - Without attendees:
google_calendar_check_mutual_availability(attendee_email="primary", days_ahead, duration_minutes)
5. List Existing Events (optional)
google_calendar_list_events(days=days_ahead)— busy times
6. Create Meeting
google_calendar_quick_meeting(title, attendee_email=attendees or "", when=selected_time, duration_minutes)
7. Post-Action
memory_session_log("Scheduled meeting: {title}", "Time: {selected_time}, Duration: {duration_minutes}min")
Key Details
- Time selection: Use
preferred_timeif provided; else first available slot from mutual availability - OAuth: If "unauthorized" or "token" in output →
learn_tool_fix("google_calendar_schedule_meeting", "oauth token", "Token expired", "Run setup-gmail to refresh OAuth") - Output: Report success with title, time, duration, attendees; or list alternatives if no slot found