create_reservation
ChatGPTUse this when the owner has checked the preview_reservation card and said yes: saves the table as confirmed (like a table entered in the momoscreen app) and, if planned in the preview, emails the guest a confirmation. Pass only the previewToken of that preview. A token enters its table once: calling again with the same token adds nothing and answers alreadySaved: true; for a second table of the same kind make a new preview. Do not use for a reservation the owner has not seen in a preview or for changing or cancelling reservations (only in the momoscreen app).
disable_reservations
ChatGPTUse this when the owner wants to stop online table reservations. Two steps: first call without confirm (nothing changes) and tell the owner the effects and how many upcoming tables and open requests there are; only after the owner's explicit yes call again with confirm: true. Existing reservations are not cancelled and nobody is emailed. Do not use for a single day off (not available here yet, use the momoscreen app), for cancelling a reservation (only in the app) or without the owner's yes.
enable_reservations
ChatGPTUse this when the owner has checked the preview_reservation_setup card and said yes: saves the opening hours (if the preview had new ones), the time zone and the last booking time and switches table reservations on; guests can then request a table on the QR menu and the owner answers in the momoscreen app. Pass exactly the preview's confirm arguments incl. previewToken. Do not use for settings the owner has not seen in a preview, for switching off (use disable_reservations) or for entering a single reservation (use preview_reservation).
get_qr_code
ChatGPTUse this when the user wants the link or the QR code of their online menu (to share it, print it or put it on the tables). Returns the guest link and the momoscreen app page where the owner downloads the QR code to print; the card shows the QR code itself (there is no QR code image URL). Do not use for changing the menu (use preview_menu or preview_products) or for table reservations (start with get_reservation_status).
get_reservation_stats
ChatGPTUse this when the user asks how many reservations or people are expected (or were there) on a day, in a week, a month or any range up to 92 days, by status, per day or per time of day, or which day or time is busiest. Days are the restaurant's service days: a table at 01:30 after a Friday night counts on Friday. Returns numbers (and on request an anonymous list); guest names and contacts are never available. Do not use for setup questions (use get_reservation_status), for entering a reservation (use preview_reservation) or for answering requests (only in the momoscreen app).
get_reservation_status
ChatGPTUse this when the user talks about table reservations (switching them on or off, how many bookings, entering a table), always first: it tells whether reservations are on, whether guests can book, what is missing to switch them on and the next steps (nextSteps, follow them), plus today's numbers and the open requests. If there is no QR menu yet, offer to create one: the owner can send a photo of the menu (preview_menu, then save_menu) or name categories and dishes here. Numbers only: guest names and contacts are never available. Do not use for other days or periods (use get_reservation_stats) or for the menu itself (use get_menu).
get_translations
ChatGPTUse this when the menu should be translated for guests: right after save_menu when the user accepts your offer to translate, when the user asks to translate the menu or some dishes ("translate my menu into English"), or before correcting a translation. Returns the texts (category headings, dishes, special menus) in batches, each with key and sourceVersion. Translate every entry into each language in its missingIn and send them with save_translations, one call per language. Then call get_translations again and go on until missing is empty, without asking the user in between. Leave out languages to use the QR menu languages set in momoscreen: then don't ask the user which languages, just translate. If needsLanguageChoice is true: No QR menu languages are set yet: suggest up to 3 of supportedLanguages that this restaurant's guests most likely read. English first unless the menu is in English, then the languages of the biggest visitor and tourist groups of company.city / company.country (or a large local community). Never the language the menu is written in, no duplicates; say in one short sentence why. The owner decides (other or fewer languages are fine). userLocation is only a hint when company.city is empty. Then call again with the chosen languages. Always pass menuLanguage (the language the menu texts are written in): it is never a target. There is no review step: the owner's yes to translating (and their language choice) is the approval. Each save_translations call puts the translations on the guests' QR menu at once, so never promise to show them for approval first; afterwards say they are online and can be corrected any time. To correct or re-translate: pass productIds / categoryIds (ids from get_menu) and include "all" to get the current translations, then update_translations. Translate for restaurant guests, naturally and short. Keep proper names and dish names guests know in their original form (Pizza Margherita, Tiramisu, Wiener Schnitzel, Sushi), translate the rest. Keep the exact meaning of descriptions; allergen codes, numbers and sizes stay unchanged. Prices are not part of the texts. Do not use for prices, ids or sold-out (use get_menu) or for reservations (use get_reservation_status).
preview_products
ChatGPTUse this when the user wants to change prices, set or end a sale price, or mark dishes as sold out or available again: it shows each dish old → new without changing anything and returns a previewToken. Get the product ids from get_menu first. The user checks the changes in the card (don't repeat them); only after their OK call update_products with the same changes and the previewToken. Only prices, sale prices and sold out: for names, descriptions, tags, moving or deleting dishes use preview_menu_changes. Do not use for adding new dishes (use preview_menu or preview_menu_changes) or for table reservations (start with get_reservation_status).
preview_reservation
ChatGPTUse this when the owner wants to enter a table a guest booked by phone or in person ("Friday 7 pm, table for 4, Huber"): it checks date and time like the momoscreen app (warns about closed days or times outside the opening hours, refuses times more than 6 hours past or more than a year ahead) without saving and returns a previewToken. It works whether online reservations are on or off. The owner checks it in the card (don't repeat it or offer your own confirm button); only after the owner's OK call create_reservation with only the previewToken. Guest details you send are saved with the reservation but never shown back. Do not use for answering, changing or cancelling reservations (only in the momoscreen app) or for numbers (use get_reservation_stats).
preview_reservation_setup
ChatGPTUse this when the owner wants to switch table reservations on (or change opening hours, time zone or last booking time while they are on): it checks everything without saving and shows a card with the opening hours, the restaurant time zone and the last booking time; it returns a previewToken. Call get_reservation_status first. Pass openingHours only when the owner gives new ones (they replace the saved ones and show on the QR menu). The owner checks it in the card (don't repeat the hours or offer your own confirm button); only after the owner's OK call enable_reservations with the confirm arguments. Do not use for switching reservations off (use disable_reservations), for numbers (use get_reservation_stats) or without a QR menu (offer to create one with preview_menu first).
save_translations
ChatGPTUse this when you have translated entries from get_translations: stores up to 60 translations of ONE language and puts them on the guests' QR menu at once. There is no review step: the owner's yes to translating (and their language choice) is the approval. Each save_translations call puts the translations on the guests' QR menu at once, so never promise to show them for approval first; afterwards say they are online and can be corrected any time. It only fills missing translations; entries that already have one are skipped (changing them is update_translations). A language that is not a QR menu language yet is added (max 3), so only send languages the user chose or that are set. Copy key and sourceVersion unchanged; send a description whenever the original has one. Translate for restaurant guests, naturally and short. Keep proper names and dish names guests know in their original form (Pizza Margherita, Tiramisu, Wiener Schnitzel, Sushi), translate the rest. Keep the exact meaning of descriptions; allergen codes, numbers and sizes stay unchanged. Prices are not part of the texts. Never translate into the language the menu is written in (menuLanguage). The result says what is still missing: continue with get_translations until nothing is missing. Do not use for prices (they are not translated), for languages the user has not chosen or for changing existing translations.
update_company_info
ChatGPTUse this when the user wants to change the restaurant's street address, zip code, city or phone number shown on the QR menu. Before calling, tell the user the old and the new value and wait for their yes. Only send the fields that change. Do not use for the business name, country or languages (only in the momoscreen app) or for table reservations (start with get_reservation_status).
update_products
ChatGPTUse this when the user has checked the preview_products result and said yes: changes the regular price, the sale price (null ends the sale) and sold-out of existing dishes, live for guests at once. Pass exactly the changes from preview_products plus its previewToken. Do not use for changes the user has not seen in preview_products, for adding dishes (use preview_menu, then save_menu) or for table reservations (start with get_reservation_status).
update_translations
ChatGPTUse this when the user wants an existing translation changed (e.g. "in English it's Wiener Schnitzel, not Viennese cutlet") or asks to translate already translated texts again: replaces the stored translations of ONE language, live for guests at once. First call get_translations with productIds or categoryIds and include "all" for key, sourceVersion and the current translation. Send name and description (keep the current description when only the name changes). Tell the user what changed (old → new). Translate for restaurant guests, naturally and short. Keep proper names and dish names guests know in their original form (Pizza Margherita, Tiramisu, Wiener Schnitzel, Sushi), translate the rest. Keep the exact meaning of descriptions; allergen codes, numbers and sizes stay unchanged. Prices are not part of the texts. Do not use for filling missing translations (use save_translations), for prices or for changing the original menu texts.