8.5 KiB
8.5 KiB
name, description
| name | description |
|---|---|
| google-calendar | Read, search, create, update, and delete Google Calendar events across the Family Calendar and Regensburg & more Calendar. Supports visual color-coding (Arzt=Rot, Mila=Gelb, Moritz=Blau, Amelie=Grün, Familie=Orange), conflict & travel-buffer checking, address locations, and packing checklists. |
📅 Google Calendar (Familie & Regensburg)
Full two-way Google Calendar integration for Moritz, Amelie, and family, managing two distinct calendars via a dedicated GCP Service Account:
- 👨👩👧 Familienkalender (
family):- Primary personal & family schedule: doctor visits, daycare/kindergarten, birthdays, visits, work trips, family outings, shared commitments.
- Default calendar for all personal appointment requests.
- 🏛️ Regensburg & mehr (
regensburg):- Local city life: Dult, Bürgerfest, concerts, theatre, local festivals, markets, exhibitions.
- Keeps the family calendar clean and uncluttered while keeping track of exciting local events.
🎨 Farbleitsystem (Visual Color Coding)
OpenClaw assigns Google Calendar colors automatically based on event titles or explicit categories:
| Farbe | colorId |
Kategorie / Person | Typische Stichwörter |
|---|---|---|---|
| 🔴 Rot (Tomate) | 11 |
Arzt & Gesundheit | Arzt, Kinderarzt, Zahnarzt, U1..U9, Impfung, Klinik, Physio, Blutabnahme |
| 🟡 Gelb (Banane) | 5 |
Mila & Kinder | Mila, Kita, Kindergarten, Krabbelgruppe, Spielplatz, Babyschwimmen, Kinderturnen |
| 🔵 Blau (Heidelbeere) | 9 |
Moritz | Moritz, Arbeit, Büro, Job, Dienstreise |
| 🟢 Grün (Salbei) | 2 |
Amelie | Amelie, Amy |
| 🟠 Orange (Mandarine) | 6 |
Familie & Feiern | Familie, Ausflug, Urlaub, Feier, Party, Geburtstag, Besuch, Oma, Opa, Essen |
| ⚪ Grau (Graphit) | 8 |
Haushalt & Wartung | Haushalt, Auto, TÜV, Werkstatt, Müll, Handwerker |
🛠️ MCP Tools & CLI Fallbacks
Important
OpenClaw Tool Naming: In OpenClaw, MCP tools from the
calendarserver are prefixed withcalendar__:
calendar__calendar_list_eventscalendar__calendar_check_conflictscalendar__calendar_create_eventcalendar__calendar_update_eventcalendar__calendar_delete_eventcalendar__calendar_move_eventcalendar__calendar_find_free_slotscalendar__calendar_get_eventIf MCP execution is unavailable or fails with
Tool not found, ALWAYS fall back to the direct Python CLI:# Suchen: /home/node/.openclaw/mcp-venv/bin/python3 /home/node/mop-skills/mop-skills/skills/google-calendar/scripts/google_calendar.py list --calendar regensburg --query "Suchbegriff" # Löschen (inkl. Serie): /home/node/.openclaw/mcp-venv/bin/python3 /home/node/mop-skills/mop-skills/skills/google-calendar/scripts/google_calendar.py delete <event_id> --calendar regensburg --series
1. calendar__calendar_list_events(calendar="family"|"regensburg", time_min=None, time_max=None, query=None, category=None, color_id=None, max_results=25):
- Lists appointments within a timeframe including start/end, color name, location, recurrence status, and description.
time_min/time_max: ISO format (e.g.2026-09-20or2026-09-20T08:00:00). Defaults to start of today until 30 days ahead. Automatically expands recurring events into individual occurrences.category/color_id: Filter by person or category (e.g.category="arzt"orcolor_id="11").query: Text filter to search summaries and descriptions.
2. calendar__calendar_check_conflicts(calendar="family"|"regensburg", start_time, end_time=None, buffer_minutes=15):
- Proactively checks if a proposed slot conflicts with existing events or leaves less than
buffer_minutestravel buffer. - Returns
has_conflict,direct_conflicts,has_buffer_warning, andbuffer_warnings.
3. calendar__calendar_create_event(calendar="family"|"regensburg", summary, start_time, end_time=None, recurrence=None, show_as_busy=True, transparency=None, reminder_minutes=None, category=None, color_id=None, description=None, location=None, all_day=False, inclusive_end=True, check_conflicts=True):
- Adds a new appointment with automatic color coding, recurrence, transparency, phone reminders, and overlap detection.
recurrence: Standard RFC 5545 rule or shortcuts:recurrence="RRULE:FREQ=WEEKLY;BYDAY=SA"- Shortcuts:
"weekly","daily","monthly","workdays".
show_as_busy/transparency:- For Regensburg city events, festivals, exhibitions: set
show_as_busy=Falseortransparency="transparent"so they are visible on the calendar without blocking family schedule slots or triggering false conflict warnings!
- For Regensburg city events, festivals, exhibitions: set
reminder_minutes: List of popup alert minutes before event (e.g.[15, 60]or1440for 1 day before).inclusive_end: For multi-day all-day events, automatically includes the end date without off-by-one errors.
4. calendar__calendar_update_event(calendar="family"|"regensburg", event_id, summary=None, start_time=None, end_time=None, recurrence=None, show_as_busy=None, transparency=None, reminder_minutes=None, update_series=False, category=None, color_id=None, description=None, location=None):
- Updates fields, recurrence, transparency, reminders, or recolors an existing event.
update_series=True: If event is an occurrence of a series, updates the entire master series instead of just this single occurrence.
5. calendar__calendar_delete_event(calendar="family"|"regensburg", event_id, delete_series=False):
- Deletes an event.
delete_series=True: If event is part of a recurring series, deletes the entire recurring series instead of just this single occurrence.
6. calendar__calendar_move_event(event_id, source_calendar="family", destination_calendar="regensburg"):
- Moves an event atomically from one calendar to another.
7. calendar__calendar_find_free_slots(calendar="family"|"regensburg"|"both", time_min=None, time_max=None, duration_minutes=60, day_start_hour=8, day_end_hour=20):
- Queries
freebusyto find open, available time windows across calendars.
8. calendar__calendar_get_event(calendar="family"|"regensburg", event_id):
- Retrieves full event metadata.
🧭 Routing & Best Practices for OpenClaw
⚠️ Strikte Guardrails:
- STRIKTE REGEL: NIEMALS ERFOLG VORTÄUSCHEN (NO FAKE CONFIRMATIONS)! Wenn ein Tool fehlschlägt oder
not foundmeldet, behaupte niemals, dass der Termin gelöscht oder erstellt wurde! Nutze den CLI-Fallback oder berichte den Fehler wahrheitsgemäß. - STRIKTE REGEL: KEINE MÄRKTE IN DEN KALENDER EINTRAGEN! Weder Wochenmärkte (Katharinenmarkt, Neupfarrplatz, etc.) noch Bio-Bauernmärkte dürfen in die Kalender eingetragen werden. Dies überfrachtet den Kalender.
1. Conflict Guard (Terminkonflikte & Puffer)
- When a user asks to add an event, check
calendar__calendar_check_conflictsor inspect theconflict_warningfromcalendar__calendar_create_event. - If an overlap or tight buffer (< 15 Min.) exists, explicitly warn the user.
2. Informational Events vs. Family Commitments (Transparency)
- When adding city events, festivals, or exhibitions to the
regensburgcalendar, always passshow_as_busy=False(ortransparency="transparent"). - This keeps the event clearly visible on the calendar while allowing family appointments to be scheduled in parallel without false conflict alerts.
3. Recurring Series (RRULE)
- When the user asks to add recurring appointments (e.g. sports training, trash collection):
- Use
recurrence="RRULE:FREQ=WEEKLY;BYDAY=..."or convenient shortcuts.
- Use
4. Smart Location & Google Maps Integration
- If a place or venue is mentioned (e.g. "Dr. Müller in Prüfening", "Westbad"):
- Resolve the full address or ask the user, and store it in
location. - This activates Google Maps departure alerts on their smartphone.
- Resolve the full address or ask the user, and store it in
5. Proaktive Rückfragen & Checklisten (Mental Load Entlastung)
- When booking medical/baby appointments (e.g. Kinderarzt, U-Untersuchungen, Zahnarzt):
- Auto-generate or suggest a helpful checklist in
description:📋 Mitnehmen: - U-Heft & Impfpass - Versichertenkarte - 2x Wickelzeug & Schnuller - Suggest a reminder (
reminder_minutes=[60, 1440]):„Termin eingetragen! 🏥 Ich habe eine Erinnerung 1 Stunde vorher eingerichtet. Soll ich noch eine Packliste im Termin hinterlegen?“
- Auto-generate or suggest a helpful checklist in
6. Timezone & DateTime Precision
- All dates and times operate in Europe/Berlin (
CET/CEST).