add_note
ChatGPTSaves a pending internal proposal for an internal note on a contact, property or deal. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
cancel_appointment
ChatGPTSaves a pending internal proposal for cancellation of one appointment occurrence without notifying participants. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
commission_report
ChatGPTCommission shares per person for a year based on the per-property commission split (realized = deals closed that year, expected = open properties). Agents only see their own shares; owners/admins see everyone incl. the office share.
complete_task
ChatGPTSaves a pending internal proposal for completion of one ordinary task; automatic compliance tasks are excluded. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
create_acquisition
ChatGPTSaves a pending internal proposal for a new owner acquisition lead, optionally with a new owner contact. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
create_appointment
ChatGPTSaves a pending internal proposal for a planned calendar appointment using Europe/Berlin times; a viewing requires a property. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
create_contact
ChatGPTSaves a pending internal proposal for a new contact without marketing consent. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
create_deal
ChatGPTSaves a pending internal proposal for a new open deal between a contact and a property; no won/lost deal. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
create_task
ChatGPTSaves a pending internal proposal for an internal follow-up task, optionally linked to a contact, property or deal. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
draft_email
ChatGPTSaves an e-mail DRAFT in the real4state mailbox – it is NOT sent. For a reply to a portal/website inquiry, always pass inquiryId from list_inquiries: it links the inquiry, contact and property and resolves the recipient. For several inquiries prefer draft_inquiry_replies. Otherwise reply to an existing e-mail (replyToEmailId) or write a new one (subject + recipient or contactId). Prefer an office template: pass templateId from list_text_templates (then subject and body are optional and only override the template). The agent reviews and sends it in real4state via the returned link.
draft_expose_email
ChatGPTPrepares a personal exposé link for a contact or an inquiry (property required) and saves an e-mail DRAFT with the link – NOT sent. The recipient must confirm the cancellation policy (Widerrufsbelehrung) and, for purchases, the buyer commission before seeing the full exposé and PDF; the confirmation is stored as evidence. Requires office imprint and recipient e-mail.
draft_inquiry_replies
ChatGPTPrepares replies to several portal/website inquiries at once as e-mail DRAFTS in the real4state mailbox – nothing is sent. One draft per inquiry, filled from an office template (templateId of an e-mail template from list_text_templates; default: the office's first e-mail template for inquiries) with contact, property and inquiry data. Pass inquiryIds from list_inquiries, or omit them for the newest unanswered inquiries with status "neu". At most 25. Inquiries without e-mail address, with a blocked contact or with an existing draft/reply are skipped (reason per inquiry). The agent reviews and sends each draft via its link.
draft_whatsapp_reply
ChatGPTSaves a WhatsApp reply DRAFT in the chat – it is NOT sent. The agent reviews and sends it in real4state. Write short, friendly WhatsApp style in German (Sie). Only useful while the 24-hour reply window is open.
fetch
ChatGPTFetches one record found by search (id like 'contact:<uuid>') as readable text with its real4state link.
find_duplicate_contacts
ChatGPTFinds possible duplicate contacts (same e-mail, same phone number in any notation, or same first and last name). With contactId only duplicates of that contact. Read-only: only the user (the real-estate agent) merges contacts in real4state via compareLink (Einstellungen → Datenpflege); never claim contacts were merged.
find_matches
ChatGPTMatching from contacts' search profiles: pass propertyId to get matching prospects (score 0–100 with reasons, whether already offered, whether an e-mail offer is allowed), or contactId to get matching properties (draft, active, reserved).
get_account
ChatGPTReturns the signed-in real4state user (name, e-mail), the connected office and the user's role. Use to greet the user or check which office is connected.
get_contact
ChatGPTFull context for one contact: details, search profile, marketing consent, deals, inquiries, open tasks/appointments and recent history (e-mails, notes). Use to prepare a meeting or summarise communication with a person.
get_daily_briefing
ChatGPTPersonal daily briefing for the signed-in user (deterministic CRM data, no AI): today's appointments with preparation hints (missing energy certificate, warning notes, open tasks of the contact), overdue and due-today tasks, unanswered inquiries (status 'neu', with waiting days), open deals without movement for N days (default 14) and the number of open AI proposals awaiting approval. Use for 'Briefing', 'Wie sieht mein Tag aus?', 'Worum sollte ich mich kümmern?'.
get_deal
ChatGPTOne deal with its timeline and related activity (appointments, tasks, e-mails, notes).
get_editable_fields
ChatGPTLists the editable fields of one contact, property or deal with the current value and allowed choices (options: key → label). Call this before update_contact / update_property / update_deal when you are not sure about a field name or allowed value. Tasks and appointments do not need it (update_task / update_appointment have fixed fields).
get_email
ChatGPTFull text of one e-mail including sender, recipients, attachments (names only) and linked CRM records.
get_office_overview
ChatGPTDaily briefing for the office: today's date, upcoming appointments, open and overdue tasks, new portal inquiries, unread e-mails and recent activity. Use for questions like 'Was steht heute an?' or 'Was sind meine wichtigsten Aufgaben?'.
get_property
ChatGPTFull details for one property: address, price, areas, features, costs, energy certificate (§ 87 GEG), exposé texts, owner, deals, recent inquiries and activity.
get_proposal_status
ChatGPTReturns whether a proposal created by a write tool was confirmed and executed in real4state (status: offen, ausgefuehrt, abgelehnt, fehlgeschlagen, abgelaufen) and its result link.
get_whatsapp_chat
ChatGPTReads one WhatsApp chat (last 40 messages, existing drafts, reply window). Identify it by waId (from list_whatsapp_chats) or by contactId.
import_property_image
ChatGPTImports an image generated in ChatGPT as an INTERNAL UNAPPROVED AI visualization draft on one property. Use the actual ChatGPT file reference, never invent download URLs or use sandbox paths. Resolve the exact property code with search_properties first; ask on ambiguity or filename conflict. Preserves existing photos and cover. Does NOT publish. The user reviews and approves the image in real4state. If no file is available, explain this and offer the object's regular media upload.
list_acquisitions
ChatGPTList owner acquisition deals (Akquise: owner leads on the way to a brokerage mandate) with stage, owner, address, price idea, market value and next step. By default only open ones (Lead, Bewertungsanfrage, Ersttermin, Bewertung erstellt, Maklervertrag angeboten).
list_aml_checks
ChatGPTLists anti-money-laundering (GwG) checks of purchase deals from stage 'Verhandlung' on: whether buyer and seller are identified (status per party), risk level and whether management approval is pending. Never contains ID document data. Default: only incomplete ones. Identification itself must be done by the agent in the CRM (deal page), not via chat.
list_appointments
ChatGPTAppointments (viewings, meetings, notary dates) between two Berlin calendar days, inclusive. Defaults to today. Maximum range three months.
list_custom_fields
ChatGPTLists the office's own custom fields for contacts, properties and deals (name, key, type, options). Values already appear in get_contact/get_property/get_deal under customFields. Use set_custom_fields to change them.
list_deals
ChatGPTList sales pipeline deals (property + prospective buyer/tenant) with stage, priority and expected commission. By default only open deals.
list_inquiries
ChatGPTPortal and website inquiries (ImmoScout24, Immowelt, Kleinanzeigen, website, e-mail) with status, message, next step and linked property.
list_search_profiles
ChatGPTLists all search profiles (Suchprofile) of one contact: sale/rent, property types, locations, price/area/rooms ranges, features, radius, active flag and a short summary. Use the profile id with save_search_profile to change one.
list_tags
ChatGPTLists the office's tags (German: Merkmale) for contacts and properties, e.g. Kapitalanleger or Neubau. Contacts and properties show their tags in get_contact/get_property. Use set_tags to change them.
list_tasks
ChatGPTOpen tasks sorted by due date, with overdue flag. Optionally only the signed-in user's tasks or including completed ones.
list_text_templates
ChatGPTLists the office's e-mail templates and short text snippets (German, Sie-Form). Prefer them for replies to inquiries, exposé cover notes, viewing confirmations, rejections and owner updates: pass templateId to draft_email instead of writing from scratch. Placeholders like {{anrede}} or {{objekt.titel}} are filled automatically from contact, property, inquiry and office.
list_whatsapp_chats
ChatGPTLists WhatsApp chats of the office's business number with last message, unread count and whether the 24-hour reply window is open. Use for 'Welche WhatsApp-Nachrichten sind offen?'.
offer_property
ChatGPTCreates one e-mail offer DRAFT per contact for a property (NOT sent). Only contacts with e-mail and recorded marketing consent (§ 7 UWG) get a draft; others are skipped with a reason. Use find_matches first.
record_rejection_draft
ChatGPTSaves a pending internal proposal for a deal rejection and, if requested, an unsent rejection-email draft. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
reschedule_appointment
ChatGPTSaves a pending internal proposal for a new time for one appointment occurrence, using Europe/Berlin times. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
save_search_profile
ChatGPTSaves a pending internal proposal for a contact's new or updated search profile; no radius search configuration. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
search
ChatGPTSearches the connected real4state office (contacts, properties, inquiries, deals, tasks, appointments, e-mails) by name, e-mail, phone, property code, title or city. Returns result ids for fetch.
search_contacts
ChatGPTSearch contacts (buyers, owners, prospects, tipsters) by name, e-mail or phone. Returns IDs for get_contact and write tools. An empty query lists the most recently contacted people.
search_emails
ChatGPTSearch e-mails in the real4state mailbox (received, drafts, sent) by text, contact or property. Returns subject, sender and a short excerpt; use get_email for the full text.
search_properties
ChatGPTSearch the office's properties (Objekte) by code, title, street, ZIP, city or district; optionally filter by status and sale/rent. Returns key facts, inquiry counts and IDs.
set_custom_fields
ChatGPTSaves a pending internal proposal for custom-field values on one contact, property or deal, using keys from list_custom_fields. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
set_tags
ChatGPTSaves a pending internal proposal for a complete tag selection on one contact or property, using existing tags from list_tags. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
update_appointment
ChatGPTSaves a pending internal proposal for changes to one existing appointment occurrence (title, notes, location, Europe/Berlin start/end – without endsAt the duration stays –, type, assignee, links) without notifying participants. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary (each changed field as current value → proposed value) and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
update_contact
ChatGPTSaves a pending internal proposal for field changes on one existing contact (changes: field name → new value, e.g. mobile, city, status, followUpOn, agentId; call get_editable_fields first for field names, current values and choices); marketing consent, blocking and archiving are never changed. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary (each changed field as current value → proposed value) and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
update_deal
ChatGPTSaves a pending internal proposal for changes to one existing deal's priority, commission or assignees; the stage is changed with update_deal_stage, won/lost only in real4state. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary (each changed field as current value → proposed value) and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
update_deal_stage
ChatGPTSaves a pending internal proposal for an open deal's pipeline stage; won/lost decisions remain in the CRM. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
update_inquiry
ChatGPTSaves a pending internal proposal for an inquiry's status, assignee, next step or internal note. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
update_property
ChatGPTSaves a pending internal proposal for field changes on one existing property (changes: field name → new value, e.g. price, status, rooms, availableFrom; numbers without unit; call get_editable_fields first for field names, current values and choices); nothing is published. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary (each changed field as current value → proposed value) and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.
update_task
ChatGPTSaves a pending internal proposal for changes to one existing task (title, notes, due date dueOn YYYY-MM-DD, assignee, status, links); pass only what should change, an empty string clears. Does NOT apply the proposed change or modify the target record. A person must review and approve it in real4state. Returns status proposed, proposalId, summary (each changed field as current value → proposed value) and a review link. Use get_proposal_status to check whether it was later approved. No messages are sent and nothing is published.