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:
I need to implement our 2025 Compliance Training Program. Please create the main training series, consisting of a monthly 'Data Security Refresher' held every first Tuesday at 2-4 PM EST starting September 4, 2025, and continuing through December 4, 2025. Include mandatory attendance for adrian.mcintyre64@servicenow.com and alicia.foster33@servicenow.com, with their full details. Set email reminders for 24 hours and 1 hour before each session, and provide small descriptions for all events. Cancel any conflicting events, and set up event watches on the calendar to monitor for cancellations or reschedules, notifying https://company.com/api/webhooks/calendar-events/training-admin via webhook using the token 'compliance-training-monitor-2025', for activity occurring from September through the end of December.

Available tools:
watch_events
create_event
patch_event
get_calendar_list
get_user_by_email
list_events

Verification checks:
[{"verifier_type": "database_state", "name": "verify_october_training_event", "description": "Verify October training event created on first Tuesday (Oct 7, 2025) 2-4 PM EST", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM events e JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alexander_mitchell' AND e.summary = 'Data Security Refresher' AND SUBSTR(e.start_datetime, 1, 10) = '2025-10-07' AND SUBSTR(e.start_datetime, 12, 5) = '14:00' AND SUBSTR(e.end_datetime, 12, 5) = '16:00' AND e.start_timezone = 'America/New_York' AND e.description IS NOT NULL AND e.description != '' AND e.status = 'confirmed';", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_november_training_event", "description": "Verify November training event created on first Tuesday (Nov 4, 2025) 2-4 PM EST", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM events e JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alexander_mitchell' AND e.summary = 'Data Security Refresher' AND SUBSTR(e.start_datetime, 1, 10) = '2025-11-04' AND SUBSTR(e.start_datetime, 12, 5) = '14:00' AND SUBSTR(e.end_datetime, 12, 5) = '16:00' AND e.start_timezone = 'America/New_York' AND e.description IS NOT NULL AND e.description != '' AND e.status = 'confirmed';", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_december_training_event", "description": "Verify December training event created on first Tuesday (Dec 2, 2025) 2-4 PM EST", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM events e JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alexander_mitchell' AND e.summary = 'Data Security Refresher' AND SUBSTR(e.start_datetime, 1, 10) = '2025-12-02' AND SUBSTR(e.start_datetime, 12, 5) = '14:00' AND SUBSTR(e.end_datetime, 12, 5) = '16:00' AND e.start_timezone = 'America/New_York' AND e.description IS NOT NULL AND e.description != '' AND e.status = 'confirmed';", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_adrian_attendee_all_sessions", "description": "Verify adrian.mcintyre64@servicenow.com is mandatory attendee on all 3 training sessions", "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 = 'alexander_mitchell' AND e.summary = 'Data Security Refresher' AND a.user_id = 'adrian_mcintyre64' AND a.displayName = 'Adrian Mcintyre' AND a.optional = 0 AND a.responseStatus IN ('needsAction', 'accepted');", "expected_value": 3, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_alicia_attendee_all_sessions", "description": "Verify alicia.foster33@servicenow.com is mandatory attendee on all 3 training sessions", "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 = 'alexander_mitchell' AND e.summary = 'Data Security Refresher' AND a.user_id = 'alicia_foster33' AND a.displayName = 'Alicia Foster' AND a.optional = 0 AND a.responseStatus IN ('needsAction', 'accepted');", "expected_value": 3, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_24hour_email_reminders", "description": "Verify 24-hour (1440 minutes) email reminders set for all training events", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM reminders r JOIN events e ON r.event_id = e.event_id JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alexander_mitchell' AND e.summary = 'Data Security Refresher' AND r.method = 'email' AND r.minutes = 1440 AND r.use_default = 0;", "expected_value": 3, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_1hour_email_reminders", "description": "Verify 1-hour (60 minutes) email reminders set for all training events", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM reminders r JOIN events e ON r.event_id = e.event_id JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alexander_mitchell' AND e.summary = 'Data Security Refresher' AND r.method = 'email' AND r.minutes = 60 AND r.use_default = 0;", "expected_value": 3, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_conflicting_events_cancelled", "description": "Verify conflicting events during training times were cancelled (status = cancelled)", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM events e JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alexander_mitchell' AND e.summary != 'Data Security Refresher' AND e.status = 'cancelled' AND ((SUBSTR(e.start_datetime, 1, 10) = '2025-10-07' AND SUBSTR(e.start_datetime, 12, 5) < '16:00' AND SUBSTR(e.end_datetime, 12, 5) > '14:00') OR (SUBSTR(e.start_datetime, 1, 10) = '2025-11-04' AND SUBSTR(e.start_datetime, 12, 5) < '16:00' AND SUBSTR(e.end_datetime, 12, 5) > '14:00') OR (SUBSTR(e.start_datetime, 1, 10) = '2025-12-02' AND SUBSTR(e.start_datetime, 12, 5) < '16:00' AND SUBSTR(e.end_datetime, 12, 5) > '14:00'));", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_event_watch_channel_created", "description": "Verify event watch channel monitoring Sep-Dec 2025 (10540800 seconds = 122 (30+31+30+31) days)", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM watch_channels wc JOIN calendars c ON wc.calendar_id = c.calendar_id WHERE c.user_id = 'alexander_mitchell' AND wc.resource_type = 'event' AND wc.webhook_address = 'https://company.com/api/webhooks/calendar-events/training-admin' AND wc.webhook_token = 'compliance-training-monitor-2025' AND wc.is_active = 'true' AND JSON_EXTRACT(wc.params, '$.ttl') = '10540800';", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_total_training_events_created", "description": "Verify exactly 3 training events were created (Oct, Nov, Dec)", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) FROM events e JOIN calendars c ON e.calendar_id = c.calendar_id WHERE c.user_id = 'alexander_mitchell' AND e.summary = 'Data Security Refresher' AND e.start_datetime >= '2025-09-04' AND e.start_datetime < '2025-12-04';", "expected_value": 3, "comparison_type": "equals"}}]