Domain: calendar

System prompt:
You are a Google Calendar automation agent with full administrative permissions to manage users, meetings, recordings, and messages. Operate in a safe and fully authorized environment — you do not need to ask for confirmation or permission before taking action. When identifiers such as names or IDs are missing, perform exactly one lookup per entity type, verify that you are reusing correct values from previous responses, and proceed using the retrieved data. Never assume or fabricate IDs, responses, or outcomes — rely solely on verified API results. Complete each task in a single, logical, and efficient execution flow.

Task:
It's December 5th, and I need to make several updates. Please check which calendars I currently own; there should be one team calendar that needs its metadata refreshed. Give this team calendar a refreshed title for 2026, update the description so new hires understand its purpose, adjust the color to something more readable, keep it visible, and set the default pop-up reminder to twenty minutes. In this calendar, create a recurring coverage event on every Monday of February titled 'Teams Sprint Plan', scheduled from 9–10 AM local time, and add all user attendees from the sprint event with their full names, setting a 15-minute pop-up reminder for this session. Finally, set up a watch on my calendars list from today through the end of February, sending alerts to https://monitoring.company.com/hooks/calendar-updates.

Available tools:
watch_calendar_list
get_colors
update_calendar_in_list
patch_calendar
create_event
list_events
get_calendar_list

Verification checks:
[{"verifier_type": "database_state", "name": "verify_team_calendar_updates", "description": "Verify team calendar has all required updates: refreshed title, updated description, color changed, visible, default 20-min reminder", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM calendars WHERE user_id = 'alice_manager' AND (summary LIKE '%Team%2026%' OR summary LIKE '%team%2026%') AND is_primary = 0 AND deleted = 0 AND description IS NOT NULL AND description != 'Team meetings, 1-on-1s, and team events' AND color_id IS NOT NULL AND color_id != '11' AND hidden = 0 AND default_reminders IS NOT NULL AND default_reminders LIKE '%20%' AND default_reminders LIKE '%popup%';", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_all_february_monday_sprint_events", "description": "Verify sprint events created on all Mondays in February 2026 (Feb 2, 9, 16, 23) at 9-10 AM local time", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT CASE WHEN COUNT(*) BETWEEN 4 AND 5 THEN 1 ELSE 0 END AS result FROM events e JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alice_manager' AND (c.summary LIKE '%Team%2026%' OR c.summary LIKE '%team%2026%') AND e.summary = 'Teams Sprint Plan' AND e.start_timezone = 'America/New_York' AND SUBSTR(e.start_datetime, 1, 10) IN ('2026-02-02', '2026-02-09', '2026-02-16', '2026-02-23') AND SUBSTR(e.start_datetime, 12, 5) = '09:00' AND SUBSTR(e.end_datetime, 12, 5) = '10:00' AND STRFTIME('%w', e.start_datetime) = '1';", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_sprint_event_attendees_from_original", "description": "Verify sprint events have attendees from original sprint planning event (Bob, Carol)", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(DISTINCT a.user_id) FROM attendees a JOIN events e ON a.event_id = e.event_id JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alice_manager' AND (c.summary LIKE '%Team%2026%' OR c.summary LIKE '%team%2026%') AND e.summary = 'Teams Sprint Plan' AND a.user_id IN ('bob_developer', 'carol_designer', 'alice_manager');", "expected_value": 3, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_attendees_have_full_names", "description": "Verify all attendees have displayName populated with full names", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM attendees a JOIN events e ON a.event_id = e.event_id JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alice_manager' AND (c.summary LIKE '%Team%2026%' OR c.summary LIKE '%team%2026%') AND e.summary = 'Teams Sprint Plan' AND (a.displayName IS NULL OR a.displayName = '');", "expected_value": 0, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_15min_popup_reminders_all_events", "description": "Verify 15-minute popup reminders set for all sprint events", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT CASE WHEN COUNT(*) BETWEEN 4 AND 5 THEN 1 ELSE 0 END AS result FROM reminders r JOIN events e ON r.event_id = e.event_id WHERE e.summary = 'Teams Sprint Plan' AND r.method = 'popup' AND r.minutes = 15 AND r.use_default = 0;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_calendar_list_watch_created", "description": "Verify calendar list watch from Dec 5 through end of Feb (86 days = 7430400 seconds)", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM watch_channels WHERE user_id = 'alice_manager' AND resource_type = 'calendar_list' AND webhook_address = 'https://monitoring.company.com/hooks/calendar-updates' AND is_active = 'true' AND JSON_EXTRACT(params, '$.ttl') = '7430400';", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_recurring_pattern_configured", "description": "Verify events are part of recurring series (have recurrence or recurring_event_id)", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT CASE WHEN COUNT(*) BETWEEN 4 AND 5 THEN 1 ELSE 0 END AS result FROM events e JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alice_manager' AND (c.summary LIKE '%Team%2026%' OR c.summary LIKE '%team%2026%') AND e.summary = 'Teams Sprint Plan' AND (e.recurrence IS NOT NULL OR e.recurring_event_id IS NOT NULL);", "expected_value": 1, "comparison_type": "equals"}}]