Octobooks für Entwickler
Ihr Unternehmen läuft auf eigenem Code? Octobooks ist die Buchhaltung darunter: Ihr Cronjob bucht, stellt Rechnungen aus, gleicht ab und liest die Summen- und Saldenliste, ohne dass jemand im Chat sitzt. In jedem Tarif, auch im Test. Los geht's.
1. Schnellstart
Drei Zeilen, keine Anmeldung. Der öffentliche Schlüssel öffnet eine Sandbox: eine gemeinsame Kopie einer Demofirma, jede Nacht neu.
curl https://mcp.octobooks.ai/octobooks/api/v1/company -H "Authorization: Bearer obk_sandbox_demo_foods_public_key_resets_every_night"
curl "https://mcp.octobooks.ai/octobooks/api/v1/statements/trial-balance?date_from=2026-04-01&date_to=2026-10-31" -H "Authorization: Bearer obk_sandbox_demo_foods_public_key_resets_every_night"
curl -X POST https://mcp.octobooks.ai/octobooks/api/v1/tools/manual_journal -H "Authorization: Bearer obk_sandbox_demo_foods_public_key_resets_every_night" -H "Idempotency-Key: first-entry" -H "Content-Type: application/json" \
-d '{"action": "post", "reason": "my first entry", "journal": {"date": "2026-10-01", "narration": "First entry", "lines": [{"account": "7000", "debit": "10.00"}, {"account": "1200", "credit": "10.00"}]}}'
Sie versendet nichts, meldet nichts und erreicht keine Bank. 30 Anfragen pro Minute von einer Adresse, 2.000 neue Buchungen am Tag für alle Besucher zusammen.
2. Ihr eigener Schlüssel
- Öffnen Sie in der App Einstellungen, Entwickler. Name, Berechtigungen, Erstellen. Der Schlüssel wird einmal gezeigt; kopieren Sie ihn in Ihre Maschine.
- Schlüssel zum Lesen, Vorschlagen und Einreichen brauchen einen Klick. Ein Buchungsschlüssel fragt nach Ihrem Authenticator-Code, Ihrem Passwort oder der Bestätigung mit Google.
- Ein Schlüssel gilt für eine Firma, unter seinem App-Namen, bis Sie ihn beenden. Wir speichern nur seinen Hash.
3. Was ein Schlüssel darf
read: die Bücher, die Auswertungen, die offene Liste, die Ereignisse.propose: Antworten, Entwürfe und vorgeschlagene Buchungen.upload: Kontoauszüge und Belege.book: Buchungen, Rechnungen und Gutschriften ausstellen, freigeben, abgleichen, Perioden sperren, so weit die Schalter Ihrer Firma es Ihrer KI erlauben.
Ein Buchungsschlüssel hat dieselben Schalter, denselben Freigabeablauf und dasselbe Prüfprotokoll wie Ihre KI, mit dem App-Namen des Schlüssels als Handelndem. Wo Sie entscheiden, wartet er auf Sie. Zahlungen und Meldungen stehen hinter zwei eigenen Schaltern, aus, bis Sie sie einschalten.
4. Jedes Werkzeug ist ein Endpunkt
POST /tools/<tool> nimmt die Argumente jedes Werkzeugs des MCP-Connectors als JSON. GET /tools listet sie mit Berechtigung und Argumenten. Daneben stehen die festen Ressourcen: Auswertungen, Rechnungen, Bankzeilen, offene Posten, Ereignisse. Die ganze Beschreibung: openapi.json.
Ein Werkzeug, das eine Person im Chat braucht, antwortet 409 mit einer Zeile, die das sagt.
5. Idempotenz
Jeder POST, der schreibt, nimmt den Header Idempotency-Key: einen neuen je Vorgang. Derselbe Schlüssel mit demselben Inhalt liefert die erste Antwort, mit Idempotent-Replay: true. Derselbe Schlüssel mit anderem Inhalt ist 409. So lässt sich ein abgelaufener Aufruf neu senden.
curl -X POST https://mcp.octobooks.ai/octobooks/api/v1/tools/contact_set -H "Authorization: Bearer obk_..." -H "Idempotency-Key: customer-4711" -H "Content-Type: application/json" \
-d '{"what": "save", "side": "customer", "name": "Hill Foods Ltd"}'
6. Grenzen und Fehler
600 Anfragen pro Minute je Schlüssel, 240 Werkzeugaufrufe, davon 60 schreibend. Darüber: 429 mit Retry-After. Ein Inhalt hat höchstens 8 MB.
Fehler sind {"error": {"code", "message"}}. 401 kein Schlüssel, 403 eine Berechtigung oder ein Schalter, 404 nicht in dieser Firma, 409 ein Konflikt oder eine Person nötig, 422 nicht annehmbar, die Meldung sagt warum.
7. Ereignisse und Webhooks
Tragen Sie Ihre https-Adresse unter Einstellungen, Entwickler ein und erhalten Sie ein Signaturgeheimnis, einmal gezeigt. Oder lesen Sie GET /events. Ereignisse: journal.posted, invoice.issued, open_item.opened, open_item.resolved, filing.filed. Ein Ereignis enthält IDs, Arten, Daten und Beträge, keinen Text von Außenstehenden.
Octobooks-Event: journal.posted
Octobooks-Delivery: 1234
Octobooks-Signature: t=1791234567,v1=5f2b...
{"id": "evt_88", "type": "journal.posted", "company": "ltd", "subject": {"type": "journal", "id": 4711}, "data": {"total": "120.00", "currency": "GBP"}}
Prüfen Sie zuerst die Signatur: v1 ist das HMAC-SHA256, in Hex, von t, einem Punkt und dem Inhalt, wie er ankam. Lehnen Sie ein t ab, das älter als fünf Minuten ist.
def genuine(secret: str, header: str, body: bytes) -> bool:
parts = dict(p.split("=", 1) for p in header.split(","))
signed = parts["t"].encode() + b"." + body
mine = hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest()
return hmac.compare_digest(mine, parts["v1"]) and abs(time.time() - int(parts["t"])) < 300
Antworten Sie binnen zehn Sekunden mit 2xx. Alles andere wird acht Mal über etwa zwei Tage wiederholt.
8. KI-Clients
Sie nutzen Claude oder einen anderen MCP-Client, mit einer Person im Chat? Verbinden Sie ihn mit dem MCP-Connector unter https://mcp.octobooks.ai: dieselben Werkzeuge, dieselben Schalter.
Feedback, Fragen, Funktionswunsch? hello@octobooks.ai
Octobooks Ltd, 17549566, London