list_time_entries
Listet Zeiteinträge der Organisation, neueste Startzeit zuerst; filterbar nach Projekt und Aufgabe. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Zeiterfassung“ aktiv.
- projectId
- Optional · string — Nur Einträge dieses Projekts.
- taskId
- Optional · string — Nur Einträge zu dieser Aufgabe.
- limit
- Optional · number — Maximale Anzahl Ergebnisse (Standard 50, höchstens 200).
get_running_timer
Liefert deinen aktuell laufenden Zeiteintrag (ohne Endzeit) in der Organisation oder null, wenn keiner läuft. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Zeiterfassung“ aktiv. Dieses Tool hat keine Parameter.
create_time_entry
Erfasst einen Zeiteintrag für dich. Fehlt endTime, startet ein laufender Timer; sonst wird die Dauer in Sekunden aus Start und Ende berechnet. Das Tool prüft nicht, ob bereits ein Timer läuft. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Zeiterfassung“ aktiv.
- startTime
- Pflicht · string — Beginn als ISO-8601-Zeitpunkt.
- endTime
- Optional · string — Ende (ISO 8601). Weglassen startet einen laufenden Timer.
- description
- Optional · string — Beschreibung der Tätigkeit.
- projectId
- Optional · string — ID des zugeordneten Projekts.
- taskId
- Optional · string — ID der zugehörigen Aufgabe.
stop_timer
Beendet deinen laufenden Timer und berechnet die Dauer. Gesucht wird dein laufender Eintrag ohne Einschränkung auf die Organisation. Gibt es keinen, kommt der Fehler „No running timer found“. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Zeiterfassung“ aktiv.
- endTime
- Optional · string — Ende (ISO 8601). Standard: jetzt.
update_time_entry
Ändert einen Zeiteintrag (Beschreibung, Zeiten, Projekt, Aufgabe) und berechnet die Dauer neu. Einträge mit Abrechnungsstatus reserviert oder abgerechnet (reserved/billed) sind gesperrt. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Zeiterfassung“ aktiv.
- id
- Pflicht · string — ID des Zeiteintrags.
- startTime
- Optional · string — Neuer Beginn (ISO 8601).
- endTime
- Optional · string — Neues Ende (ISO 8601).
- description
- Optional · string — Neue Beschreibung.
- projectId
- Optional · string — ID des zugeordneten Projekts.
- taskId
- Optional · string — ID der zugehörigen Aufgabe.
delete_time_entry
Löscht einen Zeiteintrag. Erfordert mindestens die Rolle Admin und einen Schlüssel mit delete-Scope. Reservierte oder abgerechnete Einträge lassen sich nicht löschen. Voraussetzungen: Rolle Admin oder höher, Schlüssel-Scope „delete“ oder höher, Modul „Zeiterfassung“ aktiv.
- id
- Pflicht · string — ID des Zeiteintrags.
list_calendar_events
Listet anstehende Termine aus dem verbundenen Google Calendar und Outlook-Kalender des aktuellen Nutzers (Google unter events, Outlook unter outlook.events). Ist kein Kalender verbunden, antwortet das Tool mit connected=false und einem Hinweis statt mit einem Fehler. Nur-intern-Termine listet list_meetings. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Kalender“ aktiv.
- maxResults
- Optional · number · Standard: 20 — Maximale Anzahl der Termine (Standard 20, höchstens 50).
create_calendar_event
Legt einen Termin an. Mit calendar wählst du das Ziel: google, outlook oder internal (nur in der App); auto nimmt den verbundenen Google-Kalender, sonst Outlook, sonst intern. Dateien lassen sich als attachments mitgeben und hängen auch am Google-/Outlook-Termin (Google über Drive, Outlook bis 3 MB, sonst Link in der Beschreibung). Ticketnummern und Kontext gehören in die Beschreibung (Notizen). Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Kalender“ aktiv.
- title
- Pflicht · string — Titel des Termins.
- startDateTime
- Pflicht · string — Beginn als ISO-8601-Zeitpunkt mit UTC-Offset oder Z, z. B. 2026-07-01T10:00:00+02:00.
- endDateTime
- Pflicht · string — Ende als ISO-8601-Zeitpunkt mit UTC-Offset oder Z, z. B. 2026-07-01T11:00:00+02:00.
- description
- Optional · string — Optionale Beschreibung des Termins.
- addMeet
- Optional · boolean · Standard: false — Fügt dem Termin einen Online-Meeting-Link hinzu (Google Meet bzw. Teams).
- calendar
- Optional · string · auto | google | outlook | internal · Standard: auto — Ziel-Kalender: google, outlook oder internal (nur in der App).
- calendarId
- Optional · string — Konkrete Google-/Outlook-Kalender-ID. Standard: der in den Kalender-Einstellungen markierte Kalender.
- attachments
- Optional · array — Bis zu 5 Dateien (je 10 MB) als Objekte mit name sowie text oder contentBase64 (und optional mimeType). Text eignet sich für Zusammenfassungen und Ticketlisten, Base64 nur für kleine Binärdateien.
update_calendar_event
Bearbeitet einen bestehenden Termin im verbundenen Google- oder Outlook-Kalender. Nur übergebene Felder ändern sich. source, eventId und calendarId stammen aus list_calendar_events. Termine, die create_calendar_event mit dem Meetings-Modul angelegt hat, sind App-Meetings und werden mit update_meeting geändert. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Kalender“ aktiv.
- source
- Pflicht · string — Welcher Kalender: google oder outlook.
- eventId
- Pflicht · string — Die Event-id aus list_calendar_events.
- calendarId
- Optional · string — Die calendarId des Events aus list_calendar_events (für Termine außerhalb des Hauptkalenders).
- title
- Optional · string — Neuer Titel.
- startDateTime
- Optional · string — Neuer Beginn, ISO 8601 mit UTC-Offset oder Z.
- endDateTime
- Optional · string — Neues Ende, ISO 8601 mit UTC-Offset oder Z.
- description
- Optional · string — Ersetzt die Notizen des Termins.
- location
- Optional · string — Ort.
- notifyGuests
- Optional · boolean — Nur Google: Update-Mails an Gäste senden (Standard false).
add_event_attachment
Hängt eine Datei nachträglich an einen bestehenden Google- oder Outlook-Termin. Die Datei wird in der Organisation gespeichert (und im Kalender in der Dateiliste des Termins angezeigt) und an den Provider-Termin gehängt (Google über Drive, Outlook bis 3 MB, sonst Hinweis in der Beschreibung). Echte Dateien per create_attachment_upload_url mit source/eventId. App-Meetings nutzen add_meeting_attachment. Voraussetzungen: Rolle Member oder höher, Schlüssel-Scope „write“ oder höher, Modul „Kalender“ aktiv.
- source
- Pflicht · string — Welcher Kalender: google oder outlook.
- eventId
- Pflicht · string — Die Event-id aus list_calendar_events.
- calendarId
- Optional · string — Die calendarId des Events aus list_calendar_events (für Termine außerhalb des Hauptkalenders).
- name
- Pflicht · string — Dateiname mit Endung.
- mimeType
- Optional · string — MIME-Typ, z. B. application/pdf.
- text
- Optional · string — Textinhalt der Datei.
- contentBase64
- Optional · string — Dateiinhalt als Base64 (nur kleine Dateien).
list_event_attachments
Listet die Dateien, die in der App an einem Google- oder Outlook-Termin hängen. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Kalender“ aktiv.
- source
- Pflicht · string — Welcher Kalender: google oder outlook.
- eventId
- Pflicht · string — Die Event-id aus list_calendar_events.
- calendarId
- Optional · string — Die calendarId des Events aus list_calendar_events (für Termine außerhalb des Hauptkalenders).
find_team_free_slots
Sucht die frühesten kommenden freien Zeitfenster, die du mit deinen Teammitgliedern gemeinsam hast – berücksichtigt werden verbundene Google-, Outlook- und iCal-Kalender und nur Mitglieder, die ihre Verfügbarkeit geteilt haben (Opt-in). Liefert slots und consideredTeammates. Erfordert einen Organisationskontext. Voraussetzungen: Rolle Viewer oder höher, Schlüssel-Scope „read“ oder höher, Modul „Kalender“ aktiv.
- durationMin
- Optional · number · Standard: 30 — Länge des Zeitfensters in Minuten.
- days
- Optional · number · Standard: 10 — Wie viele Kalendertage im Voraus gesucht wird (höchstens 45).
- maxResults
- Optional · number · Standard: 5 — Maximale Anzahl der Zeitfenster (höchstens 20).
- startHour
- Optional · number · Standard: 9 — Beginn der Geschäftszeit in lokaler Zeit (0–23).
- endHour
- Optional · number · Standard: 18 — Ende der Geschäftszeit in lokaler Zeit (0–23).
- teammateUserIds
- Optional · string[] — Beschränkt die Suche auf diese Teammitglieder (Supabase-Nutzer-IDs) statt auf alle, die ihre Verfügbarkeit teilen.
Häufige Stolperfallen
Zeitangaben mit Offset senden
Sende Zeitpunkte als ISO 8601 mit UTC-Offset oder Z (z. B. 2026-09-26T09:00:00+02:00). Ohne Offset hängt die Interpretation von der Servereinstellung ab.
Timer gelten pro Person
get_running_timer und stop_timer beziehen sich auf deinen Timer. stop_timer sucht ihn ohne Einschränkung auf die Organisation.
Gesperrte Einträge
Reservierte oder abgerechnete Zeiteinträge lassen sich weder ändern noch löschen. Ein laufender Timer wird beim Anlegen nicht geprüft: create_time_entry startet auch dann einen weiteren, wenn schon einer läuft.
Kalender nicht verbunden
list_calendar_events meldet connected=false, create_calendar_event liefert einen Fehler. Verbinde zuerst den Kalender in der Webapp.
