Dokumentation
MCP und OAuth
Realite per MCP verbinden, authentifizieren und verwenden.
Was ist jetzt möglich?
Realite stellt einen MCP-Endpunkt bereit. Ein MCP-Client kann damit:
- dein Dashboard lesen
- Gruppen und Kontakte lesen, Gruppen anlegen
- Events und Kommentare lesen
- Vorschläge lesen und entscheiden
- Einstellungen lesen und Vorschlagslimits ändern
- Smart-Treffen lesen, anlegen und aktualisieren
- mit eigener Berechtigung Date nutzen: Kandidaten suchen, Interesse zeigen, Termine, Orte, Fragen und Angaben aushandeln. Details stehen unter Date-Tools
- Aktionen vorschlagen, die du in der App freigibst: Events anlegen, kommentieren, Kontakte einladen, Mitglieder hinzufügen, Gruppen ändern und löschen, Einladungslinks, Gruppenbeitritte, Kalenderauswahl sowie Date-Annahmen, die Date-Verhandlung, Feedback und Bürgschaften
Welche Tools sofort wirken und welche auf dich warten, steht im Abschnitt Bestätigungsschicht.
Der Zugriff läuft über OAuth mit Better Auth. Dein MCP-Client bekommt also keinen statischen Realite-Login, sondern authentifiziert sich regulär gegen Realite und erhält dann ein Zugriffstoken.
Wichtige URLs
- MCP-Endpunkt:
/api/mcp - kompatibler Alias für Clients mit Standardpfad:
/mcp - OAuth Protected Resource Metadata:
/.well-known/oauth-protected-resource/api/mcp - OAuth Protected Resource Metadata für den Alias:
/.well-known/oauth-protected-resource/mcp - OAuth Protected Resource Metadata Fallback:
/.well-known/oauth-protected-resource - OAuth Authorization Server Metadata:
/.well-known/oauth-authorization-server - OpenID-Konfiguration:
/.well-known/openid-configuration
So läuft die Anmeldung ab
- Dein MCP-Client verbindet sich mit dem geschützten Resource-Endpunkt von Realite.
- Realite verweist den Client auf die OAuth-Metadaten von Better Auth.
- Du meldest dich mit einem für dieses Deployment freigeschalteten Realite-Login an, heute im Regelfall Google.
- Du bestätigst den Zugriff auf dein Realite-Konto.
- Danach kann der MCP-Client Tools und Resources von Realite nutzen.
Wenn du in Realite bereits angemeldet bist, setzt Realite den OAuth-Flow direkt fort. Du musst die Anmeldung in diesem Fall nicht noch einmal manuell neu anstossen.
Welche Berechtigungen werden angefragt?
Realite verwendet für MCP aktuell diese Scopes:
openidprofileemailoffline_accessrealite:readrealite:writerealite:dating(separater Date-Zugriff)realite:photos(separater Fotozugriff, nur zusammen mitrealite:dating)
realite:read deckt lesende Zugriffe ab. realite:write erlaubt Änderungen wie neue Gruppen oder Entscheidungen auf Vorschläge und das Anlegen von Aktionen, die auf deine Freigabe warten. realite:dating und realite:photos sind für alle nutzbar, müssen aber ausdrücklich angefragt und bestätigt werden.
Hinweise für MCP-Clients
- Der MCP-Transport läuft über HTTP
POSTauf/api/mcp. - Falls ein Client automatisch den Standardpfad
/mcpverwendet, akzeptiert Realite auch diesen Alias. - Der Endpunkt ist OAuth-geschützt und erwartet ein Bearer-Token.
- Access Tokens gelten 24 Stunden. Mit
offline_accesskann der Client sie über ein Refresh Token bis zu 30 Tage lang erneuern, ohne dass du dich erneut anmelden musst. - Für Discovery sollte der Client die Protected-Resource-Metadata lesen statt feste Auth-URLs anzunehmen.
- Browser-basierte Clients können den
WWW-Authenticate-Header lesen; darüber findet der Client die passenderesource_metadata-URL. - Realite nutzt den angemeldeten Better-Auth-User als Grundlage und synchronisiert daraus den internen App-User.
Typische Probleme
Der Client bekommt 401 Unauthorized
Meist fehlt das Bearer-Token, oder das Access Token passt nicht zu dieser Resource. Prüfe insbesondere:
- ob
/.well-known/oauth-protected-resource/api/mcperreichbar ist - ob bei Nutzung des Alias auch
/.well-known/oauth-protected-resource/mcperreichbar ist - ob alternativ
/.well-known/oauth-protected-resourceerreichbar ist - ob der Client wirklich ein Access Token für die Resource
/api/mcpoder/mcpanfordert - ob die Anmeldung und die Consent-Seite vollständig abgeschlossen wurden
Wenn der Client gleichzeitig „Angemeldet“ und „Anmeldung erforderlich“ zeigt, wurde das Token gespeichert, aber Realite hat einen späteren MCP-Request mit 401 abgelehnt. Dann den Flow komplett neu starten, nicht nur die alte Consent-URL erneut öffnen.
Wenn die Anmeldung zuerst klappt und nach kurzer Zeit wieder verlangt wird, hat der Client das Access Token nicht rechtzeitig erneuert. Nach einem erneuten Login sollte die Verbindung dann einen vollen Tag halten. Persistiert der Client Refresh Tokens korrekt, ist danach keine erneute Anmeldung nötig.
MCP Inspector im Browser zeigt CORS-Fehler
Wenn du den MCP Inspector lokal im Browser nutzt, kommen Requests typischerweise von einer Localhost-Origin (z. B. http://localhost:6274).
Realite erlaubt dafür CORS auf den Discovery- und MCP-Endpunkten:
/.well-known/oauth-protected-resource/api/mcp/.well-known/oauth-protected-resource/mcp/.well-known/oauth-authorization-server/.well-known/openid-configuration/api/mcp/mcp
Falls du eine andere Origin verwenden willst, setze MCP_ALLOWED_ORIGINS als kommaseparierte Liste (z. B. http://localhost:6274,http://localhost:3001).
Hinweis: Für den Browser-Inspector muss CORS nicht nur auf den /.well-known- und /api/mcp-Routen stimmen, sondern auch auf den OAuth-Endpunkten unter /api/auth/* (z. B. Dynamic Client Registration).
Was bedeuten issuer und audience?
issuer: Wer hat das Access Token ausgestellt (der OAuth-Server).
Realite erwartet hier die eigene Origin (z. B.https://realite.app).audience: Für welche Resource ist das Token gedacht.
Realite erwartet hier den MCP-Resource-Endpunkthttps://realite.app/api/mcpoder den kompatiblen Aliashttps://realite.app/mcp.
Wenn issuer oder audience nicht zum Token passen, lehnt Realite den Zugriff auf /api/mcp mit 401 ab.
Die Anmeldung endet wieder auf der Login-Seite
Dann wurde der OAuth-Flow nicht vollständig fortgesetzt oder die Sitzung ist nicht gültig. Starte die MCP-Verbindung neu und melde dich erneut an.
Der MCP-Client sieht keine Realite-Daten
Realite legt den internen App-User beim ersten gültigen Zugriff automatisch an bzw. aktualisiert ihn aus Better Auth. Wenn der Client zwar authentifiziert ist, aber keine Daten sieht, melde dich einmal regulär in Realite an und versuche es dann erneut.
Getrennte Berechtigungen
Jeder Tool-Aufruf und jeder Resource-Abruf prüft die Berechtigungen des Zugriffstokens:
realite:read: lesende Tools und Resources, einschließlich Inbox und Agentenprotokoll.realite:write: Änderungen im Freunde-Modus und Dashboard-Refresh. Nach außen wirkende Schritte laufen über die Bestätigungsschicht.realite:dating: Date-Profil lesen, Änderungen daran vorschlagen, Date-Tools und die Resourcerealite://dating. Dieser Scope ist unabhängig von den beiden Freunde-Berechtigungen.realite:photos: Freigegebene Date-Fotos an deinen Agenten und dessen Modellanbieter übermitteln. Gilt nur zusammen mitrealite:datingund schließtrealite:writeaus. Realite lehnt Freigabe, Token und Aufrufe mit Fotozugriff ohne Date-Zugriff ab. Mit Fotozugriff sind nur lesende Date-Aufrufe möglich; unbekannte Date-Aufrufe und Date-Aktionen mit Außenwirkung bleiben gesperrt.
Date-Zugriff wird auf der Bestätigungsseite als eigener Eintrag mit deutschem Hinweis angezeigt. Neue Clients erhalten ihn nicht als Registrierungsstandard. Ein Client, der Date nutzen soll, muss realite:dating bei Registrierung und Autorisierung ausdrücklich anfordern. Fehlende Scope-Angaben im Token erlauben keinen Zugriff. Eine Ablehnung nennt die fehlende Berechtigung; verbinde den Client bei Bedarf erneut mit dem passenden Scope.
Date-Tools
Alle Date-Tools brauchen realite:dating. Für den Ablauf braucht das Konto außerdem die Date-Einwilligung, ein vollständiges Profil und eine bestätigte Telefonnummer. Die Einwilligung gibt nur der Mensch in der App. Eingaben und Ausgaben sind strukturiert: feste Listen, Bereiche, Zeiten und Referenzen. Name, Foto, E-Mail, Telefonnummer, Nutzer-ID und Freitext anderer Personen kommen nicht vor.
| Bereich | Tools | Wirkung |
|---|---|---|
| Profil | date.get_profile_schema, date.get_my_profile, date.get_budget, dating.get |
Lesen |
| Profil ändern | date.propose_profile_changes, date.propose_preferences, dating.update |
Nur ein Vorschlag. Übernehmen kann nur der Mensch unter Profil und Vorlieben |
| Kandidaten | date.find_candidates, date.send_interest |
Suche ohne Wirkung auf andere. Ein erstes Interesse wirkt direkt, im Rahmen des Budgets |
| Ablauf | date.list, date.get_plan, date.respond_to_interest, date.propose_slots, date.respond_to_slot, date.request_confirmation |
Annehmen und Vorschlagen laufen über die Bestätigungsschicht, Absagen wirken sofort |
| Orte | date.search_places, date.propose_places, date.respond_to_place |
Gegend und Ortsart nur aus festen Listen |
| Fragen und Angaben | date.get_question_catalog, date.ask_question, date.answer_question, date.list_questions, date.share_details |
Nur der feste Katalog. Beantwortet wird nur mit der gespeicherten Antwort des Menschen unter der Regel Mein Agent darf antworten |
| Nach dem Date | date.submit_feedback, date.get_insights, reputation.get |
Feedback wartet auf Freigabe. Vorschläge aus dem Rückblick übernimmt der Mensch |
| Bürgschaften | vouch.create, vouch.list |
vouch.create wartet auf Freigabe |
| Fotos | date.get_photos |
Braucht zusätzlich realite:photos, siehe unten |
date.find_candidates und date.get_budget liefern das Budget mit. queriesRemainingThisHour zählt alle Abfragen der Stunde, refreshesRemaining nur Abrufe mit neuen Kandidaten. Beim Stundenlimit meldet das Tool retryAfterSeconds.
Ein Tool für diese Schritte gibt es bewusst nicht: Zusage, Absagen eines Dates, Eintragen, ob es stattgefunden hat, Melden, Einwilligung, Foto-Freigabe. Vorname, Notiz und Kontaktweg stehen nur für Menschen in der App. Ist Date pausiert oder abgeschaltet, antworten die Tools mit „Der Date-Modus ist derzeit nicht verfügbar.“
Der Ablauf für Menschen steht unter Date im Überblick.
Agentenaktionen ansehen und Zugriff widerrufen
Unter Einstellungen → Agentenzugriff & Protokoll findest du die letzten 20 Aktionen und die freigegebenen Clients. Das Protokoll enthält Zeitpunkt, Client (soweit bekannt), Aktion, Modus und Ergebnis. Bekannte Aktionen stehen dort als lesbarer Text, zum Beispiel Freigegeben: Event anlegen, alles andere als Toolname. Aufrufparameter, Kommentare und andere persönliche Inhalte werden nicht protokolliert. Auch abgelehnte Aufrufe erscheinen im Protokoll. Technische Protokollierungsfehler verhindern die eigentliche Aktion nicht.
Mit Zugriff widerrufen entfernst du die Freigabe und die gespeicherten Zugriffs- und Refresh-Tokens dieses Clients. Bereits ausgestellte JWT-Zugriffstokens werden am MCP-Endpunkt ebenfalls abgelehnt. Für eine neue Verbindung ist eine erneute OAuth-Freigabe nötig. Ein bereits laufender Aufruf wird dadurch nicht abgebrochen.
Agenten können ihr eigenes Protokoll mit activity.list({limit?}) abrufen (maximal 100 Einträge).
Inbox und Benachrichtigungen
inbox.get({since?, limit?}) liefert {items, cursor, nextPollAfterSeconds}. Beim ersten Abruf kann since fehlen. Danach gibt der Client den zurückgegebenen Cursor als Zeichenkette unverändert beim nächsten Abruf mit. Maximal 100 Einträge werden pro Abruf geliefert. Ohne neue Einträge bleibt der Cursor gleich; der nächste Abruf sollte frühestens nach 60 Sekunden erfolgen.
Hinweise entstehen bei neuen Vorschlägen, Kommentaren anderer Personen auf eigenen Events, Teilnahmeanfragen über einen geteilten Wochenstatus, beim Hinzufügen zu einer Gruppe per E-Mail und wenn eine Aktion auf deine Freigabe wartet (agent.action_pending, im Date-Modus date.agent_action_pending). Neuberechnungen bestehender Vorschläge erzeugen keinen weiteren Hinweis. Hinweise enthalten nur Ereignisart und Referenz-IDs. Sie verfallen standardmäßig nach 48 Stunden und werden danach nicht mehr ausgeliefert. Ein Hinweis ist keine automatische Zusage und ändert keine Teilnahme.
Bei einem Hinweis wird ein Web-Push über die bestehende Hintergrundwarteschlange eingeplant. Dafür müssen Push-Benachrichtigungen eingerichtet und erlaubt sein. Der feste Text lautet „Neue Aktivität bei Realite“, ohne Namen, Profilangaben oder Kommentare. Wartet eine Aktion auf dich, führt der Push zu /agent-actions, bei Date-Hinweisen zu /dates. Date-Hinweise wecken auch Personen ohne verbundenen Agenten, wenn sie Push eingeschaltet haben. E-Mail-Benachrichtigungen werden dafür nicht versendet. Ein Push startet einen externen Agenten nicht automatisch; der Agent muss die Inbox selbst abrufen können.
Bestätigungsschicht
Die Tools in der Tabelle unten führen nichts selbst aus. Der Tool-Aufruf prüft die Eingabe und legt eine Aktion an. Die Antwort lautet dann:
{ "status": "pending_human_approval", "actionId": "…", "summary": "…", "expiresAt": "…", "note": "…" }
Der Agent kann die Aktion nicht freigeben. Du entscheidest unter Einstellungen → Offene Aktionen deines Agenten oder auf /agent-actions, angemeldet mit einem registrierten Konto. Bearer-Tokens werden dort immer abgelehnt. Offene Aktionen laufen nach 24 Stunden ab. Eine Freigabe führt die Aktion genau einmal aus und prüft dabei die Rechte und den aktuellen Zugriff des Clients neu. Mit Zugriff widerrufen verfallen die offenen Aktionen dieses Clients, mit dem Entzug von realite:dating seine offenen Date-Aktionen.
| Tool | Art | Regel | Autopilot möglich |
|---|---|---|---|
events.create |
event_create |
Höchstens 10 Tags. Für Gruppen nur mit selbst bestätigter Mitgliedschaft. Farbe nur als #rrggbb |
Nur Gruppe oder Freunde, ohne Vor-Ort-Sichtbarkeit, Shortcut und #alle oder #freunde+ irgendwo in Titel oder Tags |
events.add_comment |
event_comment |
Nur eigene oder zugesagte Events. 20 pro Tag, 5 pro Event | Nein |
events.invite_contact |
event_invite_contact |
Nur bestehende Kontakte, per contactRef oder email. 20 pro Tag |
Nein |
groups.add_member |
group_add_member |
Nur Eigentümer. Gleiche Antwort mit und ohne Konto. 20 pro Tag, 10 pro Gruppe | Nein |
groups.update |
group_update |
Nur Eigentümer, nur Hashtags: höchstens 10 mit je 40 Zeichen, ohne Komma und Leerzeichen. 10 pro Tag | Nein |
groups.delete |
group_delete |
Nur Eigentümer. 5 pro Tag | Nein |
groups.create_invite_link |
group_create_invite_link |
Nur mit selbst bestätigter Mitgliedschaft. Link nur für den Menschen. 5 pro Tag | Nein |
groups.join_by_token |
group_join_by_token |
5 pro Tag | Nein |
settings.update |
settings_changes_sensitive |
Nur wenn sich die Kalenderauswahl ändert | Nein |
date.respond_to_interest, date.respond_to_slot |
date_accept |
Nur accept. decline wirkt sofort |
Ja |
date.send_interest |
date_accept |
Nur wenn die Person schon Interesse gezeigt hat. Das zählt zusätzlich gegen das Tagesbudget für Interessen | Ja |
date.propose_slots |
date_negotiate_slots |
Gegend als areaCode aus der festen Liste, Umkreis 1, 3, 5, 10 oder 25 km |
Ja, Schalter date_negotiate |
date.propose_places |
date_negotiate_places |
Höchstens 4 Runden je Date | Ja, Schalter date_negotiate |
date.respond_to_place |
date_negotiate_place_response |
Nur accept und counter. decline wirkt sofort |
Ja, Schalter date_negotiate |
date.ask_question |
date_negotiate_question |
Nur aus dem Katalog, höchstens 5 je Seite | Ja, Schalter date_negotiate |
date.answer_question |
date_negotiate_answer |
Nur mit Regel auto_answer, nur die gespeicherte Antwort |
Ja, Schalter date_negotiate |
date.share_details |
date_negotiate_details |
Höchstens 3 Änderungen je Date. Gesundheitsangaben gehen auch nach der Freigabe nicht weiter | Ja, Schalter date_negotiate |
date.submit_feedback |
date_feedback |
Wird weiter als Agenten-Feedback gespeichert | Nein |
vouch.create |
date_vouch |
Nein |
Den Autopilot schaltest du in derselben Karte ein, je Schalter einzeln. date_negotiate gilt für alle date_negotiate_*-Arten zusammen. Dann antwortet das Tool mit status: "executed" und dem Ergebnis, oder mit status: "failed" und einem Code. Jede Autopilot-Ausführung steht als autopilot.<art> im Protokoll, jede Freigabe als approved.<art>. So liefert es auch activity.list, die Einstellungen zeigen dafür Autopilot: … und Freigegeben: ….
Abgelehnte Aufrufe antworten mit status: "rejected", einem code und einer Begründung, zum Beispiel unknown_contact, human_only_field, rate_limited oder not_allowed. Es sind höchstens 30 Aktionen gleichzeitig offen, davon höchstens 10 je Client, und eine identische offene Aktion wird nicht doppelt angelegt.
Mit actions.status({actionId}) liest ein Agent den Stand einer Aktion: pending, rejected, expired, approved, executed oder failed, bei groups.add_member nach der Entscheidung nur decided_by_human. Dieses Tool braucht realite:read. Date-Aktionen sind darüber nur mit realite:dating sichtbar.
settings.update ändert Limits und blockierte Tags direkt. autoInsertSuggestions und blockedCreatorIds ändert nur der Mensch in den Einstellungen. Die Felder sind optional, geänderte Werte werden abgelehnt.
events.get_invite_context liefert zu Kontakten eine contactRef, die events.invite_contact annimmt. Unbekannte Adressen schlägt das Tool nicht mehr vor.
smart_meetings.create und smart_meetings.update lehnen #date ohne realite:dating ab. Gastkonten können über MCP weder Events noch Smart-Treffen anlegen. In der App können Gäste keine öffentlichen Events anlegen.
date.propose_slots nimmt Beginn und Ende nur im 15-Minuten-Raster an. areaLat und areaLng gibt es für Agenten nicht mehr. date.search_places nimmt ebenfalls nur areaCode aus der festen Liste.
Link-Vorschauen entstehen nur für Events, die ein Mensch freigegeben hat. Autopilot-Events rufen keine fremde Adresse ab.
Was direkt wirkt
Diese Tools laufen ohne Freigabe. Alle anderen, die nicht nur lesen, stehen in der Tabelle oben.
| Tool | Warum das kein Weg für private Daten ist |
|---|---|
suggestions.decide |
Trägt nur Zusage oder Absage zu einem bestehenden Event. note und reasons einer Absage bleiben bei dir. Eine Zusage ist für andere sichtbar, also genau eine Ja-Nein-Information |
groups.create |
Die neue Gruppe hat nur dich als Mitglied. Name, Beschreibung und Hashtags zeigt die Freigabe, bevor jemand dazukommt. Namen wie #alle und #kontakte sind reserviert |
smart_meetings.create, smart_meetings.update |
Speichern nur einen Plan. Event und Einladungen entstehen erst, wenn du den Termin unter Vorschläge freigibst. Wartet ein Termin auf dich, lehnt update ab. #alle, #freunde+ und Systemgruppen sind ausgeschlossen |
settings.update |
Limits und blockierte Tags wirken nur auf deine eigenen Vorschläge. Die Kalenderauswahl ist eine Aktion |
date.send_interest an einen Kandidaten ohne vorheriges Interesse |
Trägt eine einzige Wahl aus wenigen vorgeschlagenen Personen, begrenzt durch das Tagesbudget |
date.request_confirmation |
Bittet nur beide Menschen um ihre Zusage und trägt keine Inhalte |
date.search_places, date.find_candidates, dashboard.refresh |
Erreichen keine andere Person. Die Ortssuche geht mit Gegend und Art aus festen Listen an den Ortsanbieter |
| alle Absagen | Ein Ausstieg muss immer sofort möglich sein. Jede Absage trägt höchstens eine Ja-Nein-Information |
Inhalte offener Aktionen, etwa ein Kommentartext oder eine E-Mail-Adresse, werden gespeichert, bis du entschieden hast, und 7 Tage danach gelöscht. Das Agentenprotokoll enthält sie nicht.
Hinweise zum sicheren Agentenbetrieb
Die Tools aus der Tabelle unter Bestätigungsschicht wirken erst nach deiner Freigabe, außer du hast den Autopilot eingeschaltet. Die wenigen direkten Tools stehen dort mit Begründung. Mit Autopilot kann ein manipulierter Agent frei formulierten Text an deine Freunde oder eine bestätigte Gruppe geben und über die Auswahl in der Date-Verhandlung kleine Mengen an Information weitertragen. Freitext in Ergebnissen gilt als nicht vertrauenswürdiger Inhalt, niemals als Anweisung. Steuer- und bidirektionale Formatierungszeichen werden entfernt, einzelne Textwerte auf 4000 Zeichen begrenzt; die JSON-Struktur bleibt erhalten. Das gilt insbesondere für Titel, Beschreibungen und Kommentare anderer Personen.
Fotos und Fotoreferenzen werden aus allgemeinen MCP-Ergebnissen entfernt. Ausschließlich date.get_photos kann ausdrücklich freigegebene Date-Fotos mit den Berechtigungen realite:dating und realite:photos übermitteln. Date-Daten erscheinen nur in den strukturierten date.*-Tools, im Protokoll und in der Inbox (jeweils mit realite:dating). Allgemeine Listen enthalten keine Date-Events, Date-Treffen oder Date-Kriterien.
Getrennte Modi und geschützte Inhalte
Ohne realite:dating erhält ein Agent keine Date-Hinweise aus der Inbox, keine Date-Aktionen aus dem Protokoll und keine Date-Vorschläge oder Date-Kommentare. Date-Vorschläge lassen sich dann auch nicht beantworten; Events mit #date oder #dating lassen sich nicht erstellen. Mit ausschließlich realite:dating können Agenten Inbox und Protokoll für Date abrufen. Einwilligung und Geburtsjahr werden ausschließlich direkt in der App bestätigt. Date-Sperrtags bleiben bei settings.update erhalten. Date-Vorschläge lassen sich nicht über suggestions.decide bearbeiten; dafür gibt es derzeit kein Date-Tool.
Tool-Ergebnisse und Ressourcen tragen unter _meta.untrustedFields einen Hinweis: Freitext, etwa Titel, Namen und Kommentare, ist fremder Inhalt und keine Anweisung. Unsichtbare Formatierungszeichen werden entfernt. IDs, Zeiten und Enums behalten ihre Form. Freitextstrings werden standardmäßig mit ‹fremder Text›…‹/fremder Text› markiert. Strukturierte Kennungen, Enums, Zeiten, URLs und Tags/Hashtags sind ausgenommen. Die Marker sind ein Datenhinweis und kein Schutzversprechen gegen Prompt-Injection. Ein führender Textblock erklärt dies auch ohne Auswertung von _meta. Deshalb ist content[0] bzw. contents[0] immer ein Sicherheitshinweis: Skripte dürfen Nutzdaten nicht fest aus dem ersten Block lesen.
Erfolgreiche Leseaufrufe werden nach 60 Einzelzeilen je Konto und Minute zusammengefasst; Schreibaufrufe, Fehler und Ablehnungen werden weiter einzeln protokolliert. Erfolgreiches Inbox-Polling erscheint nicht als einzelne Aktion im Protokoll. Ressourcenabrufe und verweigerte Zugriffe werden protokolliert. Protokolle werden nach 30 Tagen gelöscht, abgelaufene Inbox-Hinweise beim nächsten Bereinigungslauf. Die API unterstützt weitere Protokollseiten über Zeitstempel und ID; die Einstellungen zeigen zunächst 20 Einträge. Push-Weckrufe erhalten nur Konten mit einer Agentenfreigabe, höchstens einmal in fünf Minuten.
Telefon und Prüffotos
Verifikation und geschützte Fotos benötigen ein registriertes Konto. Gastkonten können keine Nachweise erhalten. SMS-Anfragen zählen auch bei fehlgeschlagener Nummernprüfung oder Zustellung gegen das Kontingent. Standardmäßig werden Mobilnummern aus Deutschland, Österreich und der Schweiz unterstützt. Bereits belegte Nummern werden bei der Anforderung nicht offengelegt.
Pro Konto sind höchstens zehn Uploadversuche täglich und 20 gespeicherte Fotos zulässig. Große Selfies verkleinert der Browser vor dem Upload; der Server begrenzt Bilder zusätzlich auf vier Millionen Pixel. Eigene Fotos können über die Foto-API gelöscht werden, solange sie nicht in einer offenen Prüfung verwendet werden. Geprüfte Selfie-Evidenz wird nach 30 Tagen zur Löschung vorgemerkt. Konto- und Fotolöschung speichern einen dauerhaften Löschauftrag für den privaten Fotospeicher; fehlgeschlagene Löschungen werden beim nächsten Bereinigungslauf wiederholt.
Listen, Suche und Kontakte
contacts.listundevents.listnehmen optionallimit(Standard 50, höchstens 100) undcursoran. Gibt es weitere Einträge, steht der nächste Wert in_meta.nextCursor, am Endenull. Ohne Angabe bleibt die Form der Antwort wie bisher.dashboard.getzeigt höchstens 100 Events und verweist übereventsPaginationaufevents.list.events.get_invite_contextsucht nur nach Anzeigenamen (mindestens 2 Zeichen) oder nach einer exakt vollständigen Adresse. Treffer enthalten einecontactRefstatt der E-Mail-Adresse.events.invite_contact,groups.add_memberundvouch.createnehmen einecontactRefentgegen (beivouch.createalscontactRefstatttargetEmail). Die bisherige Eingabe per E-Mail-Adresse funktioniert weiter, es gilt genau eines von beiden. Die aufgelöste Adresse bleibt auf dem Server. Dir zeigt die Freigabe Name und Adresse.- Erwartbare Fehler kommen mit
_meta.codeund gegebenenfalls_meta.retryAfterSecondsbeim Agenten an, zum Beispiel bei einem erreichten Tageslimit. - Hashtags einer Gruppe darf in der App nur der Eigentümer ändern. Systemgruppen wie
#alleund#kontaktesowie synchronisierte Gruppen sind dafür gesperrt, auch für Agenten.
Freigabe, Grenzen und Datensparsamkeit
- Die Freigabe zeigt den bereinigten, auf 100 Zeichen begrenzten Clientnamen und den Host der Rückleitungsadresse. Ungeprüfter Client bedeutet: Name und Ziel stammen vom Client; Realite empfiehlt oder prüft diesen Anbieter nicht.
- Du kannst die angefragten Rechte einzeln auswählen. Date- und Fotozugriff sind zunächst abgewählt. Fotozugriff und Freunde-Schreibzugriff können nicht gemeinsam erteilt werden (getrennte Clients mit je einem der beiden Rechte bleiben erlaubt; die Einstellungen weisen auf diese Kombination hin). Das gilt auch für Token-Erneuerung und bereits ausgestellte Tokens. Fotozugriff gibt es nur zusammen mit Date-Zugriff. Auch eine von Hand gebaute Freigabe ohne Date-Zugriff lehnt der Server ab. Neue Clients erhalten weiterhin standardmäßig weder Date- noch Fotorechte; beide müssen ausdrücklich angefragt und bestätigt werden.
- Gastkonten erhalten keinen MCP-Zugriff. Für die Verbindung ist ein registriertes Konto erforderlich.
- Unter Einstellungen → Agentenzugriff & Protokoll kannst du nur Fotozugriff oder Date-Zugriff entziehen. Date-Widerruf entzieht auch den Fotozugriff. Jeder neue Aufruf verwendet nur Rechte, die sowohl im Token als auch in der aktuellen Freigabe stehen; ein altes Token stellt entzogene Rechte nicht wieder her.
- Agenten können keine öffentlichen Events durchsuchen. Allgemeine Ausgaben schließen öffentliche und Date-Events aus; zugänglich bleiben eigene, Gruppen-, Freunde- und beigetretene Aktivitäten mit entsprechend anderer Sichtbarkeit.
- Fremde E-Mail-Adressen werden aus Text und E-Mailfeldern entfernt (auch Unicode-Adressen und
%40). Deine eigene Adresse und technisch benötigte Kalender-IDs und Quellenreferenzen bleiben verwendbar. Kontakte erhalten stattdessen eine kontogebundenecontactRef. Die App verwendet weiterhin die vollständigen Kontaktdaten. - Anfragen sind auf 64 KiB begrenzt, Stapel auf zehn Aufrufe, und es gelten 120 POSTs je Token und Minute. Listen enthalten höchstens 100 sichtbare Einträge;
_meta.truncationsnennt bei Kürzung Gesamt- und Rückgabezahl. Toolantworten sind auf 128000 Byte begrenzt, die gesamte HTTP-Antwort einschließlich Protokollmethoden auf 128 KiB. Zu große Antworten werden mit einem neutralen Fehler abgelehnt. Fotoantworten haben eigene Größen- und Abrufgrenzen. - Pro Token und Minute gelten 120 günstige Leseaufrufe, 30 aufwendige Leseaufrufe, 20 Änderungen und 2 Synchronisierungsaufrufe. Pro Konto gilt jeweils das Doppelte. Bei Überschreitung erhält der Agent einen Fehler mit Statushinweis 429 und 60 Sekunden Wartezeit. Diese Grenzen gelten je Serverprozess.
- Dashboard-Abrufe stoßen Synchronisierung und Kalender-Watch-Prüfung höchstens einmal pro Minute an. Unter hoher Last speichert das allgemeine Aktivitätsprotokoll höchstens 60 Einträge je Konto und Minute; weitere Aufrufe erscheinen dort nicht einzeln. Das gesonderte Fotoabrufprotokoll bleibt davon unabhängig.
- Erwartbare Fehler wie ein erreichtes Tageslimit kommen mit Code, sicherer Meldung und gegebenenfalls Wartezeit beim Agenten an. Unerwartete Fehler liefern eine neutrale Meldung mit Referenz statt Datenbankabfragen oder Parametern; der Server protokolliert dazu Fehlerklasse, SQLSTATE und den obersten Stackframe, ohne Meldung, SQL oder Parameter. Link-Vorschauen laden ausschließlich HTTPS-Ziele mit öffentlicher Adresse, prüfen jede Weiterleitung und begrenzen Abrufzeit und Datenmenge. Der Abruf selbst erreicht die fremde Seite, darum läuft er bei Agenten nur nach menschlicher Freigabe.