API & MCP — Slonge Billing automatisieren
Slonge Billing bietet eine offizielle Kommandozeilen-Schnittstelle (CLI) und einen MCP-Server (Model Context Protocol) für Claude Desktop, Cursor und Claude Code. Damit können Sie Ihren Tenant programmatisch oder über KI-Agenten ansprechen — Kunden anlegen, Rechnungen erstellen, Berichte abrufen, alles ohne Klicken im Web-UI.
Für wen ist das?
- CLI-Nutzer: Entwickler:innen, Buchhalter:innen oder Power-User, die Routineaufgaben automatisieren oder in eigene Skripte einbinden möchten.
- KI-Agent-Nutzer: Wer Claude Desktop, Cursor oder Claude Code (oder einen anderen MCP-fähigen Agenten) nutzt und die Slonge-Funktionen direkt aus dem Chat heraus verwenden will — „Lege mir den Kunden Beispiel AG mit der E-Mail … an" oder „Welche Rechnungen sind diese Woche überfällig?".
- Voraussetzung: Rolle Administrator im Tenant — nur Administratoren können API-Tokens erstellen oder widerrufen.
Schnellstart in 5 Minuten
Schritt 1: API-Token erstellen
- Anmelden bei Slonge Billing.
- Einstellungen öffnen.
- Auf den Tab API & MCP wechseln.
- Token erstellen klicken.
- Sprechenden Namen vergeben (z. B. „Claude Desktop", „CI-Pipeline").
- Optional: Ablauf wählen (30 / 90 / 365 Tage oder „Nie").
- Erstellen klicken — der vollständige Token wird genau einmal angezeigt. Kopieren Sie ihn sofort. Nach dem Schliessen des Dialogs lässt er sich nicht mehr abrufen.
Sicherheit: Tokens werden als SHA-256-Hash gespeichert. Slonge selbst kann den Klartext nach der Erstellung nicht mehr einsehen. Geht ein Token verloren, widerrufen Sie ihn und erstellen einen neuen.
Schritt 2A: CLI verwenden
# Einmalig: Konfiguration setzen
slonge config set api-url https://app.slonge-billing.ch
slonge config set api-token slk_live_IHR_TOKEN_HIER
slonge config test # bestätigt Bearer-Authentifizierung
# Tägliche Befehle
slonge client list
slonge client create --name "Beispiel AG" --email [email protected]
slonge invoice list --status pending --limit 10
slonge invoice create --project-id <id> --amount 1500 --description "Beratungsleistung Mai"
slonge invoice mark-paid <rechnungs-id>
Globale Flags (für alle Befehle verfügbar):
--json— gibt eine JSON-Antwort statt einer Tabelle aus (ideal für Skripte)--verbose— protokolliert HTTP-Aufrufe nach stderr--dry-run— validiert die Eingabe und zeigt den geplanten Aufruf, ohne ihn auszuführen
Die CLI speichert die Konfiguration in ~/.slonge/config.json (Windows: %USERPROFILE%\.slonge\config.json).
Schritt 2B: MCP-Server in Claude Desktop einbinden
-
Konfiguration in
%APPDATA%\Claude\claude_desktop_config.json(Windows) bzw.~/Library/Application Support/Claude/claude_desktop_config.json(macOS) ergänzen:{ "mcpServers": { "slonge-billing": { "command": "node", "args": ["<absoluter-pfad>/packages/mcp-server/dist/index.js"], "env": { "SLONGE_CONFIG_PATH": "<absoluter-pfad>/.slonge/config.json" } } } } -
Claude Desktop vollständig beenden (nicht nur Fenster schliessen — auch das Tray-Symbol) und neu starten.
-
Im Chat erscheint ein 🔌-Symbol mit dem Eintrag
slonge-billingund rund 20 verfügbaren Tools. -
Im Gespräch fragen: „Liste mir die offenen Rechnungen aus Slonge" — Claude ruft das passende Tool auf und zeigt das Ergebnis direkt im Chat.
Die gleichen Schritte funktionieren mit Cursor und Claude Code (über deren jeweilige MCP-Konfiguration).
Verfügbare Funktionen
Sowohl CLI als auch MCP-Server greifen auf dieselbe API zu — die Funktionalität ist identisch.
| Bereich | Operationen |
|---|---|
| Kunden | Auflisten · Anzeigen · Erstellen · Aktualisieren · Löschen |
| Projekte | Auflisten (Filter: Status, Kunde) · Anzeigen · Erstellen · Aktualisieren · Löschen |
| Rechnungen | Auflisten (Filter: Status, Projekt, Kunde) · Anzeigen · Erstellen · Aktualisieren · Löschen · Als bezahlt markieren · Versenden (inkl. PDF, Swiss QR-Bill und Branding) · UBL XML exportieren (Peppol BIS Billing 3.0) |
| Zeiteinträge | Auflisten · Anzeigen · Erstellen · Aktualisieren · Löschen · Schnell loggen (slonge time-entry log --project-id <id> --hours <n>) |
| Ausgaben | Auflisten · Anzeigen · Erstellen · Aktualisieren · Löschen · Beleg hochladen (OCR, AI-quota-pflichtig) |
| Angebote | Auflisten · Anzeigen · Erstellen (mit Positionen) · Aktualisieren · Löschen · In Rechnung umwandeln |
| Mahnwesen | Offene Posten auflisten · Status pro Rechnung · Lauf manuell anstossen (optional --preview) |
| Berichte | Verfügbare Typen auflisten · Export (Bilanz, Erfolgsrechnung, MwSt-Abrechnung, Abacus XML, Abacus ASCII) |
| Einstellungen | Anzeigen · Aktualisieren (TENANT_ADMIN — IBAN, Mehrwertsteuersatz, Standardwährung etc.) |
| API-Tokens | Auflisten · Erstellen · Widerrufen |
Neue Tools (Wave 6)
| MCP-Tool | HTTP-Pfad | Beschreibung |
|---|---|---|
| settings_update | PATCH /api/cli/settings | Tenant-Einstellungen aktualisieren (TENANT_ADMIN) |
| quote_pdf | GET /api/cli/quote/[id]/pdf | Angebot als PDF (base64-kodiert) |
| quote_send | POST /api/cli/quote/[id]/send | Angebot per E-Mail versenden; DRAFT → SENT |
E-Rechnung (Peppol BIS Billing 3.0)
| MCP-Tool | HTTP-Pfad | Beschreibung |
|---|---|---|
invoice_ubl | GET /api/cli/invoice/[id]/ubl | Rechnung als Peppol BIS 3.0 UBL XML (base64) inkl. IBAN + Swiss-QR-Referenz. Nur CHF. |
CLI-Kurzbefehl:
slonge invoice ubl <id> -o rechnung.xml # schreibt die XML auf Disk
slonge invoice ubl <id> # streamt die XML auf stdout
Eine vollständige Liste der MCP-Tool-Namen (im Format client_list, invoice_create etc.) erhalten Sie über tools/list Ihres MCP-Clients.
Authentifizierung & Limits
- Bearer-Token — jeder Aufruf braucht den Header
Authorization: Bearer slk_<env>_<token>. - Tenant-Bindung — der Token kennt seinen Tenant; ein Tenant-Wechsel ist im Token nicht möglich. Wer mehrere Tenants verwaltet, erstellt pro Tenant einen eigenen Token.
- Rate-Limit — 60 Anfragen pro Minute pro Token. Bei Überschreitung antwortet die API mit
429 Too Many Requestsund dem HeaderRetry-After. - Audit-Log — jeder Zugriff wird protokolliert (Zeitpunkt, Methode, Pfad, Statuscode, Antwortzeit).
AI-Quota
Werkzeuge, die OpenAI verwenden — derzeit nur expense upload / expense_upload — gelten gegen das monatliche AI-Limit Ihres Plans (aiCallsPerMonth).
| Plan | Limit |
|---|---|
| Standard | 100 OCR-Aufrufe / Monat |
| AI Pro | 1000 OCR-Aufrufe / Monat |
| Trial | 1000 (während der 30-Tage-Testphase) |
Bei Erreichen des Limits antwortet die API mit 429 QUOTA_EXCEEDED. Aufrufe gegen einen Plan ohne AI-Features antworten mit 403 FORBIDDEN. Beide Codes haben deterministische Bedeutung — Agenten können unterscheiden zwischen „warten und nochmal versuchen" (Rate-Limit) und „Plan upgraden" (Quota).
Fehlercodes
Die API antwortet immer mit der gleichen Hüllenstruktur:
{ "success": false, "error": { "code": "VALIDATION_ERROR", "message": "...", "details": { } } }
| Code | HTTP | Bedeutung |
|---|---|---|
VALIDATION_ERROR | 400 | Eingabe entspricht nicht dem Schema; details enthält die Feldpfade |
UNAUTHORIZED | 401 | Token fehlt, ist abgelaufen, widerrufen oder fehlerhaft formatiert |
FORBIDDEN | 403 | Rolle reicht für die Operation nicht (z. B. Token-Erstellung nur als Administrator) |
NOT_FOUND | 404 | Ressource existiert nicht in Ihrem Tenant |
CONFLICT | 409 | z. B. erneuter Widerruf eines bereits widerrufenen Tokens |
RATE_LIMITED | 429 | Limit (60 req/min) überschritten — Header Retry-After beachten |
INTERNAL_ERROR | 500 | Serverfehler — bitte später erneut versuchen oder Support kontaktieren |
Sicherheit & Best Practices
- Token niemals committen —
.gitignorefür.env-Dateien und~/.slonge/config.jsonist Pflicht. - Einen Token pro Anwendung — jede CI-Pipeline, jeder Laptop, jeder Agent bekommt einen eigenen Token. So lässt sich gezielt widerrufen, wenn ein Gerät verloren geht.
- Sprechende Namen vergeben — der Token-Name erscheint im Audit-Log und in der Übersicht; „Claude Desktop — Laptop Ben" sagt mehr als „Token 1".
- Bei Verdacht widerrufen — Widerruf ist sofort wirksam; der Token kann nicht reaktiviert werden.
- Ablaufdatum nutzen — für temporäre Integrationen (z. B. ein einmaliger Migrationslauf) lieber 30 Tage statt „Nie".
Streamable HTTP Transport
Neben dem lokalen slonge-mcp (stdio) bietet Slonge Billing einen gehosteten MCP-Endpunkt:
POST https://app.slonge-billing.ch/api/mcp
Authorization: Bearer slk_...
Accept: application/json, text/event-stream
Verbinden Sie kompatible Clients (claude.ai, ChatGPT, Cursor mit Remote-MCP-Unterstützung) direkt mit dieser URL — keine Installation nötig. Die gleichen API-Tokens funktionieren über stdio und HTTP.
Nächste Schritte
- Token erstellen: Einstellungen → API & MCP
- Kontaktieren Sie uns unter [email protected], wenn Sie Fragen zur Einrichtung haben oder neue MCP-Tools wünschen.
Hinweis für Entwickler:innen: Die offizielle SDK heisst
@slonge/agent-sdkund enthält Zod-Schemata und einen typisierten HTTP-Client. Sie wird gemeinsam mit der CLI und dem MCP-Server im Slonge-Billing-Monorepo gepflegt.