# Anfragen und Freigabe
Adresse: https://docs.athaus.ai/anleitungen/anfragen-und-freigabe
> Wo Anfragen ankommen, wie der Agent Antworten vorbereitet, und warum nichts ohne dein Ja hinausgeht.
## Wo Anfragen ankommen [#wo-anfragen-ankommen]
Alle Anfragen landen in [/anfragen](https://app.athaus.ai/anfragen): links die Liste, rechts der Verlauf. Woher eine Anfrage kam, steht an ihr:
* von Suchenden mit Athaus-Konto,
* über das Formular auf der Inseratsseite, ohne Konto (**Website**),
* aus ChatGPT, Claude oder einem anderen KI-Assistenten über den MCP-Server [Athaus Immobiliensuche](/mcp),
* über den Buchungslink einer Besichtigung.
Der Stand einer Anfrage ist einer von: Neu, Im Gespräch, Termin, Zugesagt, Abgesagt.
## Anfragen ohne Konto [#anfragen-ohne-konto]
Auf der Inseratsseite von [www.athaus.ai](http://www.athaus.ai) kann jeder den Anbieter direkt anfragen: Name, E-Mail-Adresse, auf Wunsch Telefon, Nachricht. Vorher stimmt er ausdrücklich zu:
> Ich bin einverstanden, dass Athaus meinen Namen, meine E-Mail-Adresse, meine Telefonnummer (wenn angegeben) und meine Nachricht an den Anbieter dieses Inserats weitergibt, damit er mir antworten kann.
Gespeichert wird die Zustimmung mit Fassung, Sprache und Wortlaut. Deine Antwort geht per E-Mail an den Menschen; antwortet er darauf, landet seine Mail in deinem eigenen Postfach.
Wer mit Konto anfragt, gibt mit dem Senden Namen, Kontaktdaten und Mappe an diesen Anbieter frei und kann das später in der Anfrage widerrufen.
## Freigabe an der Grenze [#freigabe-an-der-grenze]
Was im Haus bleibt, erledigt der Agent von Athaus allein: sortieren, ergänzen, den Stand setzen, Entwürfe schreiben. Was hinausgeht, wartet auf dein Ja.
* Der Entwurf liegt fertig im Antwortfeld, markiert als **Entwurf von Athaus**. Senden heißt Ja.
* Auf der Startseite sammelt der Reiter **Zur Freigabe** alle Entwürfe. Je nach Art steht dort **Freigeben und senden**, **Übernehmen** (für etwas, das im Haus bleibt) oder **Freigeben und veröffentlichen** (für einen Beitrag in sozialen Netzen).
* **Freigeben** erscheint erst, wenn der ganze Text zu sehen ist.
* Eine Morgenmail gegen 7 Uhr nennt die neuen Vorschläge.
Was der Agent vorbereitet und was hinausgeht: Antworten auf Anfragen, Nachfassen (nur wo Athaus die Antwort sieht), Neuigkeiten zum Objekt wie eine Preissenkung, Absagen, die Nachricht nach einer Besichtigung, Beiträge und Antworten in sozialen Netzen.
Wie weit der Agent allein gehen darf, stellst du je Art ein: [Automatik-Stufen](/anleitungen/automatik-stufen). Über MCP gilt dieselbe Grenze ([wann ein Klick nötig ist](/mcp/rechte#klick)).
# Anzeigen
Adresse: https://docs.athaus.ai/anleitungen/anzeigen
> Bezahlte Reichweite für ein Objekt über Lead-Anzeigen auf Facebook und Instagram, aus deinem eigenen Meta-Werbekonto, entworfen von Athaus, gestartet mit deinem Ja.
## Was es tut [#was-es-tut]
Eine Anzeige ist eine Lead-Anzeige bei Meta, auf Facebook und Instagram, für genau ein Objekt mit laufendem Inserat. Statt eines Links füllen Interessenten ein kurzes Formular von Meta aus: Name, Telefon, E-Mail, eine Nachricht und **Rückruf erwünscht?** (Ja oder Nein, nichts vorausgewählt). Jeder Lead wird eine Anfrage am Objekt mit der Quelle **Social**, und der Antwortentwurf folgt wie bei jeder Anfrage.
Du verbindest dein eigenes Meta-Werbekonto und zahlst Meta direkt. Athaus nimmt nichts vom Budget.
## Einrichten [#einrichten]
Einmal, unter [Einstellungen, Soziale Netze](https://app.athaus.ai/einstellungen/kanaele) im Block **Anzeigen**. Einrichten können nur Inhaber und Verwaltung.
1. **Verbinden**: der Browser geht zu Meta und kommt zurück.
2. Das Werbekonto (`act_...`) wählen, wenn es mehr als eines gibt.
3. **Begünstigt** und **Bezahlt von** nach dem DSA: Pflicht in der EU und an jeder Anzeige sichtbar, meist zweimal der Name deines Büros.
4. Die Adresse deiner Datenschutzerklärung (https). Ohne sie nimmt Meta kein Lead-Formular an.
5. Das Monatsbudget in Euro. Es steht auch als Ausgabengrenze an deinem Werbekonto, und deren Zähler beginnt jeden Monat neu.
Zwei Dinge bei Meta kann Athaus nicht für dich tun: eine Zahlungsart am Werbekonto hinterlegen (im Werbeanzeigenmanager) und auf deiner Facebook-Seite einmal die Bedingungen für Lead-Anzeigen annehmen (facebook.com/ads/leadgen/tos). Fehlt das, legt Athaus eine Aufgabe dazu an.
## Der Entwurf [#der-entwurf]
Athaus entwirft die Anzeige aus dem Objekt: Text, Bild (das Titelfoto), Gebiet und Budget. Am Anfang des Textes stehen die Pflichtangaben: Energie nach § 87 GEG, Preis und Provision, bei Miete die Angaben zum Makler nach WoVermRG. Fehlt eine, entsteht keine Anzeige, sondern eine Aufgabe, die sagt, was fehlt.
Das Gebiet ist der Ort des Objekts mit mindestens 17 km Umkreis (Metas Kategorie für Wohnen, HOUSING), 18 bis 65+, alle Geschlechter, keine Postleitzahlen, nur Deutschland.
Eine Anzeige läuft als Vorgabe 7 Tage. Das Tagesbudget richtet sich nach dem Preis:
| Preisklasse | Je Tag |
| ------------------------- | ------- |
| Kauf bis 300.000 Euro | 10 Euro |
| Kauf bis 700.000 Euro | 15 Euro |
| Kauf bis 1,5 Mio. Euro | 20 Euro |
| Kauf darüber | 30 Euro |
| Miete bis 1.000 Euro kalt | 5 Euro |
| Miete bis 2.000 Euro kalt | 7 Euro |
| Miete darüber | 10 Euro |
Passen schon 5 oder mehr aktive Suchaufträge, sinkt das Tagesbudget auf drei Viertel, ab 20 auf die Hälfte: diese Suchenden bekommen das Objekt ohnehin kostenlos. Nie unter 5 Euro am Tag und nie über das, was vom Monatsbudget übrig ist. Dann wird die Anzeige kürzer, und unter 3 Tagen gibt es keine.
## Freigabe [#freigabe]
Die Anzeige erscheint unter **Zur Freigabe** mit der Vorschau von Meta, drei Zahlen (Budget, Laufzeit, Umkreis), der Zeile zur Nachfrage (wie viele Suchende schon passen) und dem Text. Ein Klick: **Anzeige starten**. Vorher hat Meta sie schon in einem Probelauf geprüft; nach deinem Ja prüft Meta sie noch einmal, bevor sie ausgespielt wird.
Jede freigegebene Anzeige reserviert ihr ganzes Budget im Monatsbudget. Zwei Freigaben zugleich können es also nie überschreiten.
Unter [Einstellungen, Automatik](https://app.athaus.ai/einstellungen/automatik) hat die Art **Anzeigen** die Stufen Aus, Vorher fragen (Vorgabe) und Automatisch ([Automatik-Stufen](/anleitungen/automatik-stufen)). Auf **Automatisch** startet Athaus zu einem neu veröffentlichten Inserat selbst eine Anzeige, nur im Monatsbudget.
## Anhalten und Zahlen [#anhalten-und-zahlen]
Jede Anzeige steht danach in der Liste **Letzte Anzeigen** auf derselben Einstellungsseite. Ist das Objekt reserviert, verkauft oder vermietet oder das Inserat offline, hält Athaus eine laufende Anzeige selbst an; das senkt nur die Ausgaben und braucht kein Ja. Von Hand hältst du sie mit **Anhalten** in der Liste an oder im Chat. Was nicht ausgegeben ist, wird im Monatsbudget wieder frei.
Ausgaben, Reichweite, Klicks, Leads und Kosten je Lead stehen je Anzeige in der Liste und als Zeile **Anzeige** in der Seitenspalte des Objekts. Die Zahlen kommen von Meta und sind höchstens etwa eine Viertelstunde alt.
## Nach dem Verkauf: Eigentümer in der Gegend [#nach-dem-verkauf-eigentümer-in-der-gegend]
Ist ein Objekt verkauft, legt Athaus eine zweite Art von Anzeige zur Freigabe hin: **Verkauft in** dem Ort des Objekts, 14 Tage, an Eigentümer in der Gegend. Dazu kommt, wie bisher, der Beitrag **Verkauft** in deinen Netzen. Die Anzeige geht denselben Weg wie jede andere: dieselbe Stufe unter Automatik, dasselbe Monatsbudget, dasselbe Ja. Vermietet ist kein Anlass.
Das Formular fragt nach der Adresse der Immobilie, der Art (Wohnung, Haus, Grundstück, Gewerbe), der Wohnfläche, dem Baujahr, dem Zeitraum für den Verkauf und **Rückruf erwünscht?**. Es gibt eines je Büro, mit deiner Datenschutzerklärung. Am Anfang des Textes stehen die Energieangaben des verkauften Hauses, aber kein Preis.
Ein Lead daraus wird keine Anfrage. Er wird ein Kontakt, seine Immobilie ein Objekt im Entwurf mit ihm als Eigentümer, und Athaus rechnet dazu einen Bewertungsentwurf mit dem Anlass Verkauf. Du bekommst eine Aufgabe mit allen Angaben; ob du anrufen darfst, steht darin (nur nach einem Ja im Formular, § 7 UWG). Reicht die Adresse für ein Objekt nicht (keine Hausnummer), bleibt es beim Kontakt und der Aufgabe. Ein Lead aus deiner Anzeige bleibt in deinem Büro: er wird nie ein Suchauftrag und nie ein Konto bei Athaus.
Wird der Verkauf aufgehoben, hält Athaus die Anzeige an, denn **Verkauft in** stimmt dann nicht mehr.
## Vermarktungsbericht [#vermarktungsbericht]
Der Vermarktungsbericht ist eine Seite für den Eigentümer, ohne Konto lesbar, wie der Bericht zur Bewertung: die Reichweite über Beiträge und über Anzeigen, die Anfragen je Quelle, die Besichtigungen und wie viele aktive Suchaufträge gerade passen. Er zeigt nur Zahlen, nie einen Namen, keine Nachricht und nicht dein Budget.
Den Link erstellst du in der Seitenspalte des Objekts unter **Vermarktung**, Zeile **Bericht**: ein Klick ist die Freigabe. Ist ein Inserat mit eingerichteten Anzeigen online gegangen, schlägt Athaus den Link auch selbst vor; er liegt dann unter **Zur Freigabe**, und dein Ja erstellt ihn. Geschickt wird er nie von selbst. Du kopierst ihn und schickst ihn dem Eigentümer; die Zahlen darin gehen danach von selbst weiter. **Bericht ansehen** öffnet ihn, ohne als Aufruf zu zählen. Zurückziehen ist endgültig, ein neuer Link hat eine neue Adresse.
## Im Chat [#im-chat]
* `anzeige_einrichten`: der Chat führt durch die Einrichtung. Ein Monatsbudget setzt er erst nach deinem ausdrücklichen Ja in der nächsten Nachricht. Verbinden geht nur im Browser.
* `anzeige_vorschlagen`: immer ein Vorschlag. Bis zu deinem Ja läuft nichts und nichts kostet Geld. An einem verkauften Objekt ist es die Anzeige an Eigentümer.
* `anzeige_stand`: die Zahlen einer Anzeige; mit einem Objekt auch der Link zum Vermarktungsbericht.
* `anzeige_pausieren`: hält eine Anzeige an.
# Automatik-Stufen
Adresse: https://docs.athaus.ai/anleitungen/automatik-stufen
> Wie weit der Agent von Athaus allein gehen darf, je Art von Vorschlag eingestellt. Die Grenze verschiebst du, nie der Agent.
Für jede Art von Vorschlag gilt eine von drei Stufen:
| Stufe | Was passiert |
| ----------------- | ----------------------------------------------------- |
| **Aus** | Der Agent schlägt nichts vor. |
| **Vorher fragen** | Der Agent bereitet vor, ein Mensch sagt Ja oder Nein. |
| **Automatisch** | Der Agent tut es gleich, und es steht im Protokoll. |
Was hinausgeht (eine Antwort, eine Absage, ein Beitrag), steht von Anfang an auf **Vorher fragen**. Was im Haus bleibt, steht auf **Automatisch**, und auch dort füllt der Agent nur leere Felder: eine Änderung, die einen vorhandenen Wert überschreiben würde, wartet trotzdem auf ein Ja.
## Wo du sie einstellst [#wo-du-sie-einstellst]
Unter [Einstellungen, Automatik](https://app.athaus.ai/einstellungen/automatik), in drei Gruppen: Anfragen, Objekte und Soziale Netze. Einstellen können Inhaber und Verwaltung. Der Chat stellt keine Stufe um.
## Alle Aufgaben auf einmal [#alle-aufgaben-auf-einmal]
Über den Gruppen steht die Zeile **Alle Aufgaben**. Sie stellt jede Art darunter mit einem Klick auf dieselbe Stufe: **Aus**, **Vorher fragen** oder **Automatisch**. Stehen alle Arten gleich, ist diese Stufe gewählt; sonst steht dort **Gemischt** mit der Zahl je Stufe.
Bei **Automatisch** fragt Athaus einmal nach und nennt, was danach ohne dein Ja hinausgeht: Mails an Interessenten, Beiträge und Antworten in deinen Netzen. Erst **Alle auf Automatisch stellen** stellt um.
## Das Angebot zur Automatik [#das-angebot-zur-automatik]
Steht eine Art auf **Vorher fragen**, zählt Athaus mit. Hast du in den letzten 30 Tagen mindestens 20 Mal entschieden und davon mindestens 90 Prozent unverändert angenommen, bietet Athaus an, die Art auf **Automatisch** zu stellen. Umgestellt wird erst mit deinem Klick auf **Auf Automatisch stellen**; bei einer Art, die hinausgeht, fragt Athaus vorher noch einmal nach.
## Das Protokoll [#das-protokoll]
Im Protokoll steht, was Athaus ohne dein Ja getan hat. Jeder Eintrag lässt sich mit **Zurücknehmen** rückgängig machen. Eine gesendete Mail bleibt gesendet.
## Und über MCP [#und-über-mcp]
Ein Agent über [Athaus für Makler](/mcp) hält sich an dieselben Stufen. Was du auf **Automatisch** gestellt hast, läuft auch über eine Verbindung ohne Klick, wenn sie das Recht [`freigeben`](/mcp/rechte#freigeben) trägt. Sonst wartet es auf deinen Klick, in der Karte des Assistenten oder in der App ([wann ein Klick nötig ist](/mcp/rechte#klick)). Eine Stufe setzt ein Agent nie selbst, auch nicht über MCP.
# Bestand umziehen
Adresse: https://docs.athaus.ai/anleitungen/bestand-umziehen
> Objekte, Kontakte und Verlauf aus onOffice, Propstack oder einer OpenImmo-Datei, ohne dass etwas still verloren geht.
Der Umzug holt deinen Bestand aus dem alten System zu Athaus. Er schreibt nie etwas zurück, und er lässt sich wiederholen, ohne Dubletten anzulegen. Anbindungen und Import sind Teil des Tarifs Pro.
## Woher [#woher]
| Quelle | Was du brauchst | Wo |
| ------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| onOffice enterprise | API-Token und Secret | [Einstellungen, Anbindungen](https://app.athaus.ai/einstellungen/anbindungen) |
| Propstack | API-Schlüssel | [Einstellungen, Anbindungen](https://app.athaus.ai/einstellungen/anbindungen) |
| OpenImmo-Datei | XML oder ZIP, bis 200 Immobilien und 4 MB; Fotos aus dem ZIP kommen mit | **Importieren** unter [Meine Immobilien](https://app.athaus.ai/immobilien) |
## So läuft es [#so-läuft-es]
### Verbinden [#verbinden]
Den Schlüssel eintragen. Der Dialog sagt, welchen Zugriff das gibt.
### Probelauf [#probelauf]
Holt wie ein echter Lauf, bis zu 200 Datensätze, und schreibt nichts in deinen Bestand. Das Ergebnis lautet etwa: würde 12 neu anlegen und 3 aktualisieren, geschrieben ist nichts.
### Felder zuordnen [#felder-zuordnen]
Unsichere Felder stehen oben. Vorschläge der KI sind als solche markiert, und **Keins, bleibt im alten CRM** ist immer eine Wahl.
### Immobilien holen [#immobilien-holen]
Der erste Lauf holt alles, jeder weitere nur die Änderungen; **Alles neu holen** im Menü erzwingt einen vollen Lauf. Die Reihenfolge ist Kontakte, Immobilien, Rollen (Eigentümer, Interessent), Suchprofile, Verlauf, Dokumente. Ein Lauf lässt sich abbrechen.
### Bericht lesen [#bericht-lesen]
Unter **Letzte Läufe** steht je Lauf, was ankam, was aktualisiert wurde und was nicht passte.
## Was dabei nicht verloren geht [#was-dabei-nicht-verloren-geht]
* **Der Rohsatz**: jeder Datensatz wird unverändert aufbewahrt. Ein zweiter Lauf erkennt ihn und legt nichts doppelt an.
* **Die fremde Kennung**: zu jedem Datensatz merkt sich Athaus, unter welcher Kennung er im alten System stand.
* **Der Rest**: was keinem Feld zugeordnet ist, steht am Datensatz unter **Aus dem alten CRM**.
## Einen Lauf zurücknehmen [#einen-lauf-zurücknehmen]
**Lauf zurücknehmen** löscht, was der Lauf angelegt hat, und gibt allem, was er geändert hat, den Stand davor. Was du seitdem selbst geändert hast, bleibt und steht danach im Bericht. Datensätze, die inzwischen benutzt werden, und laufende Inserate bleiben als Konflikt stehen. Einwilligungen werden nie zurückgenommen.
## Einwilligungen und was draußen bleibt [#einwilligungen-und-was-draußen-bleibt]
* Jede Einwilligung kommt als eigener Eintrag mit Nachweis. Ein Widerruf übersteht jeden späteren Lauf.
* Nicht übernommen werden Kontakte mit Löschwunsch oder abgelaufener Aufbewahrung, Passwörter, Token und Zahlungsdaten.
* Ausweisdaten und Unterlagen nach dem Geldwäschegesetz werden nie geladen, nur gezählt.
* Suchprofile aus dem alten CRM passen nur auf deinen eigenen Bestand und zählen nie in die Nachfrage anderer Anbieter.
* Wird ein Datensatz im alten System gelöscht, löscht Athaus nichts: der Satz wird markiert, ein laufendes Inserat zurückgezogen.
# Inserat veröffentlichen
Adresse: https://docs.athaus.ai/anleitungen/inserat-veroeffentlichen
> Vom Entwurf zum laufenden Inserat im Katalog von athaus.ai, und auf Wunsch in ChatGPT und Claude.
## Anlegen [#anlegen]
Zwei Wege: im Chat auf der Startseite mit einem Satz, oder von Hand unter [/immobilien/anlegen](https://app.athaus.ai/immobilien/anlegen). Der Editor ist eine Seite mit Abschnitten in dieser Reihenfolge: Was und wo, Fotos, Eckdaten, Preis, Energieausweis, Ausstattung, Bedingungen, Beschreibung.
Es gibt keinen Speichern-Knopf. Sobald Vorhaben (Kauf oder Miete), Art und Ort feststehen, ist der Entwurf angelegt, und jede Änderung bleibt.
## Was dabei sein muss [#was-dabei-sein-muss]
Ohne diese Angaben geht das Inserat nicht online; im Editor sind sie mit einem Stern markiert, und **Bis es online geht** zählt auf, was noch fehlt.
* Straße, fünfstellige Postleitzahl, Ort
* Art der Immobilie, Wohnfläche (außer bei Grundstücken)
* ein Preis über 0
* eine Beschreibung mit mindestens 40 Zeichen
* mindestens ein Foto
* die Angaben aus dem Energieausweis nach § 87 GEG: Art des Ausweises, Energiewert, bei Wohngebäuden die Effizienzklasse, Energieträger, Heizung und Baujahr. Nichtwohngebäude nennen Wärme und Strom getrennt. Grundstücke sind ausgenommen.
## Veröffentlichen [#veröffentlichen]
Auf der Seite der Immobilie **Inserat veröffentlichen**. Das Inserat bekommt eine eigene Seite im Katalog von athaus.ai und läuft in Suche und Abgleich mit den Suchaufträgen. Veröffentlichen und Zurückziehen wirken innerhalb von Sekunden. Ein Exposé als PDF gibt es dazu.
Der Stand der Vermarktung ist einer von: Entwurf, Inserat läuft, Inserat pausiert, Reserviert, Verkauft, Vermietet.
## In ChatGPT und Claude [#in-chatgpt-und-claude]
In der Seitenspalte der Immobilie unter **Vermarktung** steht der Schalter **In ChatGPT und Claude**. Er ist aus, bis du ihn einschaltest, und wirkt erst, wenn das Inserat läuft. Dann finden Suchende es über den MCP-Server [Athaus Immobiliensuche](/mcp/werkzeuge/suche) und sehen es als [Exposé-Karte](/mcp/apps).
Das Exposé in ChatGPT und Claude verweist auf das Impressum deines Büros. Fehlt es, fragt die Seitenspalte danach: Adresse eintragen, dann schaltet es sich ein. Private Anbieter brauchen keines.
Inserate gehen nicht an andere Portale. Wer sie dort will, stellt sie dort selbst ein.
# Soziale Netze
Adresse: https://docs.athaus.ai/anleitungen/soziale-netze
> Beiträge zu deinen Inseraten auf Facebook, Instagram, LinkedIn und im Google-Unternehmensprofil, vorbereitet vom Agenten, veröffentlicht mit deinem Ja.
Die Verbindung zu Facebook, Instagram, LinkedIn und Google ist bei Athaus noch nicht eingerichtet. Bis sie steht, zeigt die Seite das so an, und die API antwortet mit `social_nicht_eingerichtet`. Was unten steht, beschreibt, wie es dann läuft.
## Was es tut [#was-es-tut]
Wenn ein Inserat online geht, der Preis sinkt oder ein Objekt reserviert, verkauft oder vermietet ist, entwirft Athaus einen Beitrag. Er bringt die Fotos mit (auf Instagram als Karussell ab zwei Fotos) und die Pflichtangaben: Energie, Preis und Provision, bei Miete den Makler. Diese Angaben rechnet Athaus aus dem Objekt, nie das Modell. Fehlt eine, legt Athaus statt des Beitrags eine Aufgabe an.
Auf Kommentare und Nachrichten kann Athaus Antworten entwerfen.
Jeder Beitrag wartet von Anfang an auf ein Ja: **Freigeben und veröffentlichen**. Wie bei allen anderen Arten lässt sich das unter [Automatik-Stufen](/anleitungen/automatik-stufen) ändern.
Grenzen eines Beitrags: 1.500 Zeichen, 10 Bilder, geplant bis zu 7 Tage im Voraus.
## Wo [#wo]
Unter [Einstellungen, Soziale Netze](https://app.athaus.ai/einstellungen/kanaele). Konten verbinden können nur Inhaber und Verwaltung. An jeder Immobilie zeigt die Zeile **Social**, wo ein Beitrag steht: wird gesendet, geplant, erschienen, teilweise erschienen oder nicht erschienen.
Das Impressum verlinkst du in jedem Netz selbst im Profil.
# Authentifizierung
Adresse: https://docs.athaus.ai/api/authentifizierung
> Wer sich wie ausweist: niemand für die öffentlichen Wege, ein Konto für alles andere.
| Wer | Wie | Wofür |
| ------------------------------ | ------------------------------- | ------------------------------------------ |
| Jeder | ohne Anmeldung | die [öffentlichen Wege](/api/referenz) |
| Eine App, die für dich handelt | OAuth 2.1 | die [zwei MCP-Server](/mcp/anmeldung) |
| Dein eigener Agent oder Dienst | `Authorization: Bearer ath_...` | Athaus für Makler und die Wege der App |
| Die Apps von Athaus selbst | Sitzungscookie | die eingeloggten Flächen, nicht für Dritte |
## Mit einem Schlüssel [#mit-einem-schlüssel]
```bash
curl https://api.athaus.ai/api/public/properties \
-H "Authorization: Bearer ath_..."
```
Ein [Schlüssel](/api/schluessel) zählt nur, wenn die Anfrage kein Sitzungscookie trägt. Er gehört einer Person und sieht, was diese Person in der App sieht.
**Lesen darf jeder Schlüssel** (`GET`, `HEAD`, `OPTIONS`). **Schreiben** (`POST`, `PUT`, `PATCH`, `DELETE`) darf außerhalb der MCP-Server nur ein Schlüssel mit dem Recht `freigeben`; jeder andere bekommt `403`:
```json
{ "error": "schluessel_recht_fehlt" }
```
Bei den MCP-Servern gelten die Rechte je Werkzeug ([Rechte](/mcp/rechte)).
## Was ein Schlüssel nicht kann [#was-ein-schlüssel-nicht-kann]
* Einer Verbindung zustimmen oder eine trennen: das braucht die Anmeldung im Browser.
* [MCP Events](/mcp/ereignisse) abonnieren: das geht nur über eine Verbindung mit OAuth.
# Fehlercodes
Adresse: https://docs.athaus.ai/api/fehlercodes
> Jeder Code, den die API nach außen gibt, mit seiner Bedeutung. Erzeugt aus dem Verzeichnis, gegen das die API selbst getippt ist.
Jeder Fehler hat dieselbe Form:
```json
{ "error": "rate_limited" }
```
Der Code ist eine Kennung für eine Verzweigung in deinem Programm, kein Satz für einen Menschen. Es gibt genau einen Code je Bedeutung, und keiner verschwindet still: die API darf nur Codes aus diesem Verzeichnis ausgeben. Verzweige auf den Code, nie auf den HTTP-Status allein; ein unbekannter Code ist ein Fall für deine allgemeine Meldung.
## Anmeldung und Konto [#anmeldung-und-konto]
| Code | Bedeutung |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `account_exists` | Zu dieser Adresse gibt es schon ein Konto. |
| `no_account` | Zu dieser Adresse gibt es kein Konto. |
| `anmeldung_pausiert` | Der Betriebsschalter steht auf Pause. |
| `keine_freigabe` | Die Anmeldung ist pausiert, und für diese Adresse gibt es keine Freigabe. |
| `konto_pruefung_fehlt` | Die Kontoprüfung war nicht erreichbar. |
| `wegwerf_adresse` | Eine Wegwerfadresse. An sie kommt keine Antwort an. |
| `adresse_unzustellbar` | Die Domain der Adresse nimmt keine Post an: es gibt sie nicht, oder sie hat keinen Mailserver. |
| `invalid_code` | Der eingegebene Code stimmt nicht. |
| `unauthorized` | Keine gültige Sitzung. |
| `forbidden` | Angemeldet, aber nicht berechtigt. |
| `schluessel_recht_fehlt` | Der API-Schlüssel darf hier nicht schreiben: außerhalb des MCP-Servers schreibt nur ein Schlüssel mit dem Recht freigeben. |
| `verbindung_ungueltig` | Die Zustimmung zu einer Verbindung ist abgelaufen, verändert, gehört zu keinem bekannten Client oder mischt die Rechte beider Seiten. |
| `seite_fehlt` | Eine Verbindung als Anbieter braucht ein Konto, das die Anbieterseite eingerichtet hat. |
| `contact_missing` | Zur Sitzung gibt es keinen Kontakt. |
| `confirmation_mismatch` | Die Bestätigung stimmt nicht mit der Vorgabe überein. |
## Freigabeliste (Panel) [#freigabeliste-panel]
| Code | Bedeutung |
| -------------------- | ----------------------------------------------------------------------------------------- |
| `freigabe_vorhanden` | Für diese Adresse oder Domain gilt schon eine Freigabe. |
| `domain_zu_breit` | Eine Domain eines Mailanbieters lässt sich nicht freigeben, nur einzelne Adressen darauf. |
## Form der Anfrage [#form-der-anfrage]
| Code | Bedeutung |
| --------------------- | ------------------------------------------------ |
| `invalid_body` | Der Rumpf passt nicht zum Schema. |
| `invalid_query` | Die Abfrageparameter passen nicht zum Schema. |
| `invalid_id` | Die Kennung ist keine gültige Kennung. |
| `invalid_input` | Die Eingabe passt nicht. |
| `query_required` | Es fehlt die Suchabfrage. |
| `no_fields` | Es wurde kein einziges Feld geschickt. |
| `unknown_key` | Der Schlüssel ist unbekannt. |
| `missing_property_id` | Es fehlt die Kennung der Immobilie. |
| `payload_too_large` | Der Rumpf oder die Datei ist größer als erlaubt. |
| `not_found` | Es gibt nichts unter dieser Kennung. |
## Drossel [#drossel]
| Code | Bedeutung |
| -------------- | ------------------------------------ |
| `rate_limited` | Zu viele Anfragen in zu kurzer Zeit. |
## Dateien [#dateien]
| Code | Bedeutung |
| ---------------------- | -------------------------------------------------------------- |
| `datei_fehlt` | Es war keine Datei dabei. |
| `invalid_attachment` | Der Anhang ist nicht erlaubt. |
| `typ_nicht_erlaubt` | Dieser Dateityp ist nicht erlaubt. |
| `typ_stimmt_nicht` | Der Inhalt der Datei passt nicht zu ihrem Typ. |
| `zu_viele` | Mehr Dateien, als erlaubt sind. |
| `zu_gross_gesamt` | Die Dateien zusammen sind größer als erlaubt. |
| `kein_xml` | Die Datei ist kein XML. |
| `kein_openimmo` | Das XML ist kein OpenImmo. |
| `kaputt` | Die Datei ließ sich nicht lesen. |
| `leer` | Die Datei oder der Wurf enthält nichts. |
| `unbekanntes_fach` | Dieses Fach der Ablage gibt es nicht. |
| `datei_nicht_abrufbar` | Die Datei ließ sich unter der genannten Adresse nicht abrufen. |
## Tarif und Bezahlung [#tarif-und-bezahlung]
| Code | Bedeutung |
| --------------------------- | ------------------------------------------------------------------------- |
| `payment_required` | Ohne Bezahlung geht es hier nicht weiter. |
| `plan_required` | Der Tarif enthält diese Leistung nicht. |
| `tarif_zu_klein` | Der Tarif enthält diese Leistung nicht (Anbieterseite). |
| `quota_exceeded` | Die Grenze des Tarifs ist erreicht (Suchende). |
| `mandate_limit` | Mehr Suchaufträge, als der Tarif erlaubt. |
| `abo_vorhanden` | Es läuft schon ein Abo. |
| `zustimmung_fehlt` | Es fehlt die Zustimmung zu AGB und AV-Vertrag in ihrer aktuellen Fassung. |
| `kein_wechsel` | Ein Wechsel auf denselben Tarif ist keiner. |
| `no_customer` | Zu diesem Konto gibt es keinen Kunden bei Stripe. |
| `plan_not_configured` | Zu diesem Tarif ist kein Preis hinterlegt. |
| `billing_not_configured` | Die Bezahlung ist nicht eingerichtet. |
| `billing_unavailable` | Der Bezahldienst antwortet nicht. |
| `verkauf_pausiert` | Der Verkauf ist vom Betrieb pausiert. |
| `kuendigung_fehlgeschlagen` | Die Kündigung ging nicht durch. |
| `kein_abo` | Zu diesem Konto läuft kein Abo. |
| `nicht_gekuendigt` | Es liegt keine Kündigung vor, die sich zurücknehmen ließe. |
| `maklervertrag_offen` | Es läuft noch ein Maklervertrag. |
## Suchauftrag [#suchauftrag]
| Code | Bedeutung |
| -------------------- | ---------------------------------------------------------------------------------- |
| `mandate_conflict` | Der Suchauftrag widerspricht einem bestehenden. |
| `mandate_incomplete` | Dem Suchauftrag fehlen Pflichtangaben. |
| `no_active_mandate` | Es gibt keinen laufenden Suchauftrag. |
| `send_failed` | Die Sendung ging nicht raus. |
| `claim_not_stored` | Der Anspruch wurde nicht hinterlegt. |
| `schon_angefragt` | Zu dieser Immobilie gibt es schon eine Anfrage. |
| `kein_uebergang` | Der Treffer steht inzwischen anders; die Entscheidung führt von dort nirgends hin. |
## Inserat und Objekt [#inserat-und-objekt]
| Code | Bedeutung |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------- |
| `unvollstaendig` | Dem Inserat fehlen Pflichtangaben. |
| `inserat_abgeschlossen` | Die Immobilie ist verkauft oder vermietet. |
| `inserat_reserviert` | Die Immobilie ist reserviert. |
| `inserat_gesperrt` | Das Inserat ist gesperrt. |
| `kuerzel_vergeben` | Das Kürzel hat schon jemand. |
| `keine_adresse` | Es fehlt die Anschrift. |
| `adresse_vergeben` | Zu dieser Anschrift gibt es schon eine Immobilie. |
| `eigene_adresse` | Die eigene Adresse lässt sich nicht einladen. |
| `schon_eingeladen` | Diese Person ist schon eingeladen. |
| `entwurf_leer` | Der Entwurf kam leer zurück. |
| `entwurf_fehlgeschlagen` | Der Entwurf ließ sich nicht erzeugen. |
| `versand_fehlgeschlagen` | Der Versand ging nicht durch. |
| `zu_wenig` | Zu wenig Material für diesen Schritt. |
| `seller_disabled` | Die Anbieterseite ist abgeschaltet. |
| `abruf` | Der Abruf beim fremden System schlug fehl. |
| `abgeschlossen` | Der Vorgang ist abgeschlossen und nicht mehr zu ändern. |
| `inserat_aktiv` | Die Immobilie ist noch inseriert. |
| `nicht_online` | Das Inserat läuft gerade nicht. |
| `beispielobjekt` | Die Immobilie ist ein erfundenes Beispielobjekt; an sie geht keine Anfrage. |
| `impressum_fehlt` | Ein gewerblicher Anbieter braucht ein hinterlegtes Impressum, bevor seine Objekte in ChatGPT und Claude erscheinen. |
## Anfrage ohne Konto [#anfrage-ohne-konto]
| Code | Bedeutung |
| -------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `einwilligung_fehlt` | Es fehlt die ausdrückliche Einwilligung in die Weitergabe der Anfrage an den Anbieter, in ihrer aktuellen Fassung. |
## CRM [#crm]
| Code | Bedeutung |
| ---------------- | ----------------------------------------------------------------- |
| `email_vergeben` | Zu dieser Mailadresse gibt es in diesem Büro schon einen Kontakt. |
| `name_vergeben` | Eine Liste dieser Art trägt den Namen schon. |
## Anbindungen an fremde Systeme [#anbindungen-an-fremde-systeme]
| Code | Bedeutung |
| ------------------------------ | -------------------------------------------------------------------- |
| `geheimnis_nicht_eingerichtet` | Zugangsdaten lassen sich gerade nicht sicher ablegen. |
| `anbindung_nicht_gespeichert` | Die Anbindung ließ sich nicht speichern. |
| `schluessel_falsch` | Das fremde System lehnt die Zugangsdaten ab. |
| `keine_berechtigung` | Die Zugangsdaten gelten, dürfen aber keine Objekte lesen. |
| `nicht_erreichbar` | Das fremde System war nicht erreichbar. |
| `quelle_drosselt` | Das fremde System nimmt gerade keine weiteren Anfragen an. |
| `quelle_abgewiesen` | Das fremde System hat die Anfrage abgewiesen. |
| `quelle_unlesbar` | Das fremde System hat etwas geantwortet, das sich nicht lesen lässt. |
| `zielfeld_unbekannt` | Dieses Zielfeld gibt es nicht. |
| `lauf_nicht_zuruecknehmbar` | Dieser Lauf lässt sich nicht zurücknehmen. |
| `lauf_laeuft` | Für diese Anbindung läuft schon ein Lauf. |
| `lauf_beendet` | Dieser Lauf ist schon beendet. |
## Hintergrundaufgaben (Panel) [#hintergrundaufgaben-panel]
| Code | Bedeutung |
| -------------------------- | ------------------------------------------- |
| `job_nicht_fehlgeschlagen` | Dieser Job ist nicht (mehr) fehlgeschlagen. |
## Der Agent im Hintergrund [#der-agent-im-hintergrund]
| Code | Bedeutung |
| ------------------------- | ----------------------------------------------------------------------------------------------------- |
| `vorschlag_entschieden` | Über diesen Vorschlag ist schon entschieden: angenommen, verworfen oder verfallen. |
| `bestaetigung_noetig` | Diese Handlung führt erst der Klick eines Menschen aus, in der Karte des Assistenten oder in der App. |
| `bestaetigung_abgelaufen` | Die Bestätigung ist abgelaufen; die Handlung muss neu vorbereitet werden. |
| `stufe_aus` | Das Büro hat diese Art von Handlung in der Automatik abgeschaltet; nichts wird vorbereitet. |
| `wert_geaendert` | Der Wert wurde seit der Änderung des Agenten wieder geändert; zurücksetzen ginge über diese hinweg. |
| `schon_rueckgaengig` | Diese Änderung des Agenten ist schon zurückgenommen. |
## Besichtigung [#besichtigung]
| Code | Bedeutung |
| ----------------------------- | ----------------------------------------------------------- |
| `voll` | Der Termin ist belegt. |
| `vorbei` | Der Zeitpunkt liegt in der Vergangenheit. |
| `schon_gebucht` | Es gibt schon eine Buchung dieser Person. |
| `kalender_belegt` | Der Anbieter hat zu dieser Zeit schon einen anderen Termin. |
| `kalender_nicht_eingerichtet` | Dieser Kalender-Anbieter ist bei uns nicht eingerichtet. |
## Soziale Netze [#soziale-netze]
| Code | Bedeutung |
| --------------------------- | -------------------------------------------------------------------------------------------------- |
| `social_nicht_eingerichtet` | Die Anbindung an die sozialen Netze ist bei uns nicht eingerichtet. |
| `social_kein_konto` | Das Büro hat in keinem passenden Netz ein verbundenes Konto. |
| `social_vorlage_noetig` | Das Antwortfenster des Kanals ist zu; eine Antwort ginge nur noch als freigegebene Vorlage hinaus. |
| `werbekonto_fehlt` | Die Einrichtung der Anzeigen ist nicht fertig; es fehlt das Werbekonto oder ein Schritt dazu. |
| `monatsbudget_erschoepft` | Das freigegebene Monatsbudget für Anzeigen reicht dafür nicht mehr. |
## Bewertung [#bewertung]
| Code | Bedeutung |
| --------------------------- | ------------------------------------------------------------------------------------------------------- |
| `unsupported_property_type` | Für diese Objektart gibt es keine Bewertung. |
| `bewertung_fertig` | Die Bewertung ist fertig; eine Annahme ändert man in einer neuen Bewertung. |
| `unbekannte_annahme` | Eine Annahme mit diesem Schlüssel gibt es nicht. |
| `bewertung_nicht_fertig` | Die Bewertung ist noch ein Entwurf; einen Bericht für den Eigentümer gibt es erst, wenn sie fertig ist. |
| `bewertung_ohne_spanne` | Die Bewertung hat keine Spanne; ohne Wert gibt es keinen Bericht für den Eigentümer. |
| `annahme_von_hand` | Ein Mensch hat diese Annahme gesetzt; ein ausgelesener Wert ersetzt sie nicht. |
| `incomplete` | Für eine Bewertung fehlen Angaben. |
| `ambiguous` | Die Angabe ist nicht eindeutig. |
## Zustellwege fremder Systeme [#zustellwege-fremder-systeme]
| Code | Bedeutung |
| ------------------- | ------------------------------------------ |
| `missing_signature` | Es fehlt die Signatur. |
| `invalid_signature` | Die Signatur von Stripe stimmt nicht. |
| `bad_payload` | Der Rumpf des Zustellwegs passt nicht. |
| `bad_signature` | Die Signatur des Zustellwegs stimmt nicht. |
| `retry_later` | Später noch einmal versuchen. |
## Der Rest [#der-rest]
| Code | Bedeutung |
| ---------------- | ------------------------------------------------ |
| `tool_failed` | Das Werkzeug des Agenten schlug fehl. |
| `internal_error` | Ein Fehler, für den es keinen eigenen Code gibt. |
# Die öffentliche API
Adresse: https://docs.athaus.ai/api
> Lesender Zugriff auf den Katalog von athaus.ai und den amtlichen Bodenwert, ohne Anmeldung, beschrieben als OpenAPI 3.1.
| | |
| ------------ | --------------------------------------------------------------------------------------- |
| Basisadresse | `https://api.athaus.ai` |
| Beschreibung | [`https://api.athaus.ai/openapi.json`](https://api.athaus.ai/openapi.json), OpenAPI 3.1 |
| Anmeldung | keine für die öffentlichen Wege |
| Format | JSON, Fehler immer als `{ "error": "" }` ([Fehlercodes](/api/fehlercodes)) |
| Drossel | je Aufrufer, `429` wenn es zu viele werden ([Limits](/api/limits)) |
## Was dort steht [#was-dort-steht]
Nur der öffentliche, lesende Teil: Inserate suchen, ein Inserat holen, die Lage-Grundlage zu einer Postleitzahl oder einem Punkt. Kein Weg, der eine Anmeldung braucht, steht im Dokument; die eingeloggten Wege der App haben keine fremden Aufrufer. Wer mit seinem eigenen Bestand, seinen Anfragen oder Vorschlägen arbeiten will, nimmt den [MCP-Server](/mcp).
Der Katalog enthält ausschließlich Objekte, die Anbieter selbst bei Athaus eingestellt haben. Inserate anderer Portale sind nicht enthalten. Ein Objekt mit `"beispiel": true` ist ein erfundenes Beispiel zur Ansicht, kein Angebot.
## Ein Aufruf [#ein-aufruf]
```bash
curl "https://api.athaus.ai/api/public/properties?city=Leipzig&transaction_type=buy&page_size=3"
```
```json
{
"items": [{ "id": "…", "title": "…", "city": "Leipzig", "asked_price": 289000, "total_rooms": 3, "square_meters": 78 }],
"total": 41,
"page": 1,
"page_size": 3
}
```
Die Werte oben sind ein Beispiel der Form. Jeder Weg mit allen Parametern und Antworten steht in der [Referenz](/api/referenz).
# Limits
Adresse: https://docs.athaus.ai/api/limits
> Wie viele Aufrufe Athaus annimmt, und was bei zu vielen passiert.
Jeder Weg hat eine Drossel nach dem Eimer-Prinzip: eine Menge Aufrufe auf einmal, danach eine feste Rate je Sekunde. Gezählt wird je Konto, wer angemeldet ist, sonst je IP-Adresse (bei IPv6 je /64-Netz).
## Wenn es zu viele werden [#wenn-es-zu-viele-werden]
```http
HTTP/1.1 429 Too Many Requests
content-type: application/json
{ "error": "rate_limited" }
```
Einen `Retry-After`-Kopf gibt es nicht. Warte nach einer `429` kurz und verdopple die Pause bei jeder weiteren. Bei den MCP-Servern kommt die `429` als HTTP-Antwort, nicht als JSON-RPC-Fehler.
## Die Werte [#die-werte]
| Weg | Rate je Sekunde | Auf einmal |
| ------------------------------------------------------------------------------------------ | --------------- | ---------- |
| `GET /api/public/properties` und `GET /api/public/properties/{id}` (ein gemeinsamer Eimer) | 2 | 10 |
| `POST /api/public/valuation/location-baseline` | 3 | 15 |
| Beide MCP-Server zusammen, je Konto | 1 | 30 |
| Jeder schreibende Aufruf außerhalb der MCP-Server (`POST`, `PUT`, `PATCH`, `DELETE`) | 1 | 60 |
Eine Seite der Katalogsuche hat laut Referenz höchstens 60 Treffer (`page_size`).
## Anfragen an Anbieter [#anfragen-an-anbieter]
Für eine Anfrage an einen Anbieter ([`send_inquiry`](/mcp/werkzeuge/suche#send-inquiry) und das Formular im Exposé) gilt zusätzlich, damit niemand einen Anbieter mit Anfragen überzieht:
* höchstens 5 Anfragen in 10 Minuten je Person,
* höchstens 5 in 24 Stunden je E-Mail-Adresse,
* höchstens 30 in einer Stunde je Inserat.
Darüber antwortet das Werkzeug mit `rate_limited`, und es geht nichts hinaus.
## Größe [#größe]
Ein Rumpf darf höchstens 512 KB groß sein; darüber antwortet die API mit `payload_too_large`.
# Amtliche Lage-Grundlage
Adresse: https://docs.athaus.ai/api/referenz/bodenwert-schaetzen
## POST /api/public/valuation/location-baseline
Server: https://api.athaus.ai
operationId: bodenwertSchaetzen
Nennt für eine Lage einen Euro-je-Quadratmeter-Richtwert und sagt dazu, WORAUS er stammt:
bodenrichtwert der amtliche Wert der Gutachterausschüsse, zonenscharf
comparables der getrimmte Median vergleichbarer Inserate aus unserem Bestand
none es gibt keine Grundlage, und dann steht dort auch keine Zahl
Baden-Württemberg, Saarland und Schleswig-Holstein geben den amtlichen Wert nicht heraus,
Bayern nur für angemeldete Gutachterausschüsse. Dort ist none die richtige Antwort.
### Rumpf (application/json)
| Feld | Pflicht | Typ | Beschreibung |
| --- | --- | --- | --- |
| plz | nein | string | |
| city | nein | string | |
| lat | nein | number (-90..90) | |
| lng | nein | number (-180..180) | |
| property_type | nein | string (apartment, house, land, commercial) | |
| art | nein | string (kauf, miete; Vorgabe kauf) | |
### Antworten
- 200: Die Grundlage, oder ehrlich keine.
- 429: Zu viele Aufrufe.
Jeder Fehler hat die Form {"error": ""}; die Codes stehen unter https://docs.athaus.ai/api/fehlercodes.
# Ein Inserat holen
Adresse: https://docs.athaus.ai/api/referenz/immobilie-holen
## GET /api/public/properties/{id}
Server: https://api.athaus.ai
operationId: immobilieHolen
Alle öffentlichen Angaben zu einem Inserat. Name und Kontakt des Anbieters sind NICHT enthalten.
### Parameter
| Name | Ort | Pflicht | Typ | Beschreibung |
| --- | --- | --- | --- | --- |
| id | path | ja | string (uuid) | |
### Antworten
- 200: Das Inserat.
- 404: Gibt es nicht (mehr).
Jeder Fehler hat die Form {"error": ""}; die Codes stehen unter https://docs.athaus.ai/api/fehlercodes.
# Inserate suchen
Adresse: https://docs.athaus.ai/api/referenz/immobilien-suchen
## GET /api/public/properties
Server: https://api.athaus.ai
operationId: immobilienSuchen
Blättert durch den öffentlichen Katalog. Ohne Filter kommen die neuesten Inserate. Gedrosselt je Aufrufer; wer viel abruft, bekommt 429.
### Parameter
| Name | Ort | Pflicht | Typ | Beschreibung |
| --- | --- | --- | --- | --- |
| page | query | nein | integer (1..; Vorgabe 1) | |
| page_size | query | nein | integer (1..60; Vorgabe 24) | |
| city | query | nein | string | Stadt, zum Beispiel Berlin. |
| transaction_type | query | nein | string (buy, rent) | |
| property_type | query | nein | string (apartment, house, land, commercial) | |
| min_price | query | nein | number (0..) | |
| max_price | query | nein | number (0..) | |
| min_rooms | query | nein | number (0..) | |
| min_sqm | query | nein | number (0..) | |
### Antworten
- 200: Eine Seite Treffer.
- 429: Zu viele Aufrufe.
Jeder Fehler hat die Form {"error": ""}; die Codes stehen unter https://docs.athaus.ai/api/fehlercodes.
# Referenz
Adresse: https://docs.athaus.ai/api/referenz
> Jeder Weg der öffentlichen API, aus dem OpenAPI-Dokument erzeugt.
Die Seiten unten entstehen aus demselben Dokument, das die API unter [https://api.athaus.ai/openapi.json](https://api.athaus.ai/openapi.json) ausliefert. Jede zeigt Parameter, Beispielanfragen und Antworten und lässt sich im Browser ausprobieren.
| Methode | Weg | Seite |
| ------- | ----------------------------------------- | ------------------------------------------------------------ |
| `GET` | `/api/public/properties` | [Inserate suchen](/api/referenz/immobilien-suchen) |
| `GET` | `/api/public/properties/{id}` | [Ein Inserat holen](/api/referenz/immobilie-holen) |
| `POST` | `/api/public/valuation/location-baseline` | [Amtliche Lage-Grundlage](/api/referenz/bodenwert-schaetzen) |
# Schlüssel
Adresse: https://docs.athaus.ai/api/schluessel
> Ein API-Schlüssel für eigene Agenten und Dienste, mit genau den Rechten, die du ihm gibst.
## Einen Schlüssel anlegen [#einen-schlüssel-anlegen]
1. In der App [Einstellungen, API-Schlüssel](https://app.athaus.ai/einstellungen/zugang) öffnen. Der Weg führt auch über **Einstellungen, MCP-Server**, Abschnitt **Eigener Agent**.
2. Auf Wunsch einen Namen vergeben, dann die Rechte wählen. `lesen` ist immer dabei; `vorschlagen` und `freigeben` kreuzt du an, wenn der Agent sie braucht.
3. Den Schlüssel kopieren. **Er wird nur dieses eine Mal angezeigt.**
Ein Schlüssel beginnt mit `ath_`, gefolgt von 43 Zeichen. In der Liste steht danach nur sein Anfang, etwa `ath_7f2c`.
## Was du wissen musst [#was-du-wissen-musst]
* **Gespeichert wird nur ein Abdruck** (SHA-256), nie der Schlüssel selbst. Wer ihn verliert, legt einen neuen an.
* **Er gehört dir**, nicht dem Büro. Er sieht, was du in der App siehst, und fällt weg, wenn dein Konto gelöscht wird.
* **Widerrufen** wirkt sofort. Ein widerrufener Schlüssel bleibt ein Jahr in der Liste stehen, damit nachvollziehbar ist, was es gab.
* **Mitschicken** als `Authorization: Bearer ath_...`, siehe [Authentifizierung](/api/authentifizierung).
* **Bei den MCP-Servern** gilt er nur bei [Athaus für Makler](/mcp/werkzeuge/anbieter). Athaus Immobiliensuche nimmt nur eine Anmeldung über OAuth.
## Welche Rechte [#welche-rechte]
| Recht | Bei Athaus für Makler | Bei den übrigen Wegen |
| ------------- | ------------------------------------------------------------------------------------ | --------------------- |
| `lesen` | alle lesenden Werkzeuge | jeder lesende Aufruf |
| `vorschlagen` | Entwürfe, Änderungsvorschläge, Bewertungen | keine Wirkung |
| `freigeben` | Vorschläge entscheiden; was dein Büro auf Automatisch gestellt hat, läuft ohne Klick | schreibende Aufrufe |
Gib einem Schlüssel nur, was sein Agent wirklich braucht. Ein Agent, der Antworten entwerfen soll, braucht `vorschlagen`, aber nicht `freigeben`: dann wartet jeder Entwurf auf dein Ja in der App.
# Was Athaus ist
Adresse: https://docs.athaus.ai/
> Angebot, Nachfrage und die Arbeit dazwischen. In einem System.
Athaus ist ein Arbeitsplatz für Immobilien, in dem ein Agent mitarbeitet. Er führt beide Seiten eines Marktes in einer Datenbank zusammen: die Objekte der Anbieter und die Suchaufträge der Suchenden. Anbieter sind Makler und Teams, Verwaltungen, Bauträger und private Eigentümer. Suchende zahlen nichts.
Athaus öffnet zuerst für Anbieter. Wer eine Freigabe hat, meldet sich unter [www.athaus.ai/login](https://www.athaus.ai/login) an; alle anderen tragen sich dort auf die Warteliste ein.
## Für Anbieter [#für-anbieter]
* **Nachfrage je Adresse.** Wie viele aktive Suchaufträge auf ein Objekt passen, als Zahl. Nie eine Liste, nie eine Person.
* **Ein Postfach für alle Anfragen**, mit Qualifizierung nach Kategorien, einer Pipeline und Besichtigungen, die Interessenten selbst buchen.
* **Ein Inserat-Editor, der nicht veröffentlicht, solange Pflichtangaben fehlen.** Das fertige Inserat hat eine eigene Seite im Katalog von athaus.ai und erscheint auf Wunsch in ChatGPT und Claude.
* **Der Umzug aus dem alten CRM**: Bestand, Kontakte und Verlauf aus onOffice oder Propstack, oder als OpenImmo-Datei.
## Für Suchende [#für-suchende]
Wer sucht, beschreibt im Chat, was er sucht. Daraus wird ein Suchauftrag, der weiterarbeitet. Eine Anfrage an einen Anbieter geht erst nach seinem Ja hinaus, und kein Anbieter sieht den Suchauftrag selbst.
## Zwei Grundsätze [#zwei-grundsätze]
**Die Nachfrage ist nie die Ware.** Athaus verkauft keine Kontakte, vermittelt nicht und nimmt keine Provision.
**Freigabe an der Grenze.** Was im Haus bleibt, erledigt der Agent selbst: sortieren, ergänzen, Entwürfe schreiben. Was hinausgeht, wartet auf ein Ja. Die Grenze verschiebt der Anbieter, nie der Agent ([Automatik-Stufen](/anleitungen/automatik-stufen)).
## Wo was liegt [#wo-was-liegt]
| Adresse | Was dort ist |
| -------------------------------------- | ---------------------------------------------------------------------------------------------- |
| [www.athaus.ai](https://www.athaus.ai) | Die öffentliche Seite, der Katalog, die Anmeldung |
| [app.athaus.ai](https://app.athaus.ai) | Die App für Anbieter und Suchende |
| `https://anbieter.mcp.athaus.ai/mcp` | [Athaus für Makler](/mcp), der MCP-Server für dein Büro in ChatGPT, Claude und eigenen Agenten |
| `https://suche.mcp.athaus.ai/mcp` | [Athaus Immobiliensuche](/mcp), der MCP-Server für die eigene Suche |
| `https://api.athaus.ai` | Die [öffentliche API](/api) |
| docs.athaus.ai | Diese Doku, auch als [llms.txt](/llms.txt) |
# Anmeldung
Adresse: https://docs.athaus.ai/mcp/anmeldung
> OAuth 2.1 für Apps wie Claude und ChatGPT, ein Schlüssel für eigene Agenten. Jeder Aufruf verlangt eine Anmeldung, und die Zustimmung gilt je Server.
Jeder der [zwei Server](/mcp) braucht ein Athaus-Konto, schon für `initialize` und `tools/list`. Es gibt zwei Wege:
* **OAuth 2.1**, wenn eine App für dich handelt (Claude, ChatGPT, Cursor, VS Code). Du meldest dich im Browser an und stimmst zu.
* **Ein `ath_`-Schlüssel**, wenn dein eigener Agent ohne Browser läuft. Er gilt nur bei Athaus für Makler. Siehe [Schlüssel](/api/schluessel).
## So läuft die Anmeldung [#so-läuft-die-anmeldung]
### Die App fragt an [#die-app-fragt-an]
Die App ruft den Server und bekommt `401` mit dem Kopf `WWW-Authenticate`. Darin stehen die Rechte dieses Servers und wo er seine Anmeldung beschreibt, bei Athaus für Makler etwa:
```http
WWW-Authenticate: Bearer scope="lesen vorschlagen freigeben", resource_metadata="https://anbieter.mcp.athaus.ai/.well-known/oauth-protected-resource/mcp"
```
### Du meldest dich bei Athaus an [#du-meldest-dich-bei-athaus-an]
Bist du in der App von Athaus nicht angemeldet, schickt dir Athaus einen Code per E-Mail. Ein Passwort gibt es nicht.
### Du stimmst zu [#du-stimmst-zu]
Auf [app.athaus.ai/verbinden](https://app.athaus.ai/verbinden) siehst du, welche App sich mit welchem Server verbinden will und was sie darf. Der Server folgt aus der Adresse, die du in der App eingetragen hast; eine Seite wählst du hier nicht. Gezeigt werden nur die Rechte dieses Servers:
* Das Grundrecht ([`lesen`](/mcp/rechte#lesen) bei Athaus für Makler, [`suchen`](/mcp/rechte#suchen) bei der Suche) ist immer an. Ohne es öffnet die Verbindung nichts.
* [`vorschlagen`](/mcp/rechte#vorschlagen) und [`suchauftraege`](/mcp/rechte#suchauftraege) sind an, wenn die App sie verlangt.
* Das Recht an der Grenze ([`freigeben`](/mcp/rechte#freigeben) bzw. [`anfragen`](/mcp/rechte#anfragen)) ist aus, bis du es selbst einschaltest, außer du hast es dieser App an diesem Server schon einmal gegeben.
Für Athaus für Makler braucht dein Konto eine eingerichtete Anbieterseite; sonst sagt die Seite, wie du sie einrichtest. Hat sich eine App selbst registriert, sagt die Seite dazu, dass ihr Name nicht geprüft ist. Verbinde sie nur, wenn du sie gerade selbst eingerichtet hast.
### Die App arbeitet [#die-app-arbeitet]
Sie bekommt ein Token, das eine Stunde gilt und sich danach erneuern lässt. Es gilt nur an dem Server, für den du zugestimmt hast: am anderen bekommt es `401`, auch wenn dieselbe App beide verbunden hat. Bei jedem Aufruf prüft Athaus die Zustimmung neu: wer die Verbindung trennt, sperrt die App sofort, nicht erst nach Ablauf des Tokens.
## Neu verbinden [#neu-verbinden]
Vor den zwei Servern gab es einen unter `https://api.athaus.ai/mcp`, und eine Zustimmung galt für ihn. Eine solche Zustimmung öffnet an den neuen Servern nichts mehr. Wer eine App mit der alten Adresse verbunden hatte:
1. Den alten Eintrag in der App entfernen. Die alte Adresse antwortet ohnehin nur noch mit `410`.
2. Die passende neue Adresse eintragen ([Installation](/mcp/installation)).
3. Neu anmelden und zustimmen.
Dasselbe gilt für Abos von [Events](/mcp/ereignisse): sie entstehen an der neuen Adresse neu, mit den neuen Namen der Ereignisse.
## Trennen [#trennen]
In der App unter [Einstellungen, MCP-Server](https://app.athaus.ai/einstellungen/mcp), im Abschnitt **Verbundene Apps**. Eine App, die beide Server verbunden hat, steht dort zweimal, und jede Verbindung trennst du für sich. Trennen beendet auch alle Events, die diese Verbindung abonniert hat.
## Für Entwickler eines Clients [#für-entwickler-eines-clients]
| | Athaus für Makler | Athaus Immobiliensuche |
| ----------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Geschützte Ressource | `https://anbieter.mcp.athaus.ai/mcp` | `https://suche.mcp.athaus.ai/mcp` |
| Metadaten der Ressource | `https://anbieter.mcp.athaus.ai/.well-known/oauth-protected-resource/mcp` | `https://suche.mcp.athaus.ai/.well-known/oauth-protected-resource/mcp` |
| Scopes | `lesen`, `vorschlagen`, `freigeben` | `suchen`, `suchauftraege`, `anfragen` |
Für beide gilt:
| | |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Autorisierungsserver | `https://www.athaus.ai/api/auth`, derselbe für beide Server |
| Ablauf | Authorization Code mit PKCE, Refresh Token |
| Registrierung | Client ID Metadata Document (Claude, ChatGPT) oder Dynamic Client Registration (Cursor und andere) |
| Weitere Scopes | `openid`, `profile`, `email`, `offline_access` |
| Ressource | Pflicht: `resource` (RFC 8707) nennt die Adresse des Servers. Das Token trägt sie als `aud` und gilt nur dort; ein Token ohne Ressource öffnet keinen Server |
| Token | JWT, eine Stunde gültig; DPoP wird unterstützt |
Derselbe Client (etwa claude.ai) verbindet beide Server, mit je einer eigenen Zustimmung. Ein Code oder Refresh Token der einen Ressource holt an der anderen nichts.
Fehlt einem Token ein Recht, antwortet der Server mit `403` und `error="insufficient_scope"`. Im `scope` stehen dann die Rechte, die das Token schon hat, und das fehlende dazu, nie ein Recht des anderen Servers: die App kann gezielt nachfragen. Ein ungültiges, abgelaufenes, entzogenes oder für den anderen Server ausgestelltes Token bekommt `401` mit `error="invalid_token"`.
Solange Athaus geschlossen ist, kann nur eine freigegebene Adresse einer neuen Verbindung zustimmen. Bestehende Verbindungen laufen weiter.
# Apps und Karten
Adresse: https://docs.athaus.ai/mcp/apps
> Die Oberflächen, die ChatGPT und Claude direkt im Chat zeichnen: Inserate als Liste, das Exposé mit Anfrageformular und die Bestätigungskarte.
Einige Werkzeuge bringen eine eigene Oberfläche mit. ChatGPT und Claude zeichnen sie im Gespräch; ein Client ohne Oberfläche bekommt denselben Inhalt als Text. Jeder der [zwei Server](/mcp) hat seine eigenen Adressen.
| Oberfläche | Server | Adresse | Gezeichnet von |
| --------------------- | ---------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Inserate als Liste | Athaus Immobiliensuche | `ui://athaus-suche/listings-v2.html` | [`show_listings`](/mcp/werkzeuge/suche#show-listings) |
| Exposé eines Inserats | Athaus Immobiliensuche | `ui://athaus-suche/listing-v2.html` | [`get_listing`](/mcp/werkzeuge/suche#get-listing) |
| Bestätigungskarte | Athaus Immobiliensuche | `ui://athaus-suche/confirm-v1.html` | [`send_inquiry`](/mcp/werkzeuge/suche#send-inquiry) |
| Bestätigungskarte | Athaus für Makler | `ui://athaus-anbieter/confirm-v1.html` | [`draft_reply`](/mcp/werkzeuge/anbieter#draft-reply), [`decide_proposal`](/mcp/werkzeuge/anbieter#decide-proposal) |
Alle folgen MCP Apps (MIME-Typ `text/html;profile=mcp-app`) und tragen dazu die Angaben für das Apps SDK von OpenAI. Eine Oberfläche selbst enthält keine Daten; die kommen mit dem Ergebnis des Werkzeugs, und das verlangt die Anmeldung.
## Die Liste [#die-liste]
Bis zu acht Inserate als Karten zum Durchblättern, je mit Foto, Preis, Fläche, Zimmern und Ort. Ein Klick auf **Exposé ansehen** bittet das Modell, das Exposé zu zeigen.
## Die Exposé-Karte [#die-exposé-karte]
Das Inserat mit Fotos, den Eckdaten, den Pflichtangaben aus dem Energieausweis, Miete und Provision, dem Anbieter mit Impressum und einem Formular für die Anfrage. Der Rest des Textes klappt auf.
Das Formular fragt nur nach Telefonnummer und Nachricht; Name und E-Mail-Adresse kommen aus dem Athaus-Konto. Vor dem Senden steht der Satz da, dem der Mensch mit einem Haken ausdrücklich zustimmt:
> Ich bin einverstanden, dass Athaus meinen Namen, meine E-Mail-Adresse, meine Telefonnummer (wenn angegeben) und meine Nachricht an den Anbieter dieses Inserats weitergibt, damit er mir antworten kann.
Haken und **Anfrage senden** sind zusammen der Klick: das Formular bereitet die Anfrage mit [`send_inquiry`](/mcp/werkzeuge/suche#send-inquiry) vor und führt sie im selben Zug aus. Dafür braucht die Verbindung das Recht [`anfragen`](/mcp/rechte#anfragen). Der Anbieter antwortet per E-Mail. Links zum Inserat und zum Impressum öffnen sich außerhalb des Chats auf [www.athaus.ai](http://www.athaus.ai).
## Die Bestätigungskarte [#die-bestätigungskarte]
Was auf einen Klick wartet, zeigt diese Karte: in einem Satz, was geschieht und an wen, darunter der Text, der hinausgeht, und die Hinweise aus der Prüfung. Eine Nachricht lässt sich im Feld noch ändern; eine Änderung ist eine neue Fassung und braucht einen neuen Klick. Daneben steht leise **Verwerfen**.
Der Knopf ruft [`confirm_action`](/mcp/werkzeuge/anbieter#bestaetigungskarte), ein Werkzeug, das kein Modell sieht. Eine Karte gilt 15 Minuten; danach ist nichts hinausgegangen, und der Assistent bereitet neu vor. Fehlt der Verbindung das Recht an der Grenze, führt die Karte mit **In Athaus freigeben** in die App. Wann ohne Klick etwas läuft, steht unter [Rechte](/mcp/rechte#klick).
## Welche Inserate erscheinen [#welche-inserate-erscheinen]
Nur Inserate, die laufen und die ihr Anbieter freigegeben hat: an der Immobilie unter **Vermarktung**, Schalter **In ChatGPT und Claude**. Er ist aus, bis der Anbieter ihn einschaltet. Ein gewerblicher Anbieter braucht dafür ein hinterlegtes Impressum, siehe [Inserat veröffentlichen](/anleitungen/inserat-veroeffentlichen).
# Events
Adresse: https://docs.athaus.ai/mcp/ereignisse
> MCP Events als Webhook. Eine verbundene App bekommt Bescheid, wenn eine Anfrage eingeht, ein Termin gebucht wird oder ein Vorschlag wartet.
Athaus unterstützt **MCP Events** nach dem Entwurf "Triggers & Events", und davon die Zustellung per Webhook. Eine App abonniert ein Ereignis, Athaus schickt ihr bei jedem Eintreten eine signierte Nachricht. Heute nutzt das ChatGPT; Claude abonniert keine Events über MCP.
Jeder der [zwei Server](/mcp) hat seine eigenen Ereignisse, und ein Abo entsteht an dem Server, zu dem die Verbindung gehört. Gebaut sind bisher die Ereignisse von Athaus für Makler; die Liste je Server steht [unten](#anbieter), aus dem Vertrag erzeugt.
## Ablauf [#ablauf]
### Ereignisse auflisten [#ereignisse-auflisten]
`events/list` braucht eine Anmeldung, wie jeder Aufruf, und nennt die gebauten Ereignisse des Servers, an dem gefragt wird. Es gibt je Ereignis den Namen, eine Beschreibung, die Zustellart (`webhook`), das Schema der Filter (`inputSchema`) und das Schema der Daten (`payloadSchema`) zurück.
### Abonnieren [#abonnieren]
`events/subscribe` braucht eine Verbindung über OAuth mit dem Recht des Ereignisses; ein Schlüssel kann nicht abonnieren.
```json
{
"name": "inquiry.received",
"arguments": { "objekt_id": "0f6b9a3e-2c11-4d5e-9a77-4b1d2e3f4a5b" },
"delivery": { "mode": "webhook", "url": "https://example.com/hook", "secret": "whsec_..." }
}
```
* Die Adresse muss `https` sein, jede ihrer IP-Adressen öffentlich, ohne Umleitung, höchstens 2048 Zeichen.
* Das Geheimnis hat die Form `whsec_` plus Base64 aus 24 bis 64 Bytes.
* Die Kennungen im Filter müssen zu deinem Büro gehören.
### Die Adresse bestätigen [#die-adresse-bestätigen]
Vor dem ersten Abo schickt Athaus eine signierte Bestätigung an die Adresse:
```json
{ "type": "verification", "challenge": "..." }
```
Der Empfänger antwortet innerhalb von 10 Sekunden mit `2xx` und `{ "challenge": "..." }`. Eine Bestätigung gilt 24 Stunden je Person, App und Adresse.
### Verlängern oder beenden [#verlängern-oder-beenden]
Das Abo gilt zwischen 10 Minuten und 24 Stunden, ohne Angabe 24 Stunden, nie unbegrenzt; die Antwort nennt `refreshBefore`. Wer dasselbe Abo noch einmal abonniert, verlängert es; seine Kennung bleibt gleich. Ein neues Geheimnis ersetzt das alte, das alte signiert noch 15 Minuten mit. `events/unsubscribe` mit Name, Filter und Adresse beendet es und antwortet `{}`. Je Person und App laufen höchstens 50 Abos.
## Eine Zustellung [#eine-zustellung]
```http
POST /hook HTTP/1.1
content-type: application/json
webhook-id: evt_6f1c...
webhook-timestamp: 1790000000
webhook-signature: v1,
x-mcp-subscription-id: sub_9a2e...
user-agent: athaus-mcp-events
{ "eventId": "evt_6f1c...", "name": "inquiry.received", "timestamp": "...", "data": { ... }, "cursor": null }
```
* **Signatur** nach Standard Webhooks: HMAC-SHA256 mit dem Geheimnis über `webhook-id.webhook-timestamp.rumpf`, Base64, mit `v1,` davor. Während eines Wechsels stehen zwei Signaturen mit Leerzeichen getrennt da.
* **`webhook-id`** ist die Kennung des Ereignisses und bei jedem Versuch dieselbe: daran erkennt der Empfänger eine Wiederholung.
* **Daten** enthalten nur Kennungen und einen kurzen Satz (`satz`), nie den Inhalt einer Nachricht. Den holt die App mit den [Werkzeugen](/mcp/werkzeuge/anbieter), etwa `get_inquiry`.
* **Zeit und Größe**: 10 Sekunden je Versuch, höchstens 256 KiB.
* **Wiederholung**: vier Versuche, sofort und nach etwa 30 Sekunden, 2 und 8 Minuten. `2xx` gilt als zugestellt. `410` und `413` werden nicht wiederholt.
* **Vor jedem Versuch** prüft Athaus Zustimmung, Recht und Mitgliedschaft. Fehlt eines, ist das Abo entzogen.
* Ein Ereignis, das eine App selbst ausgelöst hat, geht nicht an dieselbe App zurück.
## Fehler [#fehler]
| Code | Bedeutung |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-32602` | Parameter falsch, mit `data` wie `delivery.url:` oder `delivery.secret` |
| `-32011` | Das Ereignis gibt es nicht |
| `-32012` | Nicht erlaubt; `data.reason` ist `authentication_required`, `access_closed`, `oauth_connection_required` (ein Schlüssel), `insufficient_scope`, `arguments_not_in_account` oder `ended_by_user` |
| `-32013` | Zu viele Abos (`{ "limit": "subscriptions", "max": 50 }`) |
| `-32014` | Nicht unterstützt: eine andere Zustellart als Webhook, `events/poll`, `events/stream` |
| `-32015` | Die Bestätigung der Adresse ist gescheitert |
| `-32603` | Events sind auf dem Server nicht eingerichtet (`events_not_configured`) |
## In der App [#in-der-app]
Unter [Einstellungen, MCP-Server](https://app.athaus.ai/einstellungen/mcp) steht bei jeder verbundenen App, welche Ereignisse sie abonniert hat. **Beenden** stoppt ein Abo; die nächste Verlängerung der App bekommt dann `ended_by_user`. **Trennen** beendet alle Abos dieser Verbindung.
## Athaus für Makler [#anbieter]
### inquiry.received [#inquiry-received]
Eine neue Anfrage an einem Objekt deines Bestands, über Athaus, ein Portal oder E-Mail. Woher sie kam, steht in `quelle`. Braucht das Recht [`lesen`](/mcp/rechte#lesen).
* Filter: `objekt_id`
* Felder in `data`: `anfrage_id`, `objekt_id`, `quelle`, `satz`
### message.received [#message-received]
Ein Interessent hat in einer bestehenden Anfrage wieder geschrieben. Braucht das Recht [`lesen`](/mcp/rechte#lesen).
* Filter: `objekt_id`, `anfrage_id`
* Felder in `data`: `anfrage_id`, `objekt_id`, `nachricht_id`, `satz`
### viewing.booked [#viewing-booked]
Ein Interessent hat einen Platz an einer Besichtigung gebucht oder ist auf einen anderen Termin umgebucht. Braucht das Recht [`lesen`](/mcp/rechte#lesen).
* Filter: `objekt_id`
* Felder in `data`: `termin_id`, `anfrage_id`, `objekt_id`, `beginn`, `umgebucht`, `satz`
### viewing.cancelled [#viewing-cancelled]
Ein Interessent hat seinen Platz an einer Besichtigung abgegeben. Der Termin selbst kann bleiben. Braucht das Recht [`lesen`](/mcp/rechte#lesen).
* Filter: `objekt_id`
* Felder in `data`: `termin_id`, `anfrage_id`, `objekt_id`, `beginn`, `satz`
### proposal.pending [#proposal-pending]
Der Agent von Athaus hat etwas vorbereitet, das auf ein Ja wartet: einen Antwortentwurf, eine Absage, eine Änderung am Objekt. Braucht das Recht [`lesen`](/mcp/rechte#lesen).
* Filter: `objekt_id`, `anfrage_id`
* Felder in `data`: `vorschlag_id`, `vorschlag_art`, `geht_hinaus`, `anfrage_id`, `objekt_id`, `satz`
### file.processed [#file-processed]
Eine Unterlage an einem Objekt ist ausgelesen, etwa ein Exposé oder ein Energieausweis. Was davon am Objekt steht oder als Vorschlag wartet, liest du mit `get_property`. Braucht das Recht [`lesen`](/mcp/rechte#lesen).
* Filter: `objekt_id`
* Felder in `data`: `objekt_id`, `datei_id`, `sorte`, `angaben`, `satz`
### viewing.upcoming [#viewing-upcoming]
Eine Besichtigung mit Gästen steht bevor: etwa einen Tag und etwa eine Stunde vorher. Braucht das Recht [`lesen`](/mcp/rechte#lesen).
* Filter: `objekt_id`
* Felder in `data`: `termin_id`, `objekt_id`, `beginn`, `fenster`, `satz`
### social.received [#social-received]
Ein neuer Kommentar oder eine neue Nachricht in deinen Netzen. Braucht das Recht [`lesen`](/mcp/rechte#lesen).
* Filter: `objekt_id`
* Felder in `data`: `eingang_id`, `art`, `netz`, `objekt_id`, `satz`
## Athaus Immobiliensuche [#suche]
### matches.new [#matches-new]
Deine Suchaufträge haben neue Treffer, einmal je Lauf und Auftrag. Braucht das Recht [`suchen`](/mcp/rechte#suchen).
* Filter: `saved_search_id`
* Felder in `data`: `saved_search_id`, `count`, `satz`
### reply.received [#reply-received]
Ein Anbieter hat auf deine Anfrage geantwortet, mit einer Nachricht oder einer Absage. Braucht das Recht [`suchen`](/mcp/rechte#suchen).
* Filter: `inquiry_id`
* Felder in `data`: `inquiry_id`, `listing_id`, `satz`
### viewing.changed [#viewing-changed]
Der Anbieter hat eine gebuchte Besichtigung verschoben oder abgesagt. Bei einer verschobenen steht der neue Beginn in `start`. Braucht das Recht [`suchen`](/mcp/rechte#suchen).
* Filter: `inquiry_id`
* Felder in `data`: `inquiry_id`, `listing_id`, `change`, `start`, `satz`
# Die MCP-Server
Adresse: https://docs.athaus.ai/mcp
> Zwei Server, einer für Makler und einer für die Suche. Athaus in ChatGPT, Claude, Cursor und jedem Agenten, der das Model Context Protocol spricht.
Athaus hat zwei MCP-Server, einen für jede Seite des Marktes. Beide sprechen dasselbe Protokoll, aber jeder hat seine eigene Adresse, seine eigenen Rechte und Werkzeuge und einen eigenen Eintrag in ChatGPT und Claude.
| | Athaus für Makler | Athaus Immobiliensuche |
| ----------- | ------------------------------------------------------------------------ | --------------------------------------------------------------- |
| Für wen | Makler und alle, die bei Athaus anbieten | Menschen, die eine Wohnung oder ein Haus suchen |
| Adresse | `https://anbieter.mcp.athaus.ai/mcp` | `https://suche.mcp.athaus.ai/mcp` |
| Was er kann | Lagebericht, Bestand, Anfragen, Antwortentwürfe, Bewertungen, Vorschläge | Katalog, Exposé, Anfrage an den Anbieter, Suchaufträge, Treffer |
| Konto | ein Athaus-Konto mit eingerichteter Anbieterseite | jedes Athaus-Konto |
| Anmeldung | OAuth 2.1 oder ein [`ath_`-Schlüssel](/api/schluessel) | OAuth 2.1 |
| Rechte | [`lesen`, `vorschlagen`, `freigeben`](/mcp/rechte#anbieter) | [`suchen`, `suchauftraege`, `anfragen`](/mcp/rechte#suche) |
| Werkzeuge | [Athaus für Makler](/mcp/werkzeuge/anbieter) | [Athaus Immobiliensuche](/mcp/werkzeuge/suche) |
| Ereignisse | [MCP Events](/mcp/ereignisse#anbieter) als Webhook | noch keine |
## Welcher Server für dich [#welcher-server-für-dich]
* **Du arbeitest als Makler oder bietest selbst an:** Athaus für Makler. Er arbeitet für dein Büro und sieht, was dein Büro in der App sieht.
* **Du suchst:** Athaus Immobiliensuche. Er sieht nur deine eigene Suche, nie ein Büro, auch nicht dein eigenes.
* **Beides:** Trag beide Adressen ein. Jede Verbindung gehört genau einem Server; ein Token des einen gilt am anderen nicht, auch bei derselben App und demselben Konto.
Die Werkzeuge des Markts stehen an beiden Servern: die Lage einer Adresse, eine Wertspanne, die Nachfrage als Zahl und die Kaufnebenkosten.
## Was beide gemeinsam haben [#was-beide-gemeinsam-haben]
| | |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Übertragung | Streamable HTTP, ohne Sitzung (`POST`) |
| Protokoll | Revision 2026-07-28, dazu die älteren Revisionen mit `initialize` |
| Anmeldung | Immer, auch für `initialize` und `tools/list`: ohne gültiges Token antwortet ein Server mit `401` und sagt, wo die Anmeldung beginnt ([Anmeldung](/mcp/anmeldung)) |
| Oberfläche | [Karten im Chat](/mcp/apps) in ChatGPT und Claude, ohne Oberfläche derselbe Inhalt als Text |
| Drossel | 30 Aufrufe auf einmal, danach einer je Sekunde, je Konto über beide Server ([Limits](/api/limits)) |
## Das Modell bereitet vor, du klickst [#das-modell-bereitet-vor-du-klickst]
Ein Agent darf in Athaus lesen, suchen und entwerfen. Was hinausgeht, wartet auf deinen Klick: in einer Karte im Chat oder in der App. Ohne Klick läuft nur, was dein Büro in der App auf **Automatisch** gestellt hat, und auch das nur, wenn die Verbindung das Recht an der Grenze trägt. Löschen und eine Stufe einschalten gehen immer nur mit Klick. Die ganze Regel steht unter [Rechte](/mcp/rechte#klick).
## Die alte Adresse [#die-alte-adresse]
Vor den zwei Servern stand einer unter `https://api.athaus.ai/mcp`. Er antwortet jetzt mit `410` und nennt beide neuen Adressen. Wer ihn eingetragen hatte, trägt die passende neue Adresse ein und verbindet neu: eine Zustimmung von vorher öffnet nichts mehr ([Anmeldung](/mcp/anmeldung#neu-verbinden)).
# Installation
Adresse: https://docs.athaus.ai/mcp/installation
> Die zwei MCP-Server von Athaus in Claude, Claude Code, Cursor, VS Code, ChatGPT und einem eigenen Agenten.
Es gibt zwei Server, und du trägst den ein, der zu dir passt, oder beide:
| Server | Für wen | Adresse |
| ---------------------- | ----------------------------------------------- | ------------------------------------ |
| Athaus für Makler | Makler und alle, die bei Athaus anbieten | `https://anbieter.mcp.athaus.ai/mcp` |
| Athaus Immobiliensuche | Menschen, die eine Wohnung oder ein Haus suchen | `https://suche.mcp.athaus.ai/mcp` |
Beim ersten Aufruf meldest du dich mit deinem Athaus-Konto an und bestätigst auf [app.athaus.ai/verbinden](https://app.athaus.ai/verbinden), was die App darf. Welcher Server es ist, folgt aus der Adresse; eine Seite wählst du dort nicht. Wie es genau läuft, steht unter [Anmeldung](/mcp/anmeldung).
## Claude (Web und Desktop) [#claude-web-und-desktop]
- [In Claude hinzufügen: Athaus für Makler](https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Athaus%20f%C3%BCr%20Makler&connectorUrl=https%3A%2F%2Fanbieter.mcp.athaus.ai%2Fmcp)
- [In Claude hinzufügen: Athaus Immobiliensuche](https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Athaus%20Immobiliensuche&connectorUrl=https%3A%2F%2Fsuche.mcp.athaus.ai%2Fmcp)
Ein Knopf je Server. Er öffnet in claude.ai den Dialog für einen eigenen Connector, Name und Adresse sind ausgefüllt. Von Hand:
1. In Claude **Customize > Connectors** öffnen, dann **Add custom connector**.
2. Name und Adresse eintragen: `Athaus für Makler` mit `https://anbieter.mcp.athaus.ai/mcp`, oder `Athaus Immobiliensuche` mit `https://suche.mcp.athaus.ai/mcp`.
3. Die erkannte Anmeldung (OAuth) so lassen und **Add** wählen, dann **Connect**.
4. Im Chat über **+ > Connectors** einschalten.
In Team und Enterprise legt ein Owner den Connector unter **Organization settings > Connectors** an; danach verbindet sich jedes Mitglied selbst. Ein Connector, der in claude.ai angelegt ist, steht auch in Claude Desktop und den Apps bereit.
## Claude Code [#claude-code]
```bash title="Athaus für Makler"
claude mcp add --transport http athaus-makler https://anbieter.mcp.athaus.ai/mcp
```
```bash title="Athaus Immobiliensuche"
claude mcp add --transport http athaus-suche https://suche.mcp.athaus.ai/mcp
```
Danach in Claude Code `/mcp` aufrufen und die Anmeldung im Browser abschließen.
## Cursor [#cursor]
- [In Cursor installieren: Athaus für Makler](cursor://anysphere.cursor-deeplink/mcp/install?name=athaus-makler&config=eyJ1cmwiOiJodHRwczovL2FuYmlldGVyLm1jcC5hdGhhdXMuYWkvbWNwIn0=)
- [In Cursor installieren: Athaus Immobiliensuche](cursor://anysphere.cursor-deeplink/mcp/install?name=athaus-suche&config=eyJ1cmwiOiJodHRwczovL3N1Y2hlLm1jcC5hdGhhdXMuYWkvbWNwIn0=)
Der Knopf öffnet Cursor mit dem Eintrag zur Bestätigung. Von Hand in `~/.cursor/mcp.json` (oder `.cursor/mcp.json` im Projekt); wer nur einen Server braucht, lässt den anderen Eintrag weg:
```json title="mcp.json"
{
"mcpServers": {
"athaus-makler": {
"url": "https://anbieter.mcp.athaus.ai/mcp"
},
"athaus-suche": {
"url": "https://suche.mcp.athaus.ai/mcp"
}
}
}
```
## VS Code [#vs-code]
- [In VS Code installieren: Athaus für Makler](vscode:mcp/install?%7B%22name%22%3A%22athaus-makler%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fanbieter.mcp.athaus.ai%2Fmcp%22%7D)
- [In VS Code installieren: Athaus Immobiliensuche](vscode:mcp/install?%7B%22name%22%3A%22athaus-suche%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fsuche.mcp.athaus.ai%2Fmcp%22%7D)
Oder in `.vscode/mcp.json` im Projekt:
```json title=".vscode/mcp.json"
{
"servers": {
"athaus-makler": {
"type": "http",
"url": "https://anbieter.mcp.athaus.ai/mcp"
},
"athaus-suche": {
"type": "http",
"url": "https://suche.mcp.athaus.ai/mcp"
}
}
}
```
## ChatGPT [#chatgpt]
In ChatGPT heißt ein eigener MCP-Server eine App, und er läuft über den Developer Mode im Web. Jeder der zwei Server ist eine eigene App.
1. Developer Mode einschalten. Je nach Stand von ChatGPT liegt der Schalter unter **Settings > Apps > Advanced settings** oder unter **Settings > Security and login**.
2. Eine App anlegen (**Create app** oder **Create MCP App**), Anmeldung **OAuth**: Name `Athaus für Makler` mit der Adresse `https://anbieter.mcp.athaus.ai/mcp`, oder `Athaus Immobiliensuche` mit `https://suche.mcp.athaus.ai/mcp`.
3. Mit deinem Athaus-Konto anmelden und zustimmen.
4. Im Chat über **+ > Developer mode** die App für das Gespräch wählen.
Volles MCP mit Schreibaktionen gibt es laut OpenAI nur in **Business, Enterprise und Edu**, dort schaltet ein Admin den Developer Mode frei. In Plus und Pro kann ChatGPT lesende Werkzeuge nutzen; ob ein schreibendes wie `send_inquiry` läuft, ist dort nicht zugesagt. Free hat keinen Developer Mode. Vor jeder Schreibaktion fragt ChatGPT nach.
ChatGPT ist bisher der einzige Client, der [MCP Events](/mcp/ereignisse) abonniert.
## Ein eigener Agent [#ein-eigener-agent]
Ohne Browser meldet sich ein Agent mit einem [API-Schlüssel](/api/schluessel) an. Ein Schlüssel gilt nur bei **Athaus für Makler**; für die Suche gibt es nur die Anmeldung über OAuth. Den Schlüssel legst du unter [Einstellungen, API-Schlüssel](https://app.athaus.ai/einstellungen/zugang) an und schickst ihn bei jedem Aufruf mit:
```http
Authorization: Bearer ath_...
```
Jede MCP-Bibliothek, die Streamable HTTP spricht, kann das; in Claude Code etwa:
```bash
claude mcp add --transport http athaus-makler https://anbieter.mcp.athaus.ai/mcp \
--header "Authorization: Bearer ath_..."
```
Ein Schlüssel sieht in `tools/list` nur die Werkzeuge, die er nach seinen Rechten aufrufen darf. MCP Events abonniert nur eine Verbindung über OAuth, kein Schlüssel.
## Wenn du die alte Adresse eingetragen hast [#wenn-du-die-alte-adresse-eingetragen-hast]
`https://api.athaus.ai/mcp` antwortet mit `410` und nennt die zwei neuen Adressen. Entferne den alten Eintrag, trag die passende neue Adresse ein und verbinde neu.
# Rechte
Adresse: https://docs.athaus.ai/mcp/rechte
> Je Server drei Rechte, unabhängig voneinander, und die Regel, wann ein Klick nötig ist. Im OAuth-Protokoll sind die Rechte die Scopes, unter demselben Namen.
Eine Verbindung gehört genau einem der [zwei Server](/mcp) und trägt eine Teilmenge seiner drei Rechte. Jedes Werkzeug und jedes Ereignis verlangt genau eines; was ein Werkzeug für seine Arbeit lesen muss, liest es selbst. Die Werkzeuge des Markts verlangen das Grundrecht des Servers, an dem sie gerufen werden. Die Namen der Rechte sind die Scopes, darum stehen sie ohne Umlaut. Die Liste je Server weiter unten ist aus dem Vertrag erzeugt, aus dem auch die Server lesen.
## Wann ein Klick nötig ist [#klick]
Das Modell bereitet vor, ein Mensch führt aus. Jedes Werkzeug hat eine Wirkung, und aus ihr folgt, was ein Aufruf über MCP tut:
| Wirkung | Was ein Aufruf tut |
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Liest nur | Läuft sofort. |
| Ändert nur dein Büro oder dein Konto | Läuft sofort: Neues anlegen, Lücken füllen. Was einen vorhandenen Wert ersetzen würde, wird ein Vorschlag oder wartet auf einen Klick. |
| Folgenreich: geht hinaus, überschreibt, löscht | Nach den drei Regeln unten. |
Für alles Folgenreiche gilt, in dieser Reihenfolge:
1. **Immer mit Klick**, egal welche Stufe: löschen, zusammenführen, eine Stufe der Automatik setzen oder einen Auto-Modus einschalten.
2. **Ohne Klick**, wenn dein Büro diese Art von Handlung in der App auf **Automatisch** gestellt hat ([Automatik-Stufen](/anleitungen/automatik-stufen)) und die Verbindung das Recht an der Grenze trägt, also `freigeben`. Dann läuft es wie beim Agenten im Hintergrund und steht im Protokoll.
3. **Sonst mit Klick.** Mit dem Recht an der Grenze zeigt der Assistent eine Karte, und dein Klick dort führt aus. Ohne das Recht führt die Karte mit **In Athaus freigeben** in die App, und du gibst dort frei.
Steht die Art in der App auf **Aus**, bereitet die Verbindung nichts vor und sagt das.
Das Modell gibt sich nie selbst frei und setzt nie eine Stufe. Der Klick ist ein eigenes Werkzeug, das nur die Karte ruft, mit einem Token, das das Modell nie sieht ([die Bestätigungskarte](/mcp/werkzeuge/anbieter#bestaetigungskarte)). Bei der Suche gibt es keine Automatik: eine Anfrage an einen Anbieter geht immer erst mit deinem Klick hinaus, und dafür braucht die Verbindung `anfragen`.
## Athaus für Makler [#anbieter]
Adresse: `https://anbieter.mcp.athaus.ai/mcp`
### lesen [#lesen]
Alles lesen, was dein Büro in der App sieht: Objekte, Anfragen, Bewertungen und was heute ansteht, dazu die Werkzeuge des Markts. Ohne dieses Recht öffnet die Verbindung nichts, darum ist es immer an.
Werkzeuge: [get\_briefing](/mcp/werkzeuge/anbieter#get-briefing), [search\_properties](/mcp/werkzeuge/anbieter#search-properties), [get\_property](/mcp/werkzeuge/anbieter#get-property), [search\_inquiries](/mcp/werkzeuge/anbieter#search-inquiries), [get\_inquiry](/mcp/werkzeuge/anbieter#get-inquiry), [list\_proposals](/mcp/werkzeuge/anbieter#list-proposals), [list\_viewings](/mcp/werkzeuge/anbieter#list-viewings), [search\_contacts](/mcp/werkzeuge/anbieter#search-contacts), [get\_contact](/mcp/werkzeuge/anbieter#get-contact), [list\_tasks](/mcp/werkzeuge/anbieter#list-tasks), [get\_valuation](/mcp/werkzeuge/anbieter#get-valuation), [get\_social](/mcp/werkzeuge/anbieter#get-social), [check\_location](/mcp/werkzeuge/anbieter#check-location), [estimate\_value](/mcp/werkzeuge/anbieter#estimate-value), [count\_demand](/mcp/werkzeuge/anbieter#count-demand), [calculate\_purchase\_costs](/mcp/werkzeuge/anbieter#calculate-purchase-costs).
Ereignisse: [inquiry.received](/mcp/ereignisse#inquiry-received), [message.received](/mcp/ereignisse#message-received), [viewing.booked](/mcp/ereignisse#viewing-booked), [viewing.cancelled](/mcp/ereignisse#viewing-cancelled), [proposal.pending](/mcp/ereignisse#proposal-pending), [file.processed](/mcp/ereignisse#file-processed), [viewing.upcoming](/mcp/ereignisse#viewing-upcoming), [social.received](/mcp/ereignisse#social-received).
### vorschlagen [#vorschlagen]
Vorbereiten: Angaben am Objekt ergänzen, Antworten entwerfen, Bewertungen anlegen. Was einen vorhandenen Wert ersetzen würde, wartet als Vorschlag auf ein Ja. Mit diesem Recht allein geht nichts hinaus.
Werkzeuge: [save\_property](/mcp/werkzeuge/anbieter#save-property), [publish\_listing](/mcp/werkzeuge/anbieter#publish-listing), [unpublish\_listing](/mcp/werkzeuge/anbieter#unpublish-listing), [update\_inquiry](/mcp/werkzeuge/anbieter#update-inquiry), [draft\_reply](/mcp/werkzeuge/anbieter#draft-reply), [save\_viewing](/mcp/werkzeuge/anbieter#save-viewing), [save\_availability](/mcp/werkzeuge/anbieter#save-availability), [save\_contact](/mcp/werkzeuge/anbieter#save-contact), [save\_list](/mcp/werkzeuge/anbieter#save-list), [save\_task](/mcp/werkzeuge/anbieter#save-task), [save\_note](/mcp/werkzeuge/anbieter#save-note), [save\_valuation](/mcp/werkzeuge/anbieter#save-valuation), [share\_owner\_report](/mcp/werkzeuge/anbieter#share-owner-report), [draft\_social\_post](/mcp/werkzeuge/anbieter#draft-social-post), [update\_automation](/mcp/werkzeuge/anbieter#update-automation), [delete\_item](/mcp/werkzeuge/anbieter#delete-item).
Ereignisse: keine.
### freigeben [#freigeben]
Einen Vorschlag entscheiden und deinen Klick in der Karte des Assistenten annehmen: eine Antwort, die du dort freigibst, geht an den Interessenten hinaus. Was dein Büro in der App auf Automatisch gestellt hat, läuft mit diesem Recht auch über die Verbindung ohne Klick. Ohne das Recht gibst du in der App frei. Auf der Zustimmungsseite steht es aus, bis du es selbst einschaltest.
Werkzeuge: [decide\_proposal](/mcp/werkzeuge/anbieter#decide-proposal).
Ereignisse: keine.
## Athaus Immobiliensuche [#suche]
Adresse: `https://suche.mcp.athaus.ai/mcp`
### suchen [#suchen]
Den Katalog durchsuchen, ein Exposé lesen, die Werkzeuge des Markts nutzen und die eigenen Suchaufträge, Treffer und Anfragen sehen. Ohne dieses Recht öffnet die Verbindung nichts, darum ist es immer an.
Werkzeuge: [search\_listings](/mcp/werkzeuge/suche#search-listings), [show\_listings](/mcp/werkzeuge/suche#show-listings), [get\_listing](/mcp/werkzeuge/suche#get-listing), [list\_inquiries](/mcp/werkzeuge/suche#list-inquiries), [get\_inquiry](/mcp/werkzeuge/suche#get-inquiry), [list\_saved\_searches](/mcp/werkzeuge/suche#list-saved-searches), [list\_matches](/mcp/werkzeuge/suche#list-matches), [check\_location](/mcp/werkzeuge/suche#check-location), [estimate\_value](/mcp/werkzeuge/suche#estimate-value), [count\_demand](/mcp/werkzeuge/suche#count-demand), [calculate\_purchase\_costs](/mcp/werkzeuge/suche#calculate-purchase-costs).
Ereignisse: [matches.new](/mcp/ereignisse#matches-new), [reply.received](/mcp/ereignisse#reply-received), [viewing.changed](/mcp/ereignisse#viewing-changed).
### suchauftraege [#suchauftraege]
Suchaufträge anlegen, ändern und pausieren. Das ändert nur dein eigenes Konto; hinaus geht dabei nichts.
Werkzeuge: [favorite\_listing](/mcp/werkzeuge/suche#favorite-listing), [save\_search](/mcp/werkzeuge/suche#save-search), [save\_profile](/mcp/werkzeuge/suche#save-profile), [delete\_item](/mcp/werkzeuge/suche#delete-item).
Ereignisse: keine.
### anfragen [#anfragen]
Eine Anfrage an ein Inserat vorbereiten. Mit deinem Klick in der Karte des Assistenten geht sie an den Anbieter hinaus. Auf der Zustimmungsseite steht dieses Recht aus, bis du es selbst einschaltest.
Werkzeuge: [send\_inquiry](/mcp/werkzeuge/suche#send-inquiry), [update\_inquiry](/mcp/werkzeuge/suche#update-inquiry), [book\_viewing](/mcp/werkzeuge/suche#book-viewing), [cancel\_viewing](/mcp/werkzeuge/suche#cancel-viewing), [decide\_match](/mcp/werkzeuge/suche#decide-match).
Ereignisse: keine.
## Wo die Rechte vergeben werden [#wo-die-rechte-vergeben-werden]
* **Bei einer App** auf der Zustimmungsseite ([Anmeldung](/mcp/anmeldung)). Das Grundrecht ist dort immer an, das Recht an der Grenze aus, bis du es selbst einschaltest.
* **Bei einem Schlüssel** beim Anlegen ([Schlüssel](/api/schluessel)). Ein Schlüssel trägt nur Rechte von Athaus für Makler, und ein neuer darf nur `lesen`.
# Athaus für Makler
Adresse: https://docs.athaus.ai/mcp/werkzeuge/anbieter
> Die Werkzeuge des Servers für dein Büro, geordnet nach dem Recht, das jedes verlangt.
Der Server unter `https://anbieter.mcp.athaus.ai/mcp` arbeitet für dein Büro: was er liest und schreibt, gehört der Organisation, für die du arbeitest. Er braucht ein Konto mit eingerichteter Anbieterseite. Wie du ihn einträgst, steht unter [Installation](/mcp/installation); ein Arbeitstag beginnt am besten mit `get_briefing`.
## Lesen [#lesen]
Braucht das Recht [`lesen`](/mcp/rechte#lesen).
### get\_briefing [#get-briefing]
**Lagebericht.** Liest nur.
Was heute im Büro ansteht: unbeantwortete Anfragen, Vorschläge zur Freigabe, überfällige und heutige Aufgaben, Besichtigungen der nächsten sieben Tage. Je Punkt mit der Kennung zum Weiterlesen.
### search\_properties [#search-properties]
**Bestand suchen.** Liest nur.
Findet Objekte im eigenen Bestand nach Adresse, Ort oder Titel, zum Verkauf oder zur Vermietung, auf Wunsch nur die mit laufendem Inserat. Je Objekt die Eckdaten, der Preis und der nächste Schritt.
### get\_property [#get-property]
**Objekt ansehen.** Liest nur.
Ein Objekt mit allem, was für die nächste Entscheidung zählt: die Angaben und was noch fehlt, Anfragen mit ihrem Stand, offene Vorschläge, das Protokoll, Besichtigungen, die Nachfrage als Zahl und die letzte Bewertung.
### search\_inquiries [#search-inquiries]
**Anfragen suchen.** Liest nur.
Sucht in den Anfragen des Büros nach Phase, Objekt oder Worten wie Name, Nachricht oder Straße. Je Anfrage die letzte Nachricht, die Finanzierung als Kategorie und ob ein Antwortentwurf bereitliegt.
### get\_inquiry [#get-inquiry]
**Anfrage ansehen.** Liest nur.
Eine Anfrage ganz: alle Nachrichten, die Qualifizierung, Stand und Phase, eine gebuchte Besichtigung, offene Vorschläge mit ihrem Text und was sich der Agent über den Menschen gemerkt hat, je Punkt mit dem Satz, aus dem es stammt.
### list\_proposals [#list-proposals]
**Zur Freigabe.** Liest nur.
Was auf ein Ja wartet, mit vollem Text, auf Wunsch mit Stufen, Bilanz und Protokoll der Automatik.
### list\_viewings [#list-viewings]
**Termine.** Liest nur.
Besichtigungen in einem Zeitraum mit ihren Gästen, auf Wunsch die freien Zeiten.
### search\_contacts [#search-contacts]
**Kontakte suchen.** Liest nur.
Das Adressbuch nach Name, Firma, E-Mail-Adresse, Ort oder Liste.
### get\_contact [#get-contact]
**Kontakt ansehen.** Liest nur.
Die Akte eines Kontakts: Verlauf, Objekte, Anfragen, Notizen, Aufgaben, Listen und was sich der Agent gemerkt hat.
### list\_tasks [#list-tasks]
**Aufgaben.** Liest nur.
Offene, heutige, überfällige oder erledigte Aufgaben.
### get\_valuation [#get-valuation]
**Bewertung ansehen.** Liest nur.
Eine gespeicherte Bewertung mit Spanne, tragendem Verfahren, Annahmen mit Fundstelle und Nachfrage. Ohne Angabe die jüngste des Objekts.
### get\_social [#get-social]
**Netze.** Liest nur.
Verbundene Kanäle, die letzten Beiträge mit ihren Kennzahlen und offene Kommentare und Nachrichten.
## Vorschlagen [#vorschlagen]
Braucht das Recht [`vorschlagen`](/mcp/rechte#vorschlagen).
### save\_property [#save-property]
**Objekt speichern.** Ändert nur dein Büro.
Ändert ein Objekt des Bestands: Angaben wie Fläche, Zimmer, Baujahr, Energie und Preise, den Titel oder die vier Texte des Inserats. Was fehlt, trägt Athaus je nach deiner Automatik gleich ein. Was einen vorhandenen Wert ersetzen würde, und jeder Angebotspreis, wartet als Vorschlag auf dein Ja.
### publish\_listing [#publish-listing]
**Inserat veröffentlichen.** Folgenreich: wartet auf deinen Klick, soweit [deine Automatik](/mcp/rechte#klick) nichts anderes erlaubt.
Prüft Pflichtangaben, Foto und Impressum und hält die Veröffentlichung im Katalog, auf Wunsch auch in ChatGPT und Claude, für deinen Klick.
### unpublish\_listing [#unpublish-listing]
**Inserat zurückziehen.** Ändert nur dein Büro.
Nimmt ein Inserat sofort vom Markt oder nur aus ChatGPT und Claude.
### update\_inquiry [#update-inquiry]
**Anfrage einordnen.** Ändert nur dein Büro.
Stand und Phase setzen und Merkpunkte bestätigen. Hinaus geht dabei nichts.
### draft\_reply [#draft-reply]
**Antwort entwerfen.** Folgenreich: wartet auf deinen Klick, soweit [deine Automatik](/mcp/rechte#klick) nichts anderes erlaubt.
Legt eine Antwort auf eine Anfrage als Vorschlag an. Ohne eigenen Text schreibt der Agent von Athaus den Entwurf aus den Angaben am Objekt; ein vorgegebener Text muss die Prüfung gegen diese Angaben bestehen. Hinaus geht die Antwort mit deinem Klick, oder gleich, wenn dein Büro Antworten auf Automatisch gestellt hat und die Verbindung freigeben darf.
### save\_viewing [#save-viewing]
**Termin speichern.** Ändert nur dein Büro.
Besichtigungen anlegen, verschieben oder absagen und Gäste eintragen. Was Gäste benachrichtigt, wartet auf deinen Klick.
### save\_availability [#save-availability]
**Verfügbarkeit.** Ändert nur dein Büro.
Wochentage und Zeiten, zu denen Besichtigungen gebucht werden können.
### save\_contact [#save-contact]
**Kontakt speichern.** Ändert nur dein Büro.
Kontakte anlegen, auch aus einer Anfrage, ändern, Listen zuordnen und zusammenführen. Überschreiben und Zusammenführen warten auf deinen Klick.
### save\_list [#save-list]
**Liste speichern.** Ändert nur dein Büro.
Listen anlegen, umbenennen und anheften und Einträge hinzufügen oder entfernen.
### save\_task [#save-task]
**Aufgabe speichern.** Ändert nur dein Büro.
Aufgaben anlegen, ändern oder erledigen.
### save\_note [#save-note]
**Notiz speichern.** Ändert nur dein Büro.
Festhalten, was später zählt, an einem Menschen oder einem Objekt.
### save\_valuation [#save-valuation]
**Bewertung speichern.** Ändert nur dein Büro.
Legt für ein Objekt des Bestands eine Bewertung an: Vergleichs-, Ertrags- und Sachwert nach ImmoWertV aus Angaben, Unterlagen, Lage und Marktberichten. Annahmen, die du nennst, gelten als Angabe des Maklers. Am Objekt selbst ändert sich nichts.
### share\_owner\_report [#share-owner-report]
**Eigentümerbericht teilen.** Ändert nur dein Büro.
Einen Link zum Bericht einer fertigen Bewertung erzeugen, ohne ihn zu versenden, oder den Link zurückziehen.
### draft\_social\_post [#draft-social-post]
**Beitrag entwerfen.** Folgenreich: wartet auf deinen Klick, soweit [deine Automatik](/mcp/rechte#klick) nichts anderes erlaubt.
Ein Beitrag zu einem Objekt oder eine Antwort auf einen Kommentar, mit den Pflichtangaben. Veröffentlicht wird mit deinem Klick.
### update\_automation [#update-automation]
**Automatik einstellen.** Folgenreich: wartet auf deinen Klick, soweit [deine Automatik](/mcp/rechte#klick) nichts anderes erlaubt.
Eine Stufe je Art vorbereiten. Gesetzt wird sie immer mit deinem Klick.
### delete\_item [#delete-item]
**Löschen.** Folgenreich: wartet auf deinen Klick, soweit [deine Automatik](/mcp/rechte#klick) nichts anderes erlaubt.
Ein Objekt, eine Datei, eine Anfrage, einen Kontakt, eine Liste, eine Aufgabe, eine Notiz oder eine Bewertung löschen, immer erst nach deinem Klick.
## Freigeben [#freigeben]
Braucht das Recht [`freigeben`](/mcp/rechte#freigeben).
### decide\_proposal [#decide-proposal]
**Vorschlag entscheiden.** Folgenreich: wartet auf deinen Klick, soweit [deine Automatik](/mcp/rechte#klick) nichts anderes erlaubt.
Verwirft einen offenen Vorschlag sofort, oder bereitet seine Annahme vor: dann zeigt die Karte, was geschieht, und erst dein Klick führt es aus. Eine angenommene Antwort oder Absage geht an den Interessenten hinaus.
## Markt [#markt]
Inhalte, die keinem Konto gehören, auf beiden Servern dieselben. Hier mit dem Recht [`lesen`](/mcp/rechte#lesen).
### check\_location [#check-location]
**Lage prüfen.** Liest nur.
Die Lage einer deutschen Adresse aus amtlichen und offenen Daten, jede Zahl mit Quelle und Stand: Bodenrichtwert, Zensus 2022 im 100-m-Raster, Hochwassergefahr, Breitband und Einrichtungen im Umkreis. Mit nur einer Postleitzahl der Bodenrichtwert und ein Richtwert je Quadratmeter Wohnfläche. Wo ein Land den Bodenrichtwert nicht freigibt, steht der Grund statt einer Zahl.
### estimate\_value [#estimate-value]
**Wert schätzen.** Liest nur.
Eine erste Wertspanne aus Adresse und Eckdaten nach den Verfahren der ImmoWertV, mit tragendem Verfahren, Annahmen und Fundstellen. Speichert nichts. Das Ergebnis ist eine Marktwerteinschätzung, keine Verkehrswertermittlung nach § 194 BauGB.
### count\_demand [#count-demand]
**Nachfrage zählen.** Liest nur.
Zählt, wie viele aktive Suchaufträge auf ein Objekt passen, und mit Preis, wie viele davon das Budget dafür haben. Eine Zahl, nie eine Liste und nie eine Person; unter drei nur die Auskunft, dass es weniger als drei sind.
### calculate\_purchase\_costs [#calculate-purchase-costs]
**Kaufnebenkosten.** Liest nur.
Rechnet die Kaufnebenkosten aus: Grunderwerbsteuer nach Bundesland, Notar, Grundbuch, auf Wunsch die Provision, und die Summe, die ein Käufer wirklich braucht.
## Die Bestätigungskarte [#bestaetigungskarte]
Was auf einen Klick wartet, zeigt der Server als Karte im Chat: was geschieht, an wen und mit welchem Text. Ihr Knopf ruft `confirm_action`. Dieses Werkzeug sieht kein Modell, nur die Karte ruft es, mit einem Token für genau diese eine Handlung, und es verlangt das Recht [`freigeben`](/mcp/rechte#freigeben). Ohne Oberfläche oder ohne dieses Recht gibst du in der App frei.
## Prompts [#prompts]
Drei fertige Aufträge, die ein Client als Vorlage anbietet:
| Name | Was er tut |
| ---------------- | ----------------------------------------------------------------------------------- |
| `briefing` | Was heute im Büro ansteht, mit den nächsten Schritten. |
| `answer-inquiry` | Eine Anfrage lesen und eine Antwort als Vorschlag anlegen (Argument `inquiry_id`). |
| `value-property` | Ein Objekt des Bestands bewerten, oder eine Adresse mit Eckdaten (Argument `what`). |
# Werkzeuge
Adresse: https://docs.athaus.ai/mcp/werkzeuge
> Wie die Werkzeuge der zwei MCP-Server gebaut sind. Die Listen selbst stehen je Server.
Jeder Server hat seine eigene Liste, geordnet nach dem Recht, das ein Werkzeug verlangt. Beide Listen sind aus dem Vertrag erzeugt, aus dem auch die Server ihre Werkzeuge führen; ein Test hält beide gleich.
## Die Namen [#die-namen]
Englisch, in snake\_case, das Verb vorn: so benennen die Verzeichnisse von ChatGPT und Claude ihre Werkzeuge, und so findet ein Modell sie am sichersten. Was ein Mensch liest, also Titel, Beschreibung und Ergebnis, ist deutsch.
| Verb | Bedeutung |
| ------------------------------------------------------ | --------------------------------------------------------------------- |
| `search_` | Freitext und Filter, seitenweise |
| `list_` | kleine Mengen deines Kontos, ohne Freitext |
| `get_` | ein Ding mit allem Zusammenhang für die nächste Entscheidung |
| `save_` | ohne Kennung anlegen, mit Kennung ändern |
| `update_` | ändern, wo es nichts anzulegen gibt |
| `draft_`, `send_`, `decide_` | Taten, die hinausgehen können: sie bereiten vor, dein Klick führt aus |
| `check_`, `estimate_`, `count_`, `calculate_`, `show_` | prüfen, rechnen, zeigen |
Derselbe Name kann an beiden Servern stehen und dort Verschiedenes heißen: `get_inquiry` ist bei Athaus für Makler eine Anfrage an dein Büro, bei der Suche deine eigene Anfrage an ein Inserat. Die Werte in einer Eingabe sind englisch (`buy`, `rent`); ein deutsches Wort wie "Wohnung" nimmt der Server auch.
## Was ein Werkzeug zurückgibt [#was-ein-werkzeug-zurückgibt]
Die genauen Eingaben und Rückgaben beschreibt der Server selbst in `tools/list`, für das Modell geschrieben, mit `outputSchema`.
* **Ein Text, der für sich vollständig ist.** Zeigt ein Assistent eine Oberfläche, sieht sein Modell nur ihn.
* **Dieselben Daten als `structuredContent`**, für ein Programm.
* **Was auf einen Klick wartet**, steht dort unter `confirmation`. Das Token für den Klick reist nur im `_meta` an die Karte, nie im Text.
* **Ein Fehler** kommt als Ergebnis mit `isError`, mit einem Satz, der den nächsten Schritt nennt, und dem [Fehlercode](/api/fehlercodes) in `_meta["athaus/code"]`. Fehlt eine Angabe, stellt das Ergebnis genau eine Frage.
## Hinweise für Modelle [#hinweise-für-modelle]
Zu jedem Werkzeug liefert der Server die vier Hinweise des Protokolls mit, und sie folgen aus seiner Wirkung: `readOnlyHint` bei Werkzeugen, die nur lesen, `destructiveHint` und `openWorldHint` nur dort, wo ein Werkzeug etwas zerstört oder fremde Dienste fragt. Ein Entwurf zählt nicht dazu. So fragt ein Assistent nicht vor jedem Entwurf nach, sondern vor dem, was wirklich etwas tut.
Was hinausgeht, führt der Klick eines Menschen aus, in der [Bestätigungskarte](/mcp/werkzeuge/anbieter#bestaetigungskarte) oder in der App. Wann es ohne Klick läuft, steht unter [Rechte](/mcp/rechte#klick).
# Athaus Immobiliensuche
Adresse: https://docs.athaus.ai/mcp/werkzeuge/suche
> Die Werkzeuge des Servers für deine eigene Suche, geordnet nach dem Recht, das jedes verlangt.
Der Server unter `https://suche.mcp.athaus.ai/mcp` sieht nur deine eigene Suche, nie ein Büro. Jedes Athaus-Konto kann ihn verbinden. Sein Katalog enthält nur Objekte, die Anbieter selbst bei Athaus eingestellt haben, keine Inserate anderer Portale. Wie du ihn einträgst, steht unter [Installation](/mcp/installation); am besten beginnt es mit `list_saved_searches` und `list_matches`: wonach gesucht wird und was neu ist.
## Suchen [#suchen]
Braucht das Recht [`suchen`](/mcp/rechte#suchen).
### search\_listings [#search-listings]
**Immobilien suchen.** Liest nur.
Sucht im Katalog von athaus.ai nach Inseraten zum Kauf oder zur Miete, nach Ort, Art, Preisgrenze, Zimmern und Fläche. Der Katalog enthält nur Objekte, die Anbieter selbst bei Athaus eingestellt und für ChatGPT und Claude freigegeben haben.
### show\_listings [#show-listings]
**Immobilien zeigen.** Liest nur.
Zeigt bis zu acht ausgewählte Inserate als Karten mit Foto, Preis, Fläche, Zimmern und Ort. Ein Klick auf eine Karte öffnet das Exposé; ohne Oberfläche kommt dieselbe Liste als Text.
### get\_listing [#get-listing]
**Exposé ansehen.** Liest nur.
Ein Inserat ganz: Fotos, Eckdaten, Beschreibung, die Pflichtangaben aus dem Energieausweis (§ 87 GEG), bei Miete Nebenkosten und Kaution, die Provision und der Anbieter mit Impressum. Mit Oberfläche dazu ein Formular für die Anfrage.
### list\_inquiries [#list-inquiries]
**Meine Anfragen.** Liest nur.
Deine Anfragen an Inserate, die neueste zuerst: zu welchem Objekt, ob der Anbieter geantwortet hat, ob etwas Ungelesenes dabei ist, und die letzte Nachricht.
### get\_inquiry [#get-inquiry]
**Anfrage ansehen.** Liest nur.
Eine deiner Anfragen mit ihrem ganzen Verlauf, die älteste Nachricht zuerst: was du geschrieben und was der Anbieter geantwortet hat.
### list\_saved\_searches [#list-saved-searches]
**Suchaufträge.** Liest nur.
Wonach Athaus laufend für dich sucht: Ort, Kauf oder Miete, Budget, Zimmer und Muss-Kriterien, ob ein Auftrag pausiert ist und wann zuletzt ein neuer Treffer kam.
### list\_matches [#list-matches]
**Treffer.** Liest nur.
Was deine Suchaufträge gefunden haben, das Beste zuerst, mit Preis, Fläche, Zimmern, einem Satz, warum es passt, und dem Link zum Inserat. Auf Wunsch nur die neuen oder nur die gemerkten.
## Suchaufträge [#suchauftraege]
Braucht das Recht [`suchauftraege`](/mcp/rechte#suchauftraege).
### favorite\_listing [#favorite-listing]
**Merken.** Ändert nur dein Konto.
Ein Inserat auf deine Merkliste legen oder wieder herausnehmen.
### save\_search [#save-search]
**Suchauftrag speichern.** Ändert nur dein Konto.
Legt einen Suchauftrag an, verfeinert, pausiert oder setzt ihn fort. Fehlt eine Pflichtangabe (Ort, Kauf oder Miete, Budget, Zimmer), legt es nichts an und stellt die nächste Frage; ein Budget wird nie geraten. Hinaus geht dabei nichts.
### save\_profile [#save-profile]
**Mappe.** Ändert nur dein Konto.
Anschrift, Haushalt, Finanzierung und Unterlagen für deine Anfragen.
### delete\_item [#delete-item]
**Löschen.** Folgenreich: wartet auf deinen [Klick](/mcp/rechte#klick).
Einen Suchauftrag oder eine Unterlage löschen, erst nach deinem Klick.
## Anfragen [#anfragen]
Braucht das Recht [`anfragen`](/mcp/rechte#anfragen).
### send\_inquiry [#send-inquiry]
**Anbieter anfragen.** Folgenreich: wartet auf deinen [Klick](/mcp/rechte#klick).
Bereitet eine Anfrage zu einem Inserat an seinen Anbieter vor: Name und E-Mail-Adresse aus deinem Athaus-Konto, dazu deine Nachricht und auf Wunsch eine Telefonnummer. Die Karte zeigt den Satz zur Weitergabe deiner Angaben; erst dein Klick schickt die Anfrage ab, und der Anbieter antwortet per E-Mail.
### update\_inquiry [#update-inquiry]
**Anfrage ordnen.** Ändert nur dein Konto.
Eine Anfrage archivieren oder zurückholen, deine Kontaktdaten freigeben oder die Freigabe widerrufen.
### book\_viewing [#book-viewing]
**Besichtigung buchen.** Folgenreich: wartet auf deinen [Klick](/mcp/rechte#klick).
Eine angebotene Zeit buchen, mit deinem Klick.
### cancel\_viewing [#cancel-viewing]
**Besichtigung absagen.** Folgenreich: wartet auf deinen [Klick](/mcp/rechte#klick).
Eine gebuchte Besichtigung absagen; der Anbieter bekommt Bescheid.
### decide\_match [#decide-match]
**Treffer entscheiden.** Ändert nur dein Konto.
Passt oder weg damit, auch für mehrere auf einmal. Eine Anfrage geht erst mit deinem Klick hinaus.
## Markt [#markt]
Inhalte, die keinem Konto gehören, auf beiden Servern dieselben. Hier mit dem Recht [`suchen`](/mcp/rechte#suchen).
### check\_location [#check-location]
**Lage prüfen.** Liest nur.
Die Lage einer deutschen Adresse aus amtlichen und offenen Daten, jede Zahl mit Quelle und Stand: Bodenrichtwert, Zensus 2022 im 100-m-Raster, Hochwassergefahr, Breitband und Einrichtungen im Umkreis. Mit nur einer Postleitzahl der Bodenrichtwert und ein Richtwert je Quadratmeter Wohnfläche. Wo ein Land den Bodenrichtwert nicht freigibt, steht der Grund statt einer Zahl.
### estimate\_value [#estimate-value]
**Wert schätzen.** Liest nur.
Eine erste Wertspanne aus Adresse und Eckdaten nach den Verfahren der ImmoWertV, mit tragendem Verfahren, Annahmen und Fundstellen. Speichert nichts. Das Ergebnis ist eine Marktwerteinschätzung, keine Verkehrswertermittlung nach § 194 BauGB.
### count\_demand [#count-demand]
**Nachfrage zählen.** Liest nur.
Zählt, wie viele aktive Suchaufträge auf ein Objekt passen, und mit Preis, wie viele davon das Budget dafür haben. Eine Zahl, nie eine Liste und nie eine Person; unter drei nur die Auskunft, dass es weniger als drei sind.
### calculate\_purchase\_costs [#calculate-purchase-costs]
**Kaufnebenkosten.** Liest nur.
Rechnet die Kaufnebenkosten aus: Grunderwerbsteuer nach Bundesland, Notar, Grundbuch, auf Wunsch die Provision, und die Summe, die ein Käufer wirklich braucht.
## Die Bestätigungskarte [#bestaetigungskarte]
Was auf einen Klick wartet, zeigt der Server als Karte im Chat: was geschieht, an wen und mit welchem Text. Ihr Knopf ruft `confirm_action`. Dieses Werkzeug sieht kein Modell, nur die Karte ruft es, mit einem Token für genau diese eine Handlung, und es verlangt das Recht [`anfragen`](/mcp/rechte#anfragen). Ohne Oberfläche oder ohne dieses Recht gibst du in der App frei.
## Prompts [#prompts]
Zwei fertige Aufträge, die ein Client als Vorlage anbietet:
| Name | Was er tut |
| -------------- | ------------------------------------------------------------------------------------ |
| `find-home` | Im Katalog von athaus.ai suchen und die passenden Inserate zeigen (Argument `what`). |
| `saved-search` | Einen Suchauftrag anlegen oder anpassen, damit Athaus laufend weitersucht. |
# Neuigkeiten
Adresse: https://docs.athaus.ai/neuigkeiten
> Was sich in Athaus geändert hat, die neuesten Tage zuerst.
## 3. Oktober 2026 [#3-oktober-2026]
* **Zwei MCP-Server statt einem.** Athaus für Makler arbeitet für dein Büro, Athaus Immobiliensuche für die eigene Suche; jeder hat seine eigene Adresse und eigene Rechte ([Überblick](/mcp)). Die Werkzeuge heißen jetzt englisch, etwa `get_briefing` oder `search_listings`. Die alte Adresse `api.athaus.ai/mcp` antwortet mit `410`; wer verbunden war, verbindet neu ([Anmeldung](/mcp/anmeldung#neu-verbinden)).
* **Freigeben im Chat.** Was hinausgeht, zeigt der Assistent als Karte, und dein Klick dort führt es aus. Was dein Büro auf Automatisch gestellt hat, läuft auch über MCP ohne Klick, wenn die Verbindung freigeben darf ([Rechte](/mcp/rechte#klick)).
* **Alle Aufgaben auf einmal.** Unter Einstellungen, Automatik stellt eine Zeile jede Art auf dieselbe Stufe ([Automatik-Stufen](/anleitungen/automatik-stufen)).
## 2. Oktober 2026 [#2-oktober-2026]
* **Inserate in ChatGPT und Claude.** An jeder Immobilie gibt es den Schalter **In ChatGPT und Claude**. Er ist aus, bis du ihn einschaltest; danach finden Suchende das Inserat dort als [Exposé-Karte](/mcp/apps). Die Anfragen zählen je Quelle.
* **Anfragen ohne Konto** auf der Inseratsseite von [www.athaus.ai](http://www.athaus.ai), mit ausdrücklicher Einwilligung in die Weitergabe ([Anfragen und Freigabe](/anleitungen/anfragen-und-freigabe)).
* **Jedes MCP-Werkzeug verlangt die Anmeldung**, für Suchende wie für Anbieter ([Anmeldung](/mcp/anmeldung)).
* **MCP Events** für ChatGPT: eine verbundene App bekommt Bescheid, wenn eine Anfrage eingeht. Die Abos stehen unter Einstellungen, MCP-Server ([Events](/mcp/ereignisse)).
* Der Chat für Anbieter arbeitet mit Anfragen, Vorschlägen, Besichtigungen, Kontakten und Listen und nimmt ein Inserat online oder offline.
* Die Seite einer Immobilie öffnet mit dem Exposé. Der Editor zeigt den nächsten Schritt und klappt freiwillige Angaben ein.
* Die Seite für [soziale Netze](/anleitungen/soziale-netze) ist da; die Verbindung selbst ist noch nicht eingerichtet.
* Die Rechtstexte haben eine neue Fassung; beim nächsten Kauf fragt Athaus die Zustimmung neu ab.
## 30. September 2026 [#30-september-2026]
* **Bewertungen** haben eine eigene Seite mit Übersicht, und eine Bewertung lässt sich löschen. Den Bericht für den Eigentümer gibt es als Link.
* Der Agent merkt sich je Anfrage, was der Mensch gesagt hat, und seine Entwürfe lernen den Ton deines Büros.
* Für jede Art von Vorschlag zählt Athaus deine Entscheidungen und bietet an, sie auf Automatisch zu stellen ([Automatik-Stufen](/anleitungen/automatik-stufen)).
* Eine Morgenmail nennt den Stand des Tages; die App aktualisiert sich ohne Neuladen.
* Antworten von Menschen ohne Konto gehen an den Makler.
* Gewerbliche Objekte nennen Wärme und Strom getrennt (§ 87 Abs. 2 GEG).
* Der Import rechnet Etagen, Kaution und Haustiere um.
## 29. September 2026 [#29-september-2026]
* **Der MCP-Server ist live** ([Überblick](/mcp)).
* Die Seite [Automatik](/anleitungen/automatik-stufen) ist da. Antwortentwürfe entstehen im Hintergrund, hochgeladene Unterlagen füllen das Objekt, eine Preissenkung wird zur Neuigkeit für Interessenten, und Absagen bereitet der Agent vor.
* Benachrichtigungen kommen gebündelt.
* Der Katalog hat Stadtseiten, sobald eine Stadt zehn Inserate hat.
## 28. September 2026 [#28-september-2026]
* Der Seiten-Chat öffnet sich überall mit Strg + J.
* Das Exposé gibt es als PDF.
* Beispielobjekte sind als solche markiert.
* Beim Kauf stimmst du dem Vertrag zur Auftragsverarbeitung zu.
* Inserate gehen nicht mehr an fremde Portale.
# Schnellstart für Entwickler
Adresse: https://docs.athaus.ai/schnellstart/entwickler
> Die öffentliche API, die zwei MCP-Server und ein eigener Schlüssel.
Athaus hat nach außen eine API und zwei MCP-Server, und sie sind für verschiedene Leser gebaut:
| | Öffentliche API | Athaus für Makler | Athaus Immobiliensuche |
| -------------- | ------------------------------------------------- | ------------------------------------------------- | ---------------------------------------------- |
| Adresse | `https://api.athaus.ai/api/public/...` | `https://anbieter.mcp.athaus.ai/mcp` | `https://suche.mcp.athaus.ai/mcp` |
| Für | Programme, die den Katalog lesen | Agenten, die für ein Büro arbeiten | Agenten, die für einen Suchenden arbeiten |
| Anmeldung | keine | immer: OAuth 2.1 oder ein `ath_`-Schlüssel | immer: OAuth 2.1 |
| Beschrieben in | [OpenAPI 3.1](https://api.athaus.ai/openapi.json) | `tools/list`, und [hier](/mcp/werkzeuge/anbieter) | `tools/list`, und [hier](/mcp/werkzeuge/suche) |
## Den Katalog lesen, ohne Anmeldung [#den-katalog-lesen-ohne-anmeldung]
```bash
curl "https://api.athaus.ai/api/public/properties?city=Berlin&transaction_type=rent&page_size=5"
```
Die Antwort ist eine Seite Treffer (`items`, `total`, `page`, `page_size`). Ein einzelnes Inserat holt `GET /api/public/properties/{id}`. Alle Wege, Parameter und Antworten stehen in der [Referenz](/api/referenz). Der Katalog enthält nur Objekte, die Anbieter selbst bei Athaus eingestellt haben.
## Einen MCP-Server verbinden [#einen-mcp-server-verbinden]
Mit Claude Code ist es eine Zeile je Server; die Anmeldung läuft danach im Browser:
```bash title="Athaus für Makler"
claude mcp add --transport http athaus-makler https://anbieter.mcp.athaus.ai/mcp
```
```bash title="Athaus Immobiliensuche"
claude mcp add --transport http athaus-suche https://suche.mcp.athaus.ai/mcp
```
Für Claude, ChatGPT, Cursor und VS Code steht der Weg unter [Installation](/mcp/installation). Welcher Server für wen ist, steht im [Überblick](/mcp).
## Ein eigener Agent mit Schlüssel [#ein-eigener-agent-mit-schlüssel]
Wer ohne Browser für ein Büro arbeitet, legt in der App unter [Einstellungen, API-Schlüssel](https://app.athaus.ai/einstellungen/zugang) einen Schlüssel an und schickt ihn als Bearer mit. Ein Schlüssel gilt nur bei Athaus für Makler:
```bash
claude mcp add --transport http athaus-makler https://anbieter.mcp.athaus.ai/mcp \
--header "Authorization: Bearer ath_..."
```
Ein neuer Schlüssel darf nur `lesen`. Was er sonst darf, wählst du beim Anlegen ([Schlüssel](/api/schluessel), [Rechte](/mcp/rechte)).
## Diese Doku für Agenten [#diese-doku-für-agenten]
* [/llms.txt](/llms.txt) ist das Inhaltsverzeichnis, [/llms-full.txt](/llms-full.txt) die ganze deutsche Doku am Stück.
* Jede Seite gibt es als Markdown: ihre Adresse mit `.md` dahinter, etwa [/mcp/installation.md](/mcp/installation.md), oder mit `Accept: text/markdown`.
* Die Doku hat einen eigenen MCP-Server unter `https://docs.athaus.ai/api/mcp`, ohne Anmeldung, mit den Werkzeugen `list_pages`, `get_page` und `search`.
# Schnellstart für Makler
Adresse: https://docs.athaus.ai/schnellstart/makler
> Vom ersten Anmelden bis zum ersten Inserat.
Solange Athaus geschlossen ist, kommt nur eine freigegebene Adresse hinein. Die Freigabe kommt mit einer Einladung per E-Mail.
### Anmelden [#anmelden]
Auf [www.athaus.ai/login](https://www.athaus.ai/login). Athaus kennt kein Passwort: du meldest dich mit einem Link oder Code per E-Mail an, oder mit Google.
### Die Einrichtung durchgehen [#die-einrichtung-durchgehen]
Beim ersten Mal führt dich [app.athaus.ai/willkommen](https://app.athaus.ai/willkommen) durch vier kurze Schritte:
1. **Anbieterprofil**: dein Name und dein Kürzel. Daraus wird die Adresse `athaus.ai/anbieter/`.
2. **Werkzeuge**: womit du heute arbeitest. Nennst du onOffice oder Propstack, beginnt die App danach mit dem Umzug.
3. **Tarif**: mit der Zustimmung zu AGB und Vertrag zur Auftragsverarbeitung.
4. **Einrichtungsgespräch** (nur für Büros): ein Termin, wenn du die Einrichtung lieber gemeinsam machst.
### Die ersten sechs Dinge [#die-ersten-sechs-dinge]
[Erste Schritte](https://app.athaus.ai/erste-schritte) ist die erste Zeile der Leiste. Dort stehen sechs Karten, und mit der letzten ist deine Immobilie draußen:
| Karte | Wohin sie führt |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Immobilie anlegen | [/immobilien/anlegen](https://app.athaus.ai/immobilien/anlegen) |
| Fotos und Unterlagen | in den Editor der Immobilie |
| Inserat veröffentlichen | auf die Seite der Immobilie, siehe [Inserat veröffentlichen](/anleitungen/inserat-veroeffentlichen) |
| Anfragen beantworten | [/anfragen](https://app.athaus.ai/anfragen), siehe [Anfragen und Freigabe](/anleitungen/anfragen-und-freigabe) |
| Team einladen | [/einstellungen/mitglieder](https://app.athaus.ai/einstellungen/mitglieder) |
| Bestand übernehmen | [/einstellungen/anbindungen](https://app.athaus.ai/einstellungen/anbindungen), siehe [Bestand umziehen](/anleitungen/bestand-umziehen) |
## Die Leiste [#die-leiste]
| Zeile | Adresse | Was dort ist |
| ----------------- | ----------------------- | -------------------------------------------------------------- |
| Start | `/` | Der Chat und was heute ansteht, auch die Entwürfe zur Freigabe |
| Meine Immobilien | `/immobilien` | Dein Bestand, jedes Objekt mit Exposé, Anfragen und Verlauf |
| Bewertungen | `/bewertungen` | Wertspannen nach ImmoWertV, mit Bericht für den Eigentümer |
| Anfragen | `/anfragen` | Das Postfach: Liste links, Verlauf rechts |
| Kontakte, Listen | `/kontakte`, `/listen` | Menschen und Sammlungen |
| Aufgaben, Termine | `/aufgaben`, `/termine` | Was zu tun ist, und die Besichtigungen |
| Analysen | `/analysen` | Zahlen über Bestand und Anfragen |
Einstellungen und Abrechnung liegen unten in der Leiste. Den Seiten-Chat öffnest du überall mit Strg + J (auf dem Mac ⌘ + J).
## Rollen im Team [#rollen-im-team]
* **Inhaber** und **Verwaltung** arbeiten mit allem, laden ein, entfernen und ändern das Büro. Nur sie stellen die [Automatik](/anleitungen/automatik-stufen) ein und verbinden [soziale Netze](/anleitungen/soziale-netze).
* **Makler** arbeiten mit Immobilien, Anfragen, Kontakten und Besichtigungen.