API, MCP & Webhooks

SchlüsselBot sicher mit Ihrer Software und Ihrem KI-Assistenten verbinden.

Verbinden Sie Claude oder ChatGPT über MCP, oder integrieren Sie SchlüsselBot über die Business-API. Nachrichten lassen sich sicher versenden, ihr Status kann geprüft und eine offene Sendung zurückgezogen werden. Webhooks melden wichtige Zustandsänderungen zuverlässig an Ihre Software.

OpenAPI 3.1 herunterladenProduktwissen für KIRechte & Urheberschaft
Granulare RechteJeder Schlüssel bekommt nur die Scopes, die seine Anwendung wirklich benötigt.
Browser-fähigBis zu zehn exakte HTTPS-Origins können je Schlüssel für CORS freigegeben werden.
Zuverlässige EreignisseWebhooks landen zuerst in einer Queue und werden bei Fehlern kontrolliert wiederholt.

Schnellstart

Erzeugen Sie im Konto unter Schnittstelle & Webhooks einen Schlüssel. Er wird genau einmal vollständig angezeigt. SchlüsselBot speichert nur seine Prüfsumme.

curl -X POST https://schluesselbot.de/v1/messages \
  -H "Authorization: Bearer sb_live_XXXXXXXX_…" \
  -H "Idempotency-Key: auftrag-4711-versand-1" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient_email": "empfaenger@firma.de",
    "message": "Zugang: kunde42 / T7!kq2wZ",
    "ttl_hours": 48,
    "sender_name": "Kanzlei Weber"
  }'

Für Server-zu-Server-Aufrufe genügt der Bearer-Schlüssel. Externe Browser-Anwendungen brauchen zusätzlich einen beim Schlüssel freigegebenen Origin, zum Beispiel https://portal.firma.de.

Wichtig bei Browser-Anwendungen: CORS verhindert Aufrufe von nicht freigegebenen Websites, macht einen im JavaScript eingebauten API-Schlüssel aber nicht geheim. Verwenden Sie dort einen eng begrenzten Schlüssel und schützen Sie die Anwendung gegen XSS. Für öffentlich ausgeliefertes Frontend-JavaScript ist ein eigenes Backend als Vermittler die sicherere Architektur.

MCP für Claude und ChatGPT

SchlüsselBot stellt einen Remote-MCP-Server über Streamable HTTP bereit. Im Konto unter KI-Verbindungen, API & Webhooks erzeugen Sie dafür einen eigenen, jederzeit widerrufbaren MCP-Zugang. Die einfachste Einrichtung besteht aus genau einem Link, den Sie in Claude, ChatGPT oder einem anderen kompatiblen MCP-Client als benutzerdefinierten Server eintragen:

https://schluesselbot.de/mcp/sb_mcp_EXAMPLE_<secret>

Das Beispiel ist absichtlich kein gültiger Zugang. Verwenden Sie ausschließlich den im Konto einmalig angezeigten vollständigen Link.

Alternative mit Authorization-Header

Wenn Ihr Client eigene Header unterstützt, können Sie Server-Adresse und Geheimnis getrennt hinterlegen. Der MCP-Schlüssel gehört in jeder Anfrage in den Bearer-Header, niemals in eine Abfragezeichenkette wie ?token=….

Server:        https://schluesselbot.de/mcp
Transport:     Streamable HTTP
Authorization: Bearer sb_mcp_EXAMPLE_<secret>
WerkzeugFunktion
connection_statusVerbindung und verfügbaren Funktionsumfang prüfen, ohne Inhalte zu laden
search_contactsEigene verschlüsselt gespeicherte Kontakte suchen
list_recent_sendsMetadaten und Zustand der letzten eigenen Sendungen auflisten
get_message_statusZustand einer eigenen Sendung prüfen
send_secure_messageEine sichere Textnachricht versenden
withdraw_messageEine noch offene eigene Sendung dauerhaft zurückziehen
Sicherheitsgrenze des Komfortversands: Eine Nachricht, die Sie einem KI-Assistenten zum Senden geben, wird zunächst von diesem Anbieter verarbeitet und erreicht anschließend SchlüsselBot kurz im Klartext. SchlüsselBot verschlüsselt sie im Arbeitsspeicher für den einmaligen Abruf, dieser Weg ist jedoch nicht Zero-Knowledge. Für Inhalte, die weder der KI-Anbieter noch SchlüsselBot technisch sehen können soll, verwenden Sie nicht MCP, sondern den sicheren Versand im Browser und geben den Geheim-Link selbst weiter.

MCP kann keine Postfachinhalte oder empfangenen Nachrichten lesen, keine Kontakte verändern und keine Dateien anhängen. Auch gesendete Nachrichteninhalte lassen sich später nicht über MCP abrufen. Der Verbindungslink ist ein Zugangsschlüssel: Tragen Sie ihn direkt in der Connector-Konfiguration ein, senden Sie ihn nicht als Chatnachricht und widerrufen Sie ihn im Konto sofort, falls er offengelegt wurde. SchlüsselBot speichert nur eine Prüfsumme des Geheimnisses und maskiert MCP-Zugänge in seinen Webserver-Protokollen.

Berechtigungen

ScopeErlaubt
messages:sendNachrichten und bereits clientseitig verschlüsselte Anhänge senden
messages:readStatus einer eigenen API-Sendung abfragen
messages:withdrawEine noch offene eigene Sendung dauerhaft sperren und entfernen
contacts:readEigene Kontakte lesen und durchsuchen
contacts:writeEigene Kontakte anlegen, ändern und löschen

Nachrichten

POST/v1/messagesScope messages:send

/v1/send bleibt als kompatibler Alias bestehen. Verwenden Sie bei automatischen Wiederholungen immer einen eindeutigen Idempotency-Key. Derselbe Schlüssel mit demselben Inhalt liefert 24 Stunden die identische Antwort; anderer Inhalt ergibt HTTP 409.

Zwei Verschlüsselungswege: Mit message erreicht der Klartext kurz den SchlüsselBot-Arbeitsspeicher und wird dort verschlüsselt. Für Anbieterblindheit verschlüsselt Ihre Anwendung selbst, sendet ciphertext und verteilt den Schlüssel getrennt mit delivery_mode: "separate". Ein übermitteltes fragment ermöglicht die automatische E-Mail-Zustellung, erreicht dann aber ebenfalls den Server.
FeldPflichtInhalt
recipient_emailjaEmpfängeradresse
messagealternativKlartext bis 256 KB, serverseitig im Speicher verschlüsselt
ciphertextalternativBase64: 12-Byte-Nonce + AES-256-GCM-Chiffrat + 16-Byte-Tag
fragmentfür automatische Zustellung32-Byte-Schlüssel als 43 Zeichen base64url ohne Padding
attachment_ciphertextneinBereits verschlüsselter Dateicontainer, bis 100 MB Rohdaten
delivery_modeneinautomatic oder separate
ttl_hoursnein1 bis 168, Business-Voreinstellung 168 (7 Tage)
sender_nameneinAnzeigename bis 80 Zeichen
personal_noteneinMail-Notiz bis 500 Zeichen; fremde Links werden entfernt
notify_emailneinE-Mail für den Zustellnachweis nach Abruf
{
  "id": "8f3c…",
  "link": "https://schluesselbot.de/r/8f3c…#kQ2…",
  "expires_at": "2026-08-20T09:00:00+00:00",
  "modus": "vom Server verschlüsselt",
  "delivery": "automatic",
  "mail_sent": true,
  "has_attachment": false
}
GET/v1/messages/{id}Scope messages:read

Liefert ready, consumed, withdrawn, expired oder bei einem vorübergehend nicht prüfbaren Tresor unknown. Ein Ausfall wird nie fälschlich als Abruf gemeldet.

DELETE/v1/messages/{id}Scope messages:withdraw

Sperrt den Vorgang zuerst dauerhaft und entfernt ihn anschließend aus dem Tresor. Scheitert die physische Löschung vorübergehend, bleibt die Sendung trotzdem unöffnungsbar und die Bereinigung wird automatisch wiederholt.

Kontakte

Kontaktnamen und E-Mail-Adressen liegen in der Datenbank AES-256-GCM-verschlüsselt. API-Antworten werden nicht zwischengespeichert.

MethodePfadScopeFunktion
GET/v1/contacts?q=&cursor=&limit=contacts:readSuchen und seitenweise auflisten, höchstens 100 je Seite
POST/v1/contactscontacts:write{"name":"Anna","email":"anna@example.de"}
GET/v1/contacts/{id}contacts:readEinzelnen Kontakt laden
PATCH/v1/contacts/{id}contacts:writeName oder Adresse teilweise ändern
DELETE/v1/contacts/{id}contacts:writeKontakt löschen

Webhooks

Wählbare Ereignisse: created, consumed, withdrawn, expired und delivery_failed. SchlüsselBot speichert jedes Ereignis vor dem ersten Zustellversuch dauerhaft. Erwartet wird HTTP 2xx innerhalb von fünf Sekunden. Bei Fehlern folgen bis zu acht Versuche über ungefähr drei Tage: nach 1 Minute, 5 Minuten, 15 Minuten, 1 Stunde und danach in größeren Abständen.

{
  "api_version": "v1",
  "event_id": "consumed:8f3c…",
  "event": "consumed",
  "zeit": "2026-08-19T10:12:33+00:00",
  "daten": {"id": "8f3c…", "mit_anhang": false}
}
X-SchluesselBot-Event: consumed
X-SchluesselBot-Event-Id: consumed:8f3c…
X-SchluesselBot-Delivery: wd_…
X-SchluesselBot-Signature: sha256=<HMAC-SHA256 des unveränderten Roh-Rumpfs>

Prüfen Sie die Signatur über den unveränderten Request-Body und behandeln Sie event_id idempotent. Das Geheimnis wird beim Anlegen einmal angezeigt und bei SchlüsselBot separat AES-256-GCM-verschlüsselt gespeichert.

// PHP
$expected = 'sha256=' . hash_hmac('sha256', $rawBody, $webhookSecret);
if (!hash_equals($expected, $_SERVER['HTTP_X_SCHLUESSELBOT_SIGNATURE'] ?? '')) {
    http_response_code(401); exit;
}

Webhook-Ziele müssen öffentlich erreichbar, HTTPS und ohne Umleitung erreichbar sein. Private, Loopback-, Link-Local-, Dokumentations- und Tailscale/CGNAT-Netze sind gesperrt; die aufgelöste öffentliche IP wird für den tatsächlichen Verbindungsaufbau fest angeheftet.

Fehler und Grenzen