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 want to clean up and manage my schedules more effectively. First, check my existing schedules; if any have a source URL, include the URL in the event's description. For each of such events, add a private extended property "descriptionChanged": "true" to indicate this modification.

Next, I'll be out of office from October 7, 2025, for 2 months. Mark this out-of-office period clearly on my primary calendar. If any schedules fall within this period, move them exactly one week forward. However, if moving a schedule forward by one week still places it within my out-of-office period, set its status to canceled.

Available tools:
patch_event
get_calendar_list
create_event
list_events
patch_event
patch_event
list_events

Verification checks:
[{"verifier_type": "database_state", "name": "Desc Includes Source URL", "description": "Verify event description includes source URL", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) AS count FROM events WHERE event_id = 'event-corrected-006' AND description LIKE '%' || json_extract(source, '$.url') || '%'", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "Extended Props Preserved", "description": "Verify private flag added and shared props unchanged", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT CASE WHEN EXISTS (SELECT 1 FROM extended_properties WHERE event_id = 'event-corrected-006' AND scope = 'private' AND json_extract(properties, '$.dealValue') = '$250000' AND json_extract(properties, '$.clientPriority') = 'high' AND json_extract(properties, '$.preparationTime') = '2 hours' AND json_extract(properties, '$.descriptionChanged') = 'true') AND EXISTS (SELECT 1 FROM extended_properties WHERE event_id = 'event-corrected-006' AND scope = 'shared' AND json_extract(properties, '$.meetingType') = 'client_demo' AND json_extract(properties, '$.department') = 'sales') THEN 1 ELSE 0 END AS count", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "OOO Event Created", "description": "Verify out-of-office period event", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) AS count FROM events WHERE calendar_id = 'dave-primary' AND start_datetime LIKE '%2025-10-07%' AND end_datetime LIKE '%2025-12-07%' AND eventType = 'outOfOffice'", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "Client Demo Canceled", "description": "Verify client demo marked canceled", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) AS count FROM events WHERE event_id = 'event-corrected-006' AND status = 'cancelled'", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "Birthday Canceled", "description": "Verify birthday event canceled", "gym_name": "gym-calendar", "validation_config": {"query": "SELECT COUNT(*) AS count FROM events WHERE event_id = 'event-corrected-005' AND status = 'cancelled'", "expected_value": 1, "comparison_type": "equals"}}]