# Für KI-Agenten

Coding-Agenten wie Claude Code, Codex oder Cursor bauen den Abo-Button oder eine ganze Integration in wenigen Minuten ein, wenn sie die richtigen Quellen haben.

## Copy-Prompt: Button einbauen

Ersetze die Kalender-ID und gib den Prompt deinem Agenten:

```text
Füge auf meiner Website einen Abo-Button für meinen Kalender cal_XXXXXXXXXXXX ein.

Nutze dieses Snippet von Kalender Sync:
<div class="ks-subscribe" data-calendar="cal_XXXXXXXXXXXX"></div>
<script src="https://app.kalender-sync.de/embed/v1/button.js" async></script>

- Setze den Button dorthin, wo Besucher unsere Termine sehen.
- Passe die Farbe mit data-color="#rrggbb" an unsere Markenfarbe an.
- Binde das Script nur einmal pro Seite ein.
- Falls die Seite eine Content-Security-Policy hat, erlaube script-src https://app.kalender-sync.de.
- Falls die Seite Inhalte erst später rendert (SPA, Page-Builder), rufe danach window.KalenderSync?.mountButtons() auf.
- Falls wir eigenes Analytics nutzen, erfasse Klicks über das Event ks:subscribe (event.detail.app).

Doku: https://docs.kalender-sync.de/api/button/
```

## Copy-Prompt: Integration bauen

```text
Baue eine Integration, die unsere Termine an die Kalender Sync Publisher API schickt.

- OpenAPI: https://api.kalender-sync.de/v1/openapi.json
- Doku: https://docs.kalender-sync.de/api/ (Markdown: Seiten-URL ohne abschließenden Schrägstrich plus .md)
- Authentifizierung: Authorization: Bearer <API-Key>. Den Key nur serverseitig speichern, nie im Frontend.
- Termine mit PUT /v1/publisher/calendars/{calendar_id}/events/{external_id} schreiben, external_id ist unsere eigene ID.
- Beim Löschen oder Depublizieren DELETE auf denselben Pfad.
- Für den Erstimport und einen täglichen Abgleich den Full Sync nutzen (syncs, batch mit sync_id, complete).
- Fehler sind application/problem+json; "code" auswerten, nicht "detail".
- Bei 429 den Header Retry-After beachten.
- Teste zuerst mit einem Sandbox-Key (ks_test_).
```

## Quellen für Agenten

- **OpenAPI 3.1:** [https://api.kalender-sync.de/v1/openapi.json](https://api.kalender-sync.de/v1/openapi.json), öffentlich, ohne Key.
- **Jede Doku-Seite als Markdown:** Hänge an die URL ohne abschließenden Schrägstrich `.md` an, zum Beispiel `https://docs.kalender-sync.de/api/events.md`. Oben auf jeder Seite gibt es außerdem „Markdown kopieren“.
- **Alles auf einmal:** [llms.txt](https://docs.kalender-sync.de/llms.txt) und [llms-full.txt](https://docs.kalender-sync.de/llms-full.txt).
- **Fehlercodes:** Das Feld `type` jeder Fehlerantwort zeigt direkt auf die passende Erklärung. → [Fehler](https://docs.kalender-sync.de/api/errors/)

## Abo-Kalender per MCP

Über den Kalender Sync MCP-Server pflegt dein KI-Assistent Abo-Kalender auch ohne API-Key. Wie du einen Assistenten verbindest, steht unter [KI-Assistent verbinden](https://docs.kalender-sync.de/ki-assistent/).

- **Freischalten:** Beim Verbinden den Haken **„Abo-Kalender verwalten (optional)“** aktiv setzen. Er ist nie vorausgewählt. Ist dein Assistent schon verbunden, verbinde ihn einmal neu und setze den Haken; bestehende Verbindungen bekommen das Recht nie automatisch. Das geht mit Claude und ChatGPT (auch Claude Code und Codex). Clients mit Zugangsschlüssel nutzen stattdessen die Publisher API.
- **Werkzeuge:** `list_publisher_calendars`, `create_publisher_calendar`, `update_publisher_calendar`, `write_publisher_events` (bis zu 100 Termine je Aufruf, Ergebnis je Termin), `list_publisher_events`, `get_publisher_stats` und `get_subscribe_button`.
- **Testmodus und live:** Neue Kalender startet der Assistent im Testmodus. Einen Live-Kalender legt er nur an, wenn du es ausdrücklich willst, ab Basic und nach deiner einmaligen Zustimmung zu den Zusatzbedingungen. Fehlt sie, kommt [`terms_required`](https://docs.kalender-sync.de/api/errors/terms_required/) mit dem Link in die Einstellungen.
- **Löschen:** Termine kann der Assistent löschen, einen ganzen Kalender nicht. Das geht nur über die API.
- **Kosten:** Die Werkzeuge kosten keine Credits.