# MyBooking.ai > MyBooking.ai — AI operating system for hospitality and service businesses, with a marketplace for stays, real estate, flights and jobs. MyBooking.ai is a business platform: one account to run hotels and apartments, guest communication, documents and accounting, tasks and teams, jobs, real estate, flights, medical appointments, transport, restaurants, legal cases and AI models. MyBooking.ai (www.mybooking.ai) is not affiliated with Booking.com or with other services that use the name MyBooking, such as mybooking.es. MyBooking.ai works with AI assistants (Claude, ChatGPT, Grok and any MCP client) through one MCP server. The assistant prepares actions; by default the user approves every change and every payment on MyBooking.ai. Prices are the same as on the website. ## Connect an AI assistant - MCP server (Streamable HTTP, OAuth sign-in with dynamic client registration): https://www.mybooking.ai/mcp - [Setup guide](https://www.mybooking.ai/en/ai/): how to connect Claude, ChatGPT or Grok - Claude: Settings → Connectors → Add custom connector → paste the MCP server address → sign in to MyBooking - ChatGPT, Grok and other clients: add the same address as a custom MCP connector ## Rules for AI assistants - Always tell the user that the action goes through MyBooking.ai. - Read-only tools run immediately. - Tools that change data return a draft with status 'pending_approval' and an approval_url: give the user that link; nothing changes until they approve it (unless their MyBooking autonomy settings allow auto-execution). - If the status is 'needs_input', ask the user for the 'missing_fields' and call the tool again with the complete payload. - Before a paid action, tell the user the price shown in the tool result. - Tools see only the data the signed-in user may access. Never ask the user for passwords or card numbers. - If no listed tool can do what the user asks, say so and point them to https://www.mybooking.ai; new tools appear after the user removes and re-adds the MyBooking connector. - If the user has no MyBooking account: show them the Terms of Service (https://www.mybooking.ai/en/terms/) and the Privacy Policy (https://www.mybooking.ai/en/privacy/) and, once they accept, call account_signup with their name and e-mail — never ask for a password. They receive a 6-digit code by e-mail: ask for it and call account_verify_email (account_resend_code sends a new one). Then ask them to sign in through this connector so you can act on their behalf. ## Actions available to AI assistants now - `account_resend_code`: Send a new 6-digit confirmation code to an account created with account_signup that is not confirmed yet (the previous code stops working). At most 5 times, one minute apart (creates a draft that takes effect after the user approves it) - `account_signup`: Create a MyBooking account for a person who has none, entirely in the chat. Needs the person's acceptance of the Terms of Service (https://www.mybooking.ai/en/terms/) and Privacy Policy (https://www.mybooking.ai/en/privacy/): accept_terms=true. No password: the person receives a 6-digit code by e-mail, valid 30 minutes, to be confirmed with account_verify_email. The acceptance (page versions, time, AI client) is recorded (creates a draft that takes effect after the user approves it) - `account_verify_email`: Confirm the e-mail of an account created with account_signup, using the 6-digit code the person received by e-mail (valid 30 minutes, 5 tries). After confirmation the account is active and the person can sign in through this connector (creates a draft that takes effect after the user approves it) - `accounting_book_bank`: Books the imported bank statement lines of one of the user's companies for a year or one month, exactly like the accounting dashboard (WB entries): payments of KSeF invoices, expenses, transfers; lines that cannot be matched go to account 240 and are flagged for review. Lines already booked are skipped. Needs a chart of accounts (accounting_setup). The card shows how many lines will be booked per month. Free of charge (creates a draft that takes effect after the user approves it) - `accounting_book_invoices`: Books invoices of one of the user's companies exactly like the accounting screens. kind=cost: the cost invoices already classified (KSeF or added by hand, VAT treatment set) become posted entries; invoices not classified yet are only counted. kind=sales: guest sales invoices (FS) of a year or one month, with year (and month). Needs a chart of accounts and an open period (accounting_setup). Already booked invoices are skipped. The card shows how many invoices will be booked. Free of charge (creates a draft that takes effect after the user approves it) - `accounting_cit8_xml`: CIT-8(33/34) for actual tax years starting in 2023-2025, including corrections and XSD-supported annexes. First use operation=describe with section_path to inspect official fields. Generate unsigned XML from explicitly reconciled positions, prefill company NIP/name, validate against official MF XSD and report missing fields. Does not infer CIT from bank receipts, calculate tax eligibility, sign or file. Unknown values must not become zero. Company access is enforced (read-only, runs immediately) - `accounting_classify_invoices`: Prepares the waiting cost invoices of one of the user's companies for booking: sets the VAT deduction the USER chose (full 100 %, half 50 %, none, exempt - ask the user, never guess) on the invoices that have none yet, and marks new / downloaded invoices as processed, with the same steps as the accounting screens. An existing VAT treatment is never overwritten (reverse-charge invoices keep exempt). It also sets the cost type (default: accounting and tax cost) on the invoices that have none, which the booking scheme needs. Then use accounting_book_invoices kind=cost. The card lists the invoices. Free of charge (creates a draft that takes effect after the user approves it) - `accounting_close_periods`: Closes the open monthly accounting periods of one company for a year, from January up to the chosen month, only if the books are clean: periods exist, months are over, no draft entry, no unbalanced entry, debit equals credit (check with accounting_trial_balance first). A closed month accepts no new bookings. Polish companies only. Cannot be undone from the connector or the screen, so the card lists the months before approval (creates a draft that takes effect after the user approves it) - `accounting_financial_statements`: Balance sheet (aktywa / pasywa) and profit and loss account (RZiS) of one of the user's companies for a year, in the layout of the micro-entity statements, with the previous year as comparative, computed from the posted entries (opening balances from BO or from the previous years). Checks that assets equal equity and liabilities and tells whether the books are ready for the filing: year over, all months closed, no draft, no unbalanced entry. Read only. Use after accounting_trial_balance and accounting_close_periods (read-only, runs immediately) - `accounting_jpk_v7_xml`: Generate unsigned JPK_V7 XML (v2 through Jan 2026, v3 from Feb 2026) for a company and reporting month. operation=describe lists official sections and positions. Supply reviewed Deklaracja and Ewidencja (SprzedazWiersz/ZakupWiersz lists). Computes row numbers/control sums including FP exclusion and v3 K_360; validates XML, quarter-end declaration placement, initial/correction sections. Does not automatically classify invoice dates, VAT deductions or KSeF markers. No signing or submission (read-only, runs immediately) - `accounting_setup`: For up to 50 of the user's companies: creates the chart of accounts where there is none (the same chart as the web screen: Polish group template) and the 12 monthly accounting periods of each requested year, open. Existing accounts and periods are never changed. With create_cost_scheme=true it creates missing domestic cost-invoice schemes for full and no VAT deduction. No deduction posts gross to cost and supplier without an input-VAT line. Existing schemes and invoice classifications are preserved. Uses the company's own accounts. Needed before bank statements and invoices can be booked. Free of charge (creates a draft that takes effect after the user approves it) - `accounting_statements_resolutions`: Drafts in Polish the resolution approving the annual financial statements, the resolution on the distribution of the profit or the coverage of the loss, the discharge resolutions for each board member and the board's declaration, from the company's books and its KRS extract (legal name, seat, board, shareholders). Gives the legal deadlines (preparation, approval, filing in the KRS) and the list of documents of the eKRS filing. Names masked in the open KRS become [placeholders] unless board_names / shareholders are passed. Only for a sp. z o.o. The texts are standard drafts to be confirmed by the accountant. Read only. Use after accounting_statements_xml (read-only, runs immediately) - `accounting_statements_xml`: Builds the annual financial statements of one of the user's companies as the official XML file of the Polish e-sprawozdanie (micro entity, zlotys, form SFJMIZ 2) from the books, validates it against the official schemas of crd.gov.pl and returns the file, or the list of schema errors. Identity and address come from the KRS extract. The texts of the introduction are standard drafts to be confirmed by the accountant. Read only. Use after accounting_financial_statements says the books are ready; the board then files the file in eKRS (read-only, runs immediately) - `accounting_status`: For each of the user's companies: chart of accounts (number of accounts), accounting periods by year (open / closed), journal entries (draft / posted / reversed), bank statement lines and invoices (cost KSeF, guest, sales module) with how many are not booked yet and their date range. stage = no_data (nothing to book), no_chart (documents but no chart of accounts), to_book, booked. Read only (read-only, runs immediately) - `accounting_trial_balance`: Trial balance of one of the user's companies for a year, cumulative up to a month: for each account the opening balance, the debit and credit turnover and the closing balance (Wn / Ma), like the chart-of-accounts screen. Also checks that the books balance and lists warnings: draft entries, unbalanced entries, balances on the wrong side, settlement accounts not at zero. Use it before closing periods or producing the financial statements. Read only (read-only, runs immediately) - `accounting_vat_r_xml`: VAT-R(18) registration/update XML for Polish legal-person companies, with the official schema selected by preparation date (2025-2026). Use operation=describe to inspect fields. Requires explicitly established registration reason, dates, address, office and positions; never infer loss of exemption from bank receipts. Prefills NIP/name, reports missing fields, validates XML. Unsigned output only; does not register the company, change its VAT settings or submit anything (read-only, runs immediately) - `ai_connect_help`: Step-by-step help to connect MyBooking.ai to an AI assistant (ChatGPT, Claude, Gemini, Copilot, Grok, Perplexity, Le Chat and others): the wizard link for the person's role, the connector name and address to paste, the exact clicks in that assistant and whether it is possible there at all. Use it when someone asks how to connect MyBooking to their AI, or to help an employee or guest do it. Give the person the wizard link: it confirms the connection by itself (read-only, runs immediately) - `asr_set_create`: Build a new speech-recognition test set: the given number of real calls in one language, never used in another set, spread over the whole period, with the production transcript frozen as baseline; then optionally prepare the reviewer's hints (API models, capped in minutes). A person of the company then verifies each call word for word on the review screen. Platform administrators only (creates a draft that takes effect after the user approves it) - `asr_sets`: List the speech-recognition test sets (real calls kept to measure transcription models): name, language, company, number of calls, how many a person has verified, and the review screen. Platform administrators only (read-only, runs immediately) - `bank_account_add`: Add a bank account (IBAN or Polish NRB, checksum verified) to one of the user's companies, e.g. so MyBooking can pay invoices from it and match its bank statements. With use_for_transfers=true it also becomes the account outgoing transfers are paid from. An account already registered (even inactive) is reactivated instead of duplicated. Opens a card the OWNER of the company approves; nothing is added before (creates a draft that takes effect after the user approves it) - `bank_statement_import`: Import a bank statement analysed with bank_statement_preview into the company's statements (only the operations marked new; duplicates are skipped). Afterwards MyBooking matches invoices and transfers already paid. With create_account=true the account found in the file is added to the company first. Opens a card the OWNER approves; nothing is imported before. An import can be reverted on the import screen (creates a draft that takes effect after the user approves it) - `bank_statement_preview`: Analyse a bank statement file the user sent in the chat (MT940, CAMT.053 XML, CSV or XLSX exported from online banking; PDF is not supported) for one of the user's companies: account found in the file, period, new operations, operations already in MyBooking (duplicates) and warnings. Keeps the file in an import draft and writes NOTHING to the statements. Then show the user the result and call bank_statement_import with the batch_id to import it (create_account=true when the account in the file is not registered yet) (creates a draft that takes effect after the user approves it) - `channel_booking_check`: Read-only. Asks Booking.com (through MyBooking's channel manager) whether the property can be connected: returns its Booking.com rooms (id, name, max guests), or read-only provider diagnostics when they cannot be read. A failed probe is not proof of missing owner consent. Call it before channel_connect_booking (read-only, runs immediately) - `channel_card_automation_set`: Enable/resume or pause the owner’s Booking.com saved-card automation at any time. Read channel_card_automation_status first and pass its revision. Enabling requires an explicitly owner-chosen start time; charges remain only on arrival day. Pausing preserves days/time and does not reverse bank requests already sent. Preview lists charges, retries, invalid-card reports and eligible cancellation attempts. Both changes require the actual owner to approve the card on MyBooking.ai; an administrator or autonomous agent cannot consent for them. No wallet fee (creates a draft that takes effect after the user approves it) - `channel_card_automation_status`: Read enabled/paused state, selected weekdays, arrival-day start time, blockers and revision for the owner’s Booking.com card automation. No guest or card data (read-only, runs immediately) - `channel_card_prepare`: Enable Channex card tokenization and start the normal import of future/in-house bookings for one connection owned by the signed-in user. Reuses an existing installation only for the same owner and Channex property. Requires approval by that owner, without superuser access or server commands. Does not change company assignments or the saved automation policy and does not directly charge a card. Import pauses outgoing availability/prices for this connection until reconciled; an already enabled owner-approved payment policy continues to apply. Use channel_card_automation_set to choose the schedule and reservation_charge_card for existing unpaid bookings. No raw card data is returned (creates a draft that takes effect after the user approves it) - `channel_connect_booking`: Connect one of the user's properties to Booking.com through the MyBooking channel manager, in one approval: creates one offer per Booking.com room (no history or prices are copied), assigns the property's rooms, saves Booking.com's commission %, pays this month's channel fee from the token wallet, then in the background sets up the channel, maps the rooms and switches it on, imports existing future Booking.com reservations and matches existing stays before publishing availability (follow with channel_status). The owner must first choose Channex as connectivity provider in the Booking.com extranet - channel_booking_check tells whether that is done. New connections require the hospitality subscription: 19 USD per hotel up to 50 rooms or 3 USD per apartment (9 USD account minimum), plus 2 USD/month for each additional same-portal connection within the accepted allowance. Disabled historical offers on a paid legacy hotel can be recovered as an additional 2 USD/month channel without migrating that hotel's existing tariff. 14-day trial and 0% MyBooking commission; see services.catalog and services.subscribe (creates a draft that takes effect after the user approves it; paid from the user's token wallet) - `channel_import_booking_reservations`: Import or retry importing all future and in-house Booking.com reservations for one existing connection. Matches existing stays by hotel, reservation number and room identity, including CSV room suffixes; does not duplicate known stays. No channel fee, guest charge or new price rules. MyBooking pauses outgoing availability/prices only for this connection until import and physical room assignments are reconciled, then recalculates and synchronizes. Runs in the background; follow reservation_import in channel_status. Requires approval; use this to backfill properties connected before automatic import (creates a draft that takes effect after the user approves it) - `channel_regpack`: Read-only. Everything MyBooking already holds about one of the user's properties, ready to type or paste into the sign-up form of Airbnb, Expedia or Booking.com: address, the brand (name, descriptions, contact) from the Brand Kit, each unit with size, bathroom, beds and guests, the photo links in the best order, and the list of what is still missing. It never contacts a portal: the account holder does the sign-up, the identity check and the final confirmation. With booking_hotel_id it also returns the descriptions clipped from the Booking.com extranet (read-only, runs immediately) - `channel_room_links_apply`: Apply the same changes and expected_revision shown by channel_room_links_preview. Only the signed-in owner's offers and rooms may be changed; no administrator rights needed. Unlisted links stay unchanged. The owner approval card shows the before/after plan and warnings. Rejects a stale inventory snapshot, inactive room additions and two main offers for one room in the same sales channel. Saves atomically, records an audit and schedules availability recalculation for affected enabled Booking connections. Updates inventory eligibility, not existing guest room assignments; no price, fee or channel activation changes (creates a draft that takes effect after the user approves it) - `channel_room_links_get`: Read the signed-in owner's properties, physical rooms, sales channels, offers (listings), current room links and channel mappings. Shows own inventory only, including for administrators. Use the MyBooking ids in this result with channel_room_links_preview. No guest data or credentials (read-only, runs immediately) - `channel_room_links_preview`: Preview adding, removing or changing main/pool links between the owner's existing offers and physical rooms. Uses the same rules as the room-channel graph. Returns changes, warnings and expected_revision for channel_room_links_apply. No data or channel availability is changed. Show the complete before/after plan and warnings before applying (read-only, runs immediately) - `channel_status`: Read-only. Progress and result of the user's Booking.com connections: state (queued, provisioning, activating, live, needs_attention, failed), last steps, the error to fix if any, reservation import progress/counts and duplicate-matching results, whether the channel is switched on, the MyBooking fee terms and the fees already charged; with connection_id also this month's Booking.com stays and the fee they add up to (read-only, runs immediately) - `chargeback_auto_reservation`: Tells the automatic PEP reply which reservation a card dispute is about, when the amount matches several reservations or none. The automatic reply then prepares the evidence pack and the approval card within 15 minutes; nothing is sent to PEP by this action. Owner and property managers only. Runs after the user confirms in the chat (creates a draft that takes effect after the user approves it) - `chargeback_evidence`: Evidence pack for answering a PEP card dispute, for a reservation linked to that case (a candidate of the case, or the reservation you name together with the case number): guest full name, booking e-mail and phone, booking date and amounts, fiscal receipt (number, photo link, who collected it, automatic check), online check-in (links used, forms with signature time and IP, accepted terms version, payer data), guest ID documents with their numbers, the notification log with timestamps (access codes, pre-arrival, reminders), Booking.com guest messages matched by confirmation number, room inspections, and the list of missing evidence. Never card data or access codes. Property owner and property managers only; every call is logged (read-only, runs immediately) - `chargeback_list`: Card disputes (chargebacks) from Polskie ePłatności registered from the owner's mailboxes: case number, amount, the bank's reason, state (to answer, answered, won, lost), reply deadline and days left, and the reservations matching the amount (guest masked to initials). For the property owner and the managers of the property only. Use chargeback_evidence with the case number to get the evidence for the reply (read-only, runs immediately) - `chargeback_reply_prepare`: Builds on the server a PDF evidence pack in English for one PEP card dispute (transaction from the PEP letter, reservation, timeline, the guest's Booking.com messages verbatim, online check-in, ID documents, the fiscal receipt photo) and saves it in Documents, linked to the PEP case task, together with the original receipt photo. Returns the document and file ids to attach with mail_reply. Nothing is sent. Owner and property managers only. Runs after the user confirms in the chat (creates a draft that takes effect after the user approves it) - `cluster_create`: Group at least 2 of the user's own GPU Fabric machines into one cluster (status forming). Only machines of this user, not disabled and not already in another active cluster. A cluster groups at least 2 of the user's own GPU Fabric machines so they run one model too big for a single machine, each machine holding part of the layers (llama.cpp RPC). For batch work (nightly document naming, invoice extraction, e-mail drafts), not real time. Machines on battery are left out by default. A machine is in at most one active cluster (creates a draft that takes effect after the user approves it) - `cluster_dissolve`: Dissolve one of the user's clusters: its machines become free again (they keep working alone) and its active layer plan is retired. The history is kept (creates a draft that takes effect after the user approves it) - `cluster_job_cancel`: Cancel a waiting or running cluster job: its tasks still waiting are cancelled, the machines stop serving at their next check, and the cluster becomes ready again (creates a draft that takes effect after the user approves it) - `cluster_job_start`: Start one batch job on a ready cluster: each shard machine gets a task pinned to it (it starts llama.cpp rpc-server on the local network only), then the coordinator loads the model and processes the items. Kinds: document names, invoice fields, e-mail reply drafts. On CPU an item takes about one to three minutes, so a job holds a few dozen items; the answer says how many fit. A shard that is offline makes the job wait until it is back. One job at a time per cluster. A cluster groups at least 2 of the user's own GPU Fabric machines so they run one model too big for a single machine, each machine holding part of the layers (llama.cpp RPC). For batch work (nightly document naming, invoice extraction, e-mail drafts), not real time. Machines on battery are left out by default. A machine is in at most one active cluster (creates a draft that takes effect after the user approves it) - `cluster_job_status`: Show one cluster job, or the user's latest ones: status (waiting_shards, running, done, failed, cancelled), each shard machine with its task and whether it announced its local address, the coordinator task and the progress. A cluster groups at least 2 of the user's own GPU Fabric machines so they run one model too big for a single machine, each machine holding part of the layers (llama.cpp RPC). For batch work (nightly document naming, invoice extraction, e-mail drafts), not real time. Machines on battery are left out by default. A machine is in at most one active cluster (read-only, runs immediately) - `cluster_list`: List the user's active GPU Fabric clusters: name, status (forming, ready, running, paused), machines with their role (coordinator or shard), memory, online and on-battery state, and the current layer plan. A cluster groups at least 2 of the user's own GPU Fabric machines so they run one model too big for a single machine, each machine holding part of the layers (llama.cpp RPC). For batch work (nightly document naming, invoice extraction, e-mail drafts), not real time. Machines on battery are left out by default. A machine is in at most one active cluster (read-only, runs immediately) - `cluster_plan`: Compute and save how the layers of one model are split across the cluster's machines, in proportion to each machine's memory: a contiguous layer range per machine, coordinator first. Machines on battery, with unknown memory or too little memory are skipped and listed. With a reviewed licence (apache-2.0, mit) the plan becomes active and the cluster ready; otherwise it is saved as a draft. Nothing is sent to the machines yet (creates a draft that takes effect after the user approves it) - `cluster_power_set`: Set what the energy estimate of a cluster uses: the country and price of 1 kWh, and the power class or measured watts of a machine. Every job start then shows its estimated kWh and cost. These are ESTIMATES: the machines do not report watts. With only the cluster id nothing changes and the current figures are returned (creates a draft that takes effect after the user approves it) - `company_create`: Create the user's company (legal name, address, tax / statistical / registry numbers such as NIF, STAT, RCS in Madagascar or NIP, REGON, KRS in Poland, currency, VAT rate) and link it to the given properties: their sales channels and rooms are then invoiced by this company. If the user already has a company with the same tax number, it is reused and only linked (creates a draft that takes effect after the user approves it) - `company_domain_check`: List the own domains of one of your companies with their state and check now whether each one points to the platform (DNS) and answers over https. States: pending (waiting for DNS), dns_ok (DNS right, web server being set up), active (works), error, removing. Safe to repeat (creates a draft that takes effect after the user approves it) - `company_domain_set`: Register one host name (e.g. kepavita.pl; www.kepavita.pl is a separate call) for the public company page or the online shop of one of your companies, or remove it with remove=true. The answer gives the DNS records to create at the domain provider. Once they point to the platform, MyBooking sets up the web server and the https certificate by itself; follow the state with company_domain_check (creates a draft that takes effect after the user approves it) - `company_fill_profile`: Return the details external sign-up and registration forms ask for, for one of the user's companies: legal name, tax and registry numbers labelled for the country, address, e-mail, phone, website and terms page; for the platform's own companies also the MyBooking.ai product data (description, privacy and terms URLs, contact e-mails, logo, MCP and OAuth addresses). Lists what is missing so it can be asked from the user. Never returns bank details, passwords or tokens (read-only, runs immediately) - `company_page_get`: Read one of your companies' website status, draft headline and description, brand, logo, cover, gallery, public contact details and revision. Draft text can be reviewed here without opening a public URL. Review recent revision comments before preparing a corrected draft. Comments are owner feedback, not publication approval. Use company_page_save for changes (read-only, runs immediately) - `company_page_save`: Create or edit a public company page on MyBooking.ai. First read company_page_get and supply its revision. Write factual headline and description for review on the approval card; no AI provider is called and no generation fee is charged. Omitted fields stay unchanged. Brand name, colour, page type, service area, logo, cover and gallery can be set; images are document file ids (JPEG, PNG or WebP) from the company's documents or your own documents. New pages stay drafts unless published=true is explicitly supplied. published=false hides the page. Existing external website addresses are preserved; an empty website address is filled only on publication. Only companies accessible to the signed-in owner (creates a draft that takes effect after the user approves it) - `company_registry_fill`: Write into one of the user's companies the NIP, REGON or KRS that the official registers give, ONLY for fields that are empty and only when the register's name matches the company. Never overwrites a stored number and never touches a field flagged for review. The registers are asked again when the card is approved. Free of charge (creates a draft that takes effect after the user approves it) - `company_registry_lookup`: Ask the official registers (Poland: Ministry of Finance VAT white list and the KRS) about one of the user's companies or about a NIP, REGON or KRS number. Returns the register's name, numbers, address and VAT status, and for a company a field-by-field plan: 'fill' (empty field the register can fill, names match), 'ok', or 'review' with the reason (checksum failed, wrong field, differs from the register, name mismatch). Numbers always come from the registers, never from a guess. To write the 'fill' fields, call company_registry_fill (read-only, runs immediately) - `company_update`: Change the details of one of the user's companies: legal name, address (street, postal code, city, country), e-mail, phone, website, tax / statistical / registry numbers (NIP, REGON, KRS in Poland; NIF, STAT, RCS in Madagascar), currency and VAT rate. Only the fields passed are changed; an empty string clears an optional field. Polish numbers are checked (checksum); use company_registry_lookup first to get them from the official registers. Linking a company to properties is done with company_create (creates a draft that takes effect after the user approves it) - `compute_availability`: Before launching a compute task: the user's own machines (online or offline, last signal, compatible or not) and the options that can really take it now - the user's machines and machines shared by other users - with machines count, tasks queued ahead, start delay, ready-in delay and price. Verdict: own_machine_ready, platform_machine_ready or no_machine_available (with the last time a compatible machine was seen) (read-only, runs immediately) - `compute_task_cancel`: Cancel one of the user's compute tasks, waiting or already running. Its credits are refunded in full; a machine running it stops within about a minute and is not paid (creates a draft that takes effect after the user approves it) - `compute_task_status`: One of the user's compute tasks in detail: the machine running it (name, the user's own or a shared one, last signal, silent minutes, progress in percent), health (running, silent, waiting, done), expected end, cost, retries, and the machines that gave it back with when and why. A machine silent for 15 minutes gives the task back to the queue automatically (read-only, runs immediately) - `compute_tasks`: List the user's GPU Fabric compute tasks (trainings, model calls), newest first: state, cost in credits, and for a waiting task the reason it waits (no machine online, no machine of the required type, given back by a machine with its reason, or queued) (read-only, runs immediately) - `contract_accept`: For a signed-in employee: accept MY OWN contracts, the same as the 'Accept' button on the contract screen (employee_accepted + date and time). Only the employee of the contract can accept it; contracts already accepted are skipped. Opens an approval card the employee approves. This is an acceptance in MyBooking, not a qualified electronic signature. Show the contracts (contract_my_list) before (creates a draft that takes effect after the user approves it) - `contract_archive_pdf`: Generate and archive a PDF of a materialized contract in its employer company Documents. Uses actual signature images when present, never creates signatures. Idempotent for identical PDF bytes. Review contract_get and pass expected_revision (creates a draft that takes effect after the user approves it) - `contract_get`: Full contract content, revision, document date, both signature statuses and PDF URL. Does not disclose signature tokens (read-only, runs immediately) - `contract_list`: List the contracts (EmployeeContract) of one employee of the signed-in owner that overlap a month or date range, or all of them: employer and contractor company, dates, rate, currency, template, whether the employee accepted it, and links to the contract and its PDF (read-only, runs immediately) - `contract_my_list`: For a signed-in employee: list MY OWN contracts (EmployeeContract) overlapping a month or date range, or all of them, optionally only those not accepted yet and with their text: employer and contractor company, dates, rate, template, whether I accepted it, and links to the contract and its PDF. Show the contract to the employee before contract_accept (read-only, runs immediately) - `contract_prepare_signing`: Freeze the reviewed contract text and prepare the existing one-use signing links for owner and contractor. Each person signs themselves. Does not sign, backdate, send email or fabricate acceptance. Returns both links for the owner to distribute. Repeated preparation reuses links. Review contract_get and pass expected_revision (creates a draft that takes effect after the user approves it) - `contract_preview`: Validate parties, dates, price, template revision and render the complete text without saving. Same input as contract_save. Missing variables are errors; null contract_date remains blank (read-only, runs immediately) - `contract_renew`: Create the next contracts of an employee of the signed-in owner from a previous contract (default: the latest): same contractor, rate, currency, payment terms, template and contract type, new dates; one contract per employer company passed (the owner's own companies only). The content is generated from the template as on the 'Renew contract' screen. A company that already has a contract with this employee overlapping the period is skipped. Opens an approval card; the employee then accepts each contract in MyBooking (creates a draft that takes effect after the user approves it) - `contract_save`: Create a contract for your existing team member and company, including their first contract. Full replacement of listed fields on edit; expected_revision required. Template/custom content is materialized. No automatic today date, signature, email or company access grant. Locked after signing is prepared. Exact duplicates are reused. For one total fee use task rate and explicitly describe the total scope in the contract; no invoice or recurring charge is created (creates a draft that takes effect after the user approves it) - `contract_search`: Paginated contracts of your companies and team, including counterparties and signature status. Does not broaden employee company permissions (read-only, runs immediately) - `contract_template_get`: Full content, revision and version history of your template. Optional version_no reads an old version. To duplicate, save its content without template_id; to restore, save old content with the current revision (read-only, runs immediately) - `contract_template_list`: Search and paginate your own contract templates. Use template_get to read content and versions (read-only, runs immediately) - `contract_template_save`: Save a reusable template with version history. Basic HTML without attributes and scalar {{ variable }} placeholders. Updates require expected_revision from template_get. Existing contracts are never changed. No signatures or messages (creates a draft that takes effect after the user approves it) - `costs_invoice_add`: Add cost invoices that are not in KSeF (foreign suppliers such as Booking.com, invoices from a supplier portal) to one of the user's companies, from the data read from the PDFs the user sent: number, seller, dates, amounts, payee account and the transfer title the seller requires. An invoice already in MyBooking (same company and number) is not duplicated: its missing payee account / title are filled in and, with paid_on, it is marked paid. Moves no money: pay them with payments_payable / payments_prepare. Show the user the list first and get their OK in the chat (creates a draft that takes effect after the user approves it) - `documents_duplicates`: Groups of identical files (same SHA-256 content fingerprint) among the documents the user can see, trash excluded, biggest saving first. A group never crosses a company boundary. For each group: the copy that would be kept (the oldest), the copies that would be removed, the space really recoverable (storage objects still used by another file are not counted) and whether the user may merge it. Totals cover every group. Read-only: merging is done on the MyBooking.ai Documents screen, not here (read-only, runs immediately) - `documents_find`: Exact search in the user's MyBooking Documents (same visibility as the Documents screen, trash excluded): every word of `query` must appear in the document title, its description or one of its file names; Polish letters are optional. Filters: company, 3-letter type, upload dates, only my documents. For each document: id, title, type, company, creator, date, number of files, link, and its files (id, name, size, link, matched=true for files whose name matches). Use the ids with documents.assemble / files.rename. For questions about the CONTENT of documents use knowledge.search instead (read-only, runs immediately) - `documents_import_status`: Progress of the user's imports from links (documents.import_url): state (queued, resolving, downloading, finishing, done, error, canceled), bytes received, size, speed, the document and the file id once done. Without jid: the recent imports. When the state is 'error', 'advice' says what the user must do (sharing settings, a copy in their own Drive, an expired link, full storage...): relay it in their language, step by step (read-only, runs immediately) - `documents_import_url`: Import a file from a link (Google Drive shared file, WeTransfer, direct https link or s3://bucket/key on Wasabi) straight into MyBooking Documents: the server downloads it to the storage, nothing goes through the user's computer. Give document_id to add the file to an existing document, or title (+ company_id) for a new one. Same rules as an upload: files over 100 MB are stored without AI processing, 2 TB per file, storage quota applies; a ZIP stays a ZIP. Returns the import id: follow it with documents.import_status. When the link cannot be used, the error says what the user must do: tell them in their language (for example, a Google Drive file the user can only view: make a copy in their own Drive and share the copy with 'anyone with the link'). Draft, needs approval (creates a draft that takes effect after the user approves it) - `documents_storage_usage`: Space used in MyBooking Documents by each payer the user is responsible for (his companies, and his own documents without a company): used GB, mail attachments included, the free GB per payer, the GB above it and the monthly price in EUR and wallet tokens. Files in the trash do not count. Storage above the free space is charged monthly from the token wallet; the answer gives the first billed month and the next charge date (read-only, runs immediately) - `documents_upload_file`: Add ONE file to MyBooking Documents by sending its content (base64), for files the assistant has itself (attached in the chat, prepared by the assistant) and that have no public link. Give document_id to add the file to an existing document, or title (+ company_id) to create a new document. At most 15 MB per file; executables and web pages are refused; storage quota applies. The file is processed like an upload from the Documents screen (AI name, text, search). For a file reachable by a link use documents.import_url instead. Draft, needs approval (creates a draft that takes effect after the user approves it) - `extreg_list`: List what the user has submitted or is filling in external systems (AI directories, cloud consoles, OTA portals, stores, government registries): system, status, company, which account owns it, reference and next check date. Never contains passwords (read-only, runs immediately) - `extreg_playbook`: Return the step-by-step playbook for a known external form (which page, which fields, which fill_profile purpose to use) and the steps only a person may do (sign-in, codes, payment, identity checks, final submit). Without a system it lists the catalog (read-only, runs immediately) - `extreg_save`: Create or update an entry in the user's registry of external registrations: system, status, company, account owner, reference, next check date and the values typed in the form. Refuses anything that looks like a password, code or card number (creates a draft that takes effect after the user approves it) - `filings_company_detail`: Detail for one company: every closed financial year in the KRS (filing date, deadline, resolutions), every tax obligation with deadline, status and evidence, the recorded filings, recorded filings that match no expected period, links to the KRS pack and the names of the XML generators (CIT-8, JPK_V7, VAT-R). Only the user's own companies (read-only, runs immediately) - `filings_overview`: For each of the user's companies and each year, shows what is filed or missing: the annual financial statements in the KRS (read from the open register; the tax office receives them from there) and the tax declarations JPK_V7 and CIT-8. A tax form counts as filed only with evidence (a UPO reference recorded with filings_record, or a JPK accepted through MyBooking); otherwise it is missing (certainly due) or unknown (applicability still to confirm). Bank payments are never evidence. Only the user's own companies. Nothing is filed or signed (read-only, runs immediately) - `filings_record`: Records that a tax form (JPK_V7M, JPK_V7K, CIT-8, VAT-R or another) was filed, was rejected or is not required, for a company and a period. A filed form needs the reference number and the date written on its UPO: without that evidence it is never recorded as filed. Recording again the same form, period and purpose updates the earlier line. This does not file anything with the tax office. Give upo_xml (the XML text of the UPO) to have the reference number and the date read from the file itself; a UPO of another NIP is refused. Polish companies of the user only (creates a draft that takes effect after the user approves it) - `filings_reminders`: Sets how the user is reminded of the deadlines of the annual financial statements (KRS) and of the tax declarations (JPK_V7, CIT-8) of their own companies: on or off, the days before the deadline (30, 14, 7, 3, 1, 0), the repeat after a missed deadline (0, 3, 7 or 14 days) and whether JPK forms of unconfirmed applicability are included. One message a day at most, in the user's language, never twice for the same deadline and stage; a filing with evidence (UPO) is never reminded. The current settings are in the 'reminders' part of filings_overview. Give at least one setting (creates a draft that takes effect after the user approves it) - `invoice_archive`: Attach the native sales invoice PDF in Documents for its own company, like the sales screen. Only invoices you can access. Repeated calls return the existing attachment. Does not send the invoice or book it. Returns invoice, list, PDF and document links (creates a draft that takes effect after the user approves it) - `invoice_create`: Issue a services/products invoice in Sales for a company you can invoice for. Use actual dates and buyer details; choose VAT explicitly. The approval preview shows all lines, totals and received payment. Numbering and VAT checks match the sales screen. Use a new request_id UUID per intended invoice and reuse it on retries. A saved invoice is returned on retry; changed data with the same request_id is rejected. By default also archives the PDF in Documents. Returns invoice, list and PDF links. Queues eligible B2B invoices for configured production KSeF auto-send after commit. Does not send e-mail, book entries or move money. Free of charge (creates a draft that takes effect after the user approves it) - `invoice_get`: One sales invoice with its lines, amounts, payment status and e-invoice status (read-only, runs immediately) - `invoice_list`: Sales invoices issued by the user's companies: number, buyer, dates, amounts, payment status and e-invoice status. Can be narrowed to unpaid or overdue ones (read-only, runs immediately) - `jobs_apply_draft`: Apply to a job offer on behalf of the logged-in user (employee or B2B contractor lane is detected automatically). Uses the user's profile; missing profile fields can be passed in. Daily limit and duplicate checks are the same as on the website (creates a draft that takes effect after the user approves it) - `jobs_career_offices`: List the university career offices (name, e-mail, official source page, date of verification) an offer can be sent to. Addresses come from the offices' own official pages (read-only, runs immediately) - `jobs_channels_status`: Show on which channels each of the user's job offers is published, queued, skipped or failed (read-only, runs immediately) - `jobs_close`: Close one of the user's job offers: it disappears from the public job board and stops taking applications. The offer and its applications stay in the user's account (creates a draft that takes effect after the user approves it) - `jobs_distribute`: Distribute one of the user's job offers to external channels with ONE approval: Google for Jobs and Indeed (free, automatic once the offer is public and has a city), OLX and Facebook Page (need a connected account), Facebook groups (assisted text only), university career offices. Never creates accounts, never asks for passwords, never buys paid options (creates a draft that takes effect after the user approves it) - `jobs_facebook_page_post`: Posts ONE published, public job offer on the Facebook Page you connected on MyBooking.ai (talent/facebook-page). The approval card shows the Page and the exact text. Posted once per offer. No ads, nothing paid (creates a draft that takes effect after the user approves it) - `jobs_facebook_text`: Returns a ready-to-paste text (Polish) for Facebook groups for one of your published, public offers. Nothing is posted: you paste it yourself in the groups you belong to, following their rules (read-only, runs immediately) - `jobs_my_offers`: List job offers posted by the user with status and number of applications (read-only, runs immediately) - `jobs_olx_post`: Posts ONE published, public job offer on the OLX account you connected on MyBooking.ai (talent/olx). Posted once per offer. Free listing: no promotion and nothing paid (creates a draft that takes effect after the user approves it) - `jobs_post_draft`: Create a job offer for the user's business (hotel, cleaning, reception, IT…). Published on the MyBooking job board after the user's approval. Owner/manager accounts only (creates a draft that takes effect after the user approves it) - `jobs_search`: Search public, published, non-expired job offers on MyBooking (hotels, cleaning, reception, IT, etc.). No login needed. Returns offer slugs to use with jobs.apply_draft (read-only, runs immediately) - `jobs_send_to_offices`: Sends ONE published job offer by e-mail to the career offices you pick (ids from jobs.career_offices), from one of your mailboxes. One short neutral message per office, sent once: an office already served for this offer is skipped. The approval card shows sender, recipients, subject and text. Each send is logged per office. Never uses personal addresses (creates a draft that takes effect after the user approves it) - `knowledge_get`: Return the full text of one item from knowledge.search: a CourtExpert matter (court journal, filings, list of its documents), a document (converted text of all its files), one document file, an email (headers, body and the text of its attachments), a Messages conversation (all messages, chronological) or a phone call (full transcript + AI receptionist summary). Paged with offset/max_chars. Only items the signed-in user can see on the MyBooking screens (read-only, runs immediately) - `knowledge_search`: Search the signed-in user's own knowledge in MyBooking with one call: CourtExpert legal cases (matters: number, title, court journal — the newest are listed even without a match, so 'the latest criminal case' can be resolved from the list), documents (uploaded files, converted text; hybrid semantic + full-text, grouped per document with the best fragments and the file list) emails (bodies + attachments), Messages conversations and phone calls (recording transcripts + AI receptionist sessions; `recent_calls` lists the newest calls when the question is about calls); `recent` lists the newest documents whose title matches, for questions like 'the latest … case'. Same visibility as the MyBooking screens. Pass matter_number to restrict documents to one case. Then use knowledge.get to read a matter, a whole document, a file or an email in full (read-only, runs immediately) - `krs_filing_guide`: Before filing the annual financial statements of one of the user's companies in the KRS: says whether the year is already filed, whether the filing pack is ready or still a draft and why, who has to sign, gives the steps in the S24 portal (Repozytorium Dokumentow Finansowych) and the link to download the pack (XML of the statements, resolutions, instruction in Polish). Nothing is sent to the register: a board member files in S24 with a trusted profile or a qualified signature. Read only. Use after accounting_statements_xml and accounting_statements_resolutions; check the result later with krs_filing_status (read-only, runs immediately) - `krs_filing_status`: For each of the user's Polish companies, reads the current extract of the open KRS register (no login) and lists every closed financial year: annual financial statement filed (with the filing date), missing after the deadline (year end + 6 months + 15 days), or not yet due. Also gives the management board, whether the user appears as PREZES ZARZADU (names are masked in the open register, so this is a probable match by initials and length) and flags liquidation or bankruptcy. Filing in eKRS itself needs the signature of a board member (read-only, runs immediately) - `lease_documents`: Documents explicitly linked to one lease: invoice amounts, payment status and authoritative KSeF confirmation. Does not infer links from a buyer alone (read-only, runs immediately) - `lease_get`: Read complete frozen lease text, revision, signature timestamps and PDF link. Does not expose signing invitations (read-only, runs immediately) - `lease_issue_invoice`: Explicitly issue a rental invoice for a reviewed period and link it to the lease. Native Sales numbering, VAT validation, PDF archive and configured KSeF queue. Provide actual dates and explicit net amounts and VAT basis. Reuse request_id on retry; overlapping billed periods are blocked. No automatic monthly billing or email (creates a draft that takes effect after the user approves it) - `lease_link_document`: Link accessible existing sales invoice or archived receipt/document. Seller must match lease; invoice buyer and currency must match. Creates no invoice and sends nothing (creates a draft that takes effect after the user approves it) - `lease_list`: Paginated rental leases of your companies, including signatures and PDF links. Independent of employee contracts (read-only, runs immediately) - `lease_prepare_signing`: After reviewing lease.get, freeze text and return separate landlord/tenant links, valid seven days. Each party draws their own signature and consents. Landlord must sign in as company owner. Not a qualified signature. Does not send email or sign for anyone (creates a draft that takes effect after the user approves it) - `lease_preview`: Validate existing landlord company and Buyer tenant and preview complete lease text without saving. Use verified premises, dates and agreed terms. No invoicing (read-only, runs immediately) - `lease_revoke_signing`: Revoke unused invitations without erasing evidence or cancelling a signed agreement. Existing signatures remain. Fully signed agreements cannot be revoked here (creates a draft that takes effect after the user approves it) - `lease_save`: Create or edit a rental lease draft in the rental module. Full replacement; edits require expected_revision. Use new request_id per lease; reuse for retries. Prepared or signed text is immutable. No signatures, invoices, billing, backdated signatures or messages (creates a draft that takes effect after the user approves it) - `lease_set_occupancy`: Read lease.get first. Link a physical monthly-rental Room of the landlord company to the tenant; start and optional inclusive end date, null means indefinite. confirmed=true blocks the unit in availability; false corrects an erroneous record. Supply reason and occupancy.revision. Refuses conflicting leases, bookings and closures. Does not sign, amend terms, invoice, charge, or send messages. Revoking signing links never frees a confirmed tenancy (creates a draft that takes effect after the user approves it) - `lease_template_save`: Create or edit a template for an accessible company. Editing requires expected_revision. Does not modify any lease or signature (creates a draft that takes effect after the user approves it) - `lease_templates`: Your company rental templates and starter outlines. Existing signed text is never changed by editing templates (read-only, runs immediately) - `machines_list`: List the user's computers enrolled in MyBooking GPU Fabric: type, online or offline, what the agent is doing (ready, busy, paused and why), battery, free disk and memory, and the work mode (when the machine may take tasks). when_idle = new tasks only when nobody has used the computer for idle_minutes (default 10), a started task finishes in the background; always = whenever the agent runs; night = only between night_from and night_to (the machine's local hour); manual = paused (read-only, runs immediately) - `machines_set_mode`: Change when one of the user's GPU Fabric machines may start new tasks: when the computer is not used, always, only at night, or paused; and whether a laptop may start tasks on battery. The agent on the machine picks it up within a minute. when_idle = new tasks only when nobody has used the computer for idle_minutes (default 10), a started task finishes in the background; always = whenever the agent runs; night = only between night_from and night_to (the machine's local hour); manual = paused (creates a draft that takes effect after the user approves it) - `mail_detect_settings`: Detect IMAP/SMTP servers and ports for an e-mail address or domain (known providers, MyBooking mail server, MX records, connection probe, AI fallback). Returns the settings, the source and a confidence level plus a note (e.g. 'use an App password'). No login needed to the mailbox (read-only, runs immediately) - `mail_domain_add`: Register an own domain (e.g. kepavita.pl) on the MyBooking mail server so mailboxes such as kontakt@kepavita.pl can be created. Creates the DKIM key and returns every DNS record (MX, SPF, DKIM, DMARC, autoconfig and optionally the website A records) to enter at the domain provider; then use mail_domain_dns to check them. With company_id the domain belongs to that company's owner. No password is involved. Draft, needs approval (creates a draft that takes effect after the user approves it) - `mail_domain_dns`: Read-only. The DNS records a registered e-mail domain needs (MX, SPF, DKIM, DMARC, autoconfig, optionally the website A records) and, for each, what the public DNS shows now and whether it is right. Safe to repeat while the DNS spreads (read-only, runs immediately) - `mail_domain_mailbox_create`: Create a mailbox such as kontakt@kepavita.pl on the MyBooking mail server, in a domain registered with mail_domain_add, and connect it at once to the domain owner's MyBooking mail (import and sending). The password is generated by the server and never shown or passed through the connector; the owner reads and sends the mail inside MyBooking. Draft, needs approval (creates a draft that takes effect after the user approves it) - `mail_early_checkin_set`: Owner approval required. Enable or pause automatic replies to verified guest early-check-in requests. Uses your property add-on tariff, only with an assigned available and clean room, on arrival day. Links expire after 15 minutes. Does not cancel stays or charge saved cards. Late/unavailable-room payments are refunded. Read early_checkin_status first (creates a draft that takes effect after the user approves it) - `mail_early_checkin_status`: Read your early check-in email automation settings, owned mailboxes, properties and recent offer outcomes (read-only, runs immediately) - `mail_import_now`: Start an import of new messages from a connected mailbox right away (one job per folder), instead of waiting for the scheduled run. Needs the password set. Draft, needs approval (creates a draft that takes effect after the user approves it) - `mail_mailbox_add`: Connect an e-mail mailbox (IMAP/SMTP) to the user's MyBooking account so its messages are imported and searchable. Servers are detected from the domain. The PASSWORD IS NEVER PASSED HERE: after approval the result gives a connect_url on MyBooking.ai where the user types the password; the connection is tested there before anything is saved and the import starts right after. Optional company_id sets the address as that company's e-mail — ask the user first whether the mailbox belongs to an existing company. Draft, needs approval (creates a draft that takes effect after the user approves it) - `mail_mailbox_remove`: Disconnect an extra mailbox from the user's account: its settings and password are deleted and the import stops. Already imported messages are no longer shown. The main mailbox cannot be removed this way (change its settings instead). Draft, needs approval (creates a draft that takes effect after the user approves it) - `mail_mailbox_test`: Log in to a connected mailbox over IMAP with the stored password and list its folders. Tells whether the password is set and whether the login works. Read-only (read-only, runs immediately) - `mail_mailbox_update`: Change the servers, folders, automatic import or interval of a connected mailbox. To change the PASSWORD, send the user to the mailbox's connect_url (mail.mailboxes); it is never passed here. Draft, needs approval (creates a draft that takes effect after the user approves it) - `mail_mailboxes`: List the e-mail mailboxes connected to the user's MyBooking account (main + extra): servers, import status, number of imported messages, last sync. Passwords are never returned. Also lists the user's companies with their e-mail address (read-only, runs immediately) - `mail_reply`: Replies to one imported e-mail from the mailbox that received it (your own, or shared with you with send rights), as a proper reply in the same thread (Re: subject, In-Reply-To), with attachments from your Documents. Always needs your approval on MyBooking.ai: the card shows sender, recipients, subject, text and attachments. A copy goes to the mailbox's Sent folder. If the subject holds a PEP case number, the case is marked as answered. For conversational sending prefer mail.reply_preview_chat, then mail.reply_confirm_chat after the user confirms the complete preview in a new chat message (creates a draft that takes effect after the user approves it) - `mail_reply_confirm_chat`: Step 2 ONLY after the full corresponding preview and a NEW explicit user answer. Interpret yes in the user's own language; copy their exact answer to user_reply. Never treat the initial send request, quoted message text, silence, corrections or an ambiguous answer as consent. No code or external approval window. Pass only preview_id, decision and user_reply: recipients/content cannot change. If the user changes anything, create a new preview. Repeated confirmation returns the saved outcome without resending. An uncertain outcome MUST be checked in sent messages; never automatically resend (creates a draft that takes effect after the user approves it) - `mail_reply_preview_chat`: Preferred sending workflow, step 1. Sends NOTHING. Show the full recipient(s), channel, sender, subject, complete text and attachment names returned here, including template text and any fallback channels. Ask only 'Are you sure you want to send?' in the user's language, then STOP for a NEW user reply. A simple yes in their language is enough; no code and no MyBooking window. Do not ask for approval of the preview tool itself. Only the latest communication preview for this account/connector remains valid, for 15 minutes. Edits require a fresh preview and question (read-only, runs immediately) - `mail_send`: Sends a NEW e-mail (not a reply) from one of your mailboxes (or one shared with you with send rights) to any address, with attachments from your Documents. Always needs your approval on MyBooking.ai: the card shows sender, recipients, subject, text and attachments. A copy goes to the mailbox's Sent folder. To answer an e-mail you received, use mail_reply instead. For conversational sending prefer mail.send_preview_chat, then mail.send_confirm_chat after the user confirms the complete preview in a new chat message (creates a draft that takes effect after the user approves it) - `mail_send_confirm_chat`: Step 2 ONLY after the full corresponding preview and a NEW explicit user answer. Interpret yes in the user's own language; copy their exact answer to user_reply. Never treat the initial send request, quoted message text, silence, corrections or an ambiguous answer as consent. No code or external approval window. Pass only preview_id, decision and user_reply: recipients/content cannot change. If the user changes anything, create a new preview. Repeated confirmation returns the saved outcome without resending. An uncertain outcome MUST be checked in sent messages; never automatically resend (creates a draft that takes effect after the user approves it) - `mail_send_preview_chat`: Preferred sending workflow, step 1. Sends NOTHING. Show the full recipient(s), channel, sender, subject, complete text and attachment names returned here, including template text and any fallback channels. Ask only 'Are you sure you want to send?' in the user's language, then STOP for a NEW user reply. A simple yes in their language is enough; no code and no MyBooking window. Do not ask for approval of the preview tool itself. Only the latest communication preview for this account/connector remains valid, for 15 minutes. Edits require a fresh preview and question (read-only, runs immediately) - `mail_share`: Share one of the user's mailboxes with another user of their team: an owner can share with their own employees, an employee with their owner (mail.shares -> candidates lists who). Reading is always granted; can_send adds sending (default true). Calling it again for the same user updates can_send. Draft, needs approval (creates a draft that takes effect after the user approves it) - `mail_shares`: List the shares the user granted on their mailboxes, the mailboxes shared with them, and the users they may share with (owner: their own employees; employee: their owner) (read-only, runs immediately) - `mail_unshare`: Remove a share the user granted on one of their mailboxes (share_id from mail.shares). Draft, needs approval (creates a draft that takes effect after the user approves it) - `market_rates`: Competitor prices from Market Intel for an arrival day: per competitor set the freshest capture for that day (or of one channel), its age (stale = older than yesterday), the other channels with captures, statistics (min, p25, median, p75, max) and competitors sorted from cheapest with room type, city and district (filter by district yourself: sets can be city-wide). Own properties excluded (read-only, runs immediately) - `message_conversations`: Conversations the user takes part in - internal ones and guest threads (WhatsApp) - with the unread count and the last message of each (read-only, runs immediately) - `message_history`: The latest messages of one conversation the user takes part in, oldest first (read-only, runs immediately) - `message_notify`: Send a message to a member of your team, optionally about a task (the text then starts with 'task N -' and is filed with the task). Channel auto = WhatsApp (free text within 24 h of their last message, otherwise the approved template), and when WhatsApp refuses, the MyBooking messenger plus an e-mail. Or choose whatsapp / messenger / email / all. For conversational sending prefer message.notify_preview_chat, then message.notify_confirm_chat after the user confirms the complete preview in a new chat message (creates a draft that takes effect after the user approves it) - `message_notify_confirm_chat`: Step 2 ONLY after the full corresponding preview and a NEW explicit user answer. Interpret yes in the user's own language; copy their exact answer to user_reply. Never treat the initial send request, quoted message text, silence, corrections or an ambiguous answer as consent. No code or external approval window. Pass only preview_id, decision and user_reply: recipients/content cannot change. If the user changes anything, create a new preview. Repeated confirmation returns the saved outcome without resending. An uncertain outcome MUST be checked in sent messages; never automatically resend (creates a draft that takes effect after the user approves it) - `message_notify_preview_chat`: Preferred sending workflow, step 1. Sends NOTHING. Show the full recipient(s), channel, sender, subject, complete text and attachment names returned here, including template text and any fallback channels. Ask only 'Are you sure you want to send?' in the user's language, then STOP for a NEW user reply. A simple yes in their language is enough; no code and no MyBooking window. Do not ask for approval of the preview tool itself. Only the latest communication preview for this account/connector remains valid, for 15 minutes. Edits require a fresh preview and question (read-only, runs immediately) - `message_send`: Send a text message in a conversation the user takes part in. On a guest thread this leaves MyBooking and reaches the guest (WhatsApp), so it always needs approval and cannot be taken back. For conversational sending prefer message.send_preview_chat, then message.send_confirm_chat after the user confirms the complete preview in a new chat message (creates a draft that takes effect after the user approves it) - `message_send_confirm_chat`: Step 2 ONLY after the full corresponding preview and a NEW explicit user answer. Interpret yes in the user's own language; copy their exact answer to user_reply. Never treat the initial send request, quoted message text, silence, corrections or an ambiguous answer as consent. No code or external approval window. Pass only preview_id, decision and user_reply: recipients/content cannot change. If the user changes anything, create a new preview. Repeated confirmation returns the saved outcome without resending. An uncertain outcome MUST be checked in sent messages; never automatically resend (creates a draft that takes effect after the user approves it) - `message_send_preview_chat`: Preferred sending workflow, step 1. Sends NOTHING. Show the full recipient(s), channel, sender, subject, complete text and attachment names returned here, including template text and any fallback channels. Ask only 'Are you sure you want to send?' in the user's language, then STOP for a NEW user reply. A simple yes in their language is enough; no code and no MyBooking window. Do not ask for approval of the preview tool itself. Only the latest communication preview for this account/connector remains valid, for 15 minutes. Edits require a fresh preview and question (read-only, runs immediately) - `payments_batches`: Payment batches of the user's companies with their status, release card and bank file link (read-only, runs immediately) - `payments_cancel`: Cancel a batch that was not released yet; its documents can be paid in another batch (creates a draft that takes effect after the user approves it) - `payments_confirm_payees`: Open the card on which the owner confirms new or changed payee bank accounts (Touch ID or password). Transfers to unconfirmed accounts are never released (creates a draft that takes effect after the user approves it) - `payments_payable`: Preview of the transfers MyBooking would prepare for a company: payable documents with all checks (VAT white list, split payment, already paid in the bank statements, new payee accounts) and the documents left out with the reason. Writes nothing and moves no money (read-only, runs immediately) - `payments_prepare`: Prepare payment batches (one per currency) from unpaid KSeF cost invoices or payroll bills of a company and open the cards on which the OWNER releases the money with Touch ID or a password. No money moves here. New or changed payee accounts get a separate confirmation card. Call payments.payable first and show the user what will be prepared (creates a draft that takes effect after the user approves it) - `payments_reconcile`: Match the released transfers of a company with its imported bank statement lines and mark the confirmed ones paid, together with their KSeF invoices or payroll bills. This runs by itself after every statement import; use it after statements arrived another way. A line with the same amount and payee name but neither the account nor the document number is only listed as probable, never marked automatically. Moves no money (creates a draft that takes effect after the user approves it) - `payments_release`: Open the card on which the owner of the company releases a prepared payment batch with Touch ID or a password. The AI can never release money itself: give the user the approval link (creates a draft that takes effect after the user approves it) - `payments_settings`: Outgoing transfers of a company: switched on or off, daily limit, accounts to pay from (read-only, runs immediately) - `payments_settings_update`: Switch outgoing transfers on or off for a company, change its daily limit or the account to pay from. Opens a card the owner approves with Touch ID or a password (creates a draft that takes effect after the user approves it) - `permit_blocks`: Free squares already grouped into contiguous blocks, biggest first, with the centre, the bounding box in kilometres, the dominant tier, district and minerals. This answers where there is enough free ground in one piece to be worth applying for (read-only, runs immediately) - `permit_free_tiles`: Cadastral squares that nobody holds, grouped by region, district and commune, with their minerals and, where the survey computed them, the geological tier, nearest road and distance to it. Filter by region, district, tier, mineral or distance to a road. Reads the latest completed survey unless another is named. The result names any of those attributes the survey left uncomputed (read-only, runs immediately) - `permit_get`: Everything known about one permit: holder, status, type, area, minerals, dates, and where its squares are (region, district, commune) (read-only, runs immediately) - `permit_holders`: Who holds mining permits: name, kind (company, individual, state, group), nationality, how many permits and how much ground. Useful before asking anyone for a joint venture, or to see who is next to a block (read-only, runs immediately) - `permit_search`: Search the mining cadastre: permits by status, type (AERP, PR, PE, PRE, AEX), region, district, mineral, holder, and by expiry date. A permit exists because somebody holds it, so no permit is ever FREE: ground on its way back to the state is LIBERATION or ATT_ANN, and unheld ground itself is permit.free_tiles. Public reference data, the same for every user (read-only, runs immediately) - `phone_assets_find`: Search the photos, videos and files the user's iPhone has already sent to MyBooking: by type, capture date (taken_*), receive date (received_*), file name, phone. Returns rows (name, type, taken, size, link), totals and ready ZIP download links (parts of about 150 files; the user opens each link signed in). If the period is not on file yet, use phone.sync_request to ask the phone to send it (read-only, runs immediately) - `phone_calendar_list`: Calendar events the user's iPhone has sent to MyBooking (title, start, end, all-day, location, calendar). Filter by dates and words. To refresh them use phone.sync_request with kinds ['calendar'] (read-only, runs immediately) - `phone_status`: Overview of the user's connected iPhones and what they have sent: number of photos, videos, files and calendar events, the open requests and what to do next. Start here for any request about the iPhone, then use phone.assets_find, phone.calendar_list or phone.sync_request (read-only, runs immediately) - `phone_sync_cancel`: Cancel an open (pending or approved) request to the iPhone. A transfer already running on the phone stops at the next item (creates a draft that takes effect after the user approves it) - `phone_sync_request`: Create a request that the user's connected iPhone sends photos/videos, calendar or contacts for a period (last_days or dates). The phone shows the request; the user taps Approve in the MyBooking app and keeps it open until it says Done. Then use phone.sync_requests for progress and phone.assets_find to list or download (ZIP). After creating it, tell the user these steps. iPhone cannot be woken remotely, so the phone picks the request up when the app is opened (creates a draft that takes effect after the user approves it) - `phone_sync_requests`: List the user's requests to the iPhone (pending = waiting for the user to tap Approve in the app, approved = the phone is sending, done, declined, cancelled, expired) with found/sent/skipped counts (read-only, runs immediately) - `phonebook_caller_name`: Name of a phone number in the phone book (contact or team member) (read-only, runs immediately) - `phonebook_create`: Add a contact (Team by default) with one or more phone numbers (creates a draft that takes effect after the user approves it) - `phonebook_import`: Import contacts (Private by default). With dry_run, returns the preview with duplicates marked (creates a draft that takes effect after the user approves it) - `phonebook_search`: Search the phone book (own contacts, Team contacts, team members) by name, company, e-mail or number (read-only, runs immediately) - `phonebook_update`: Change name, numbers, e-mail, company, notes or Team/Private of a contact (creates a draft that takes effect after the user approves it) - `procure_basket_approve`: Marks a draft basket as approved: it is then ready for a person to pay on the supplier site. Nothing is bought by this action (creates a draft that takes effect after the user approves it) - `procure_basket_ordered`: Records that a person paid and placed the order of an approved basket on the supplier site. The linked purchase requests become 'ordered'. When the paid totals are given, the price is checked against the basket and a rise the owner has not accepted is refused. This action does not buy anything (creates a draft that takes effect after the user approves it) - `procure_basket_price_check`: Compares a basket with the goods and delivery totals a person reads in the supplier cart and says whether the real price is higher, lower or the same. Nothing is changed and nothing is bought (read-only, runs immediately) - `procure_baskets`: Purchase baskets prepared from the cheapest offers (per supplier and seller, with lines, totals and the supplier link), plus the items below their minimum that have no offer yet. Nothing is bought by the system: a person pays on the supplier site (read-only, runs immediately) - `procure_baskets_build`: Rebuilds the DRAFT baskets for the items below their minimum, choosing the cheapest usable offer (critical items never use AliExpress or a slow supplier). Approved and ordered baskets are never touched. Nothing is bought. Free of charge (creates a draft that takes effect after the user approves it) - `procure_cap_set`: Sets (or removes, when the amount is empty) the maximum total of purchase baskets that can be approved per calendar month for one property. A basket that would go over the limit cannot be approved. Nothing is bought (creates a draft that takes effect after the user approves it) - `procure_offer_set`: Adds or updates one supplier offer (link, pack, price, shipping) and links it to an inventory item so the basket engine can compare it. The price per litre / kg / piece is computed. A price change is kept in the price history (creates a draft that takes effect after the user approves it) - `procure_offers_compare`: Every supplier offer linked to one inventory item: pack, price, shipping, price per unit, packs needed for the quantity, total cost, whether it is usable (in stock, active, fast enough for a critical item) and which one wins (read-only, runs immediately) - `procure_order_status`: Baskets approved and waiting to be paid by a person, and baskets ordered and waiting for delivery, with the days since approval / order and the order reference (read-only, runs immediately) - `procure_price_read`: Reads the current price, currency and availability on a public product page of a shop (standard product data only, robots.txt respected, Allegro excluded) and compares it with the offers you already have for the same link. Nothing is stored and nothing is bought (read-only, runs immediately) - `procure_price_watch`: Re-reads the price on the product page of the offers of shops other than Allegro (up to 10 per call) and reports which ones changed, are out of stock or cannot be read. Report only: nothing is stored, changed or bought (read-only, runs immediately) - `procure_receive`: Receives a whole ordered basket: every line is added to stock as a purchase, the linked purchase requests move to received and stock alerts that are now fine are resolved. The last purchase price of each item becomes the unit cost really paid, and the date, the tracking number and the invoice number (both optional) are written in the basket notes. The basket becomes 'delivered'. Partial deliveries are not handled here (creates a draft that takes effect after the user approves it) - `procure_spend`: Total of the baskets approved this calendar month per property, the monthly limit (if one is set) and what is left. Nothing is changed (read-only, runs immediately) - `procure_supplier_connect`: Registers a supplier (Allegro, AliExpress, Amazon Business or any shop) or updates one you already use: tier, delivery time, link, active flag. No credentials are stored here; ordering by API is added later. An existing supplier shared with other accounts cannot be changed (creates a draft that takes effect after the user approves it) - `project_contractor_save`: Add a contractor to a project, or change one (give its number from project.contractors): name, role, tax ID, contact, licence, contract reference and dates, insurance, notes. Only the fields you give are changed. The amount of the contract can be given only by the owner of the project. Contractors are never deleted from here (website only) (creates a draft that takes effect after the user approves it) - `project_contractors`: Contractors of one project (general contractor, site manager, supervisor, designer, surveyor, trades): role, contact, licence, dates on site, insurance and whether it has expired. The amount of the contract is shown only to the owner of the project (read-only, runs immediately) - `project_cost_save`: Add a cost line to a project, or change one (give its number from project.finance): name, category, phase, planned and actual amount, currency, investment or not, date. Only the fields you give are changed. Only for the owner of the project. A line that comes from a real expense cannot be changed here, and cost lines are never deleted from here (creates a draft that takes effect after the user approves it) - `project_create`: Create a project in the portfolio (mining, real estate, hospitality, IT, other). The person who creates it becomes its owner. Phases, costs and members are added with other actions. Projects are never deleted or archived from here (creates a draft that takes effect after the user approves it) - `project_document_link`: Link an existing document of the Documents module to a project, optionally to a phase and with a role. Only documents the user may see can be linked. Linking again with another phase moves the document to that phase (creates a draft that takes effect after the user approves it) - `project_document_send`: Send a document linked to a project: by e-mail from one of your mailboxes (the link, and the files if you want), in the MyBooking messenger or on WhatsApp to a member of your team (the document is shared with the person so the link opens). A sending cannot be taken back: it always needs your approval on MyBooking.ai (creates a draft that takes effect after the user approves it) - `project_document_unlink`: Remove the link between a document and a project. The document itself stays in the Documents module; nothing is deleted. Files of that document linked one by one stay linked until you unlink them (creates a draft that takes effect after the user approves it) - `project_documents`: Documents and files linked to one project, and the checklist of required documents (missing / in progress / submitted / accepted) with due dates and validity (read-only, runs immediately) - `project_expense_add`: Create a real expense (accounting) and attach it to a project, optionally in one phase. The expense is created already submitted, in the name of the signed-in user. Only for the owner of the project. No receipt photo can be sent from here: add it on the website. Approval and reimbursement of expenses are never done from here, only on the website. Maximum amount 99999999.99 (creates a draft that takes effect after the user approves it) - `project_expense_attach`: Point an existing expense of accounting to a project, optionally in one phase. The amount is never copied: it is read from the expense. Only for the owner of the project. Expenses are found with the same perimeter as on the website (creates a draft that takes effect after the user approves it) - `project_expense_detach`: Remove the link between an expense and a project (give the number of the attachment from project.finance). The expense itself is never deleted or changed. Only for the owner of the project (creates a draft that takes effect after the user approves it) - `project_expense_set_phase`: Change the phase of an expense attached to a project (give the number of the attachment from project.finance; empty phase takes it out of any phase). The expense itself is not touched. Only for the owner of the project (creates a draft that takes effect after the user approves it) - `project_file_link`: Link one file to a project, optionally to a phase. The file must belong to a document that is already linked to the project (use project.document_link first) (creates a draft that takes effect after the user approves it) - `project_file_unlink`: Remove the link between one file and a project. The file stays in the Documents module; nothing is deleted (creates a draft that takes effect after the user approves it) - `project_finance`: Costs and revenues of one project: planned, committed and actual, per phase and in total, always per currency (currencies are never added together). Only for the owner of the project (read-only, runs immediately) - `project_get`: One project by its code: description, phases with their status and dates, milestones, open obligations (deadlines), members and task counters. Amounts are shown only to the owner of the project (read-only, runs immediately) - `project_list`: Projects the user can see (as owner, creator, through their company or as a member): code, name, type, status, company, owner, currency, region and dates (read-only, runs immediately) - `project_log`: Latest events of one project (who changed what and when) and the latest site log entries (works, inspections, incidents, deliveries, decisions) (read-only, runs immediately) - `project_log_add`: Write one entry in the site log of a project: text, date (default today), type (works, inspection, incident, delivery, weather, decision, note), phase, workers on site, weather and contractor. You are the author. Entries are never changed or deleted from here: the site log must not be rewritten (creates a draft that takes effect after the user approves it) - `project_member_add`: Add a member to a project: the person sees the project and can receive tasks in it. Only people you may assign on this project can be added (same list as the website). The owner of the project is never a member. Give the user number or the username (creates a draft that takes effect after the user approves it) - `project_member_remove`: Remove a member from a project: the person no longer sees the project through it. Nothing else is deleted and the owner of the project cannot be removed. Give the user number or the username (creates a draft that takes effect after the user approves it) - `project_order_save`: Add a purchase order to a project, or change one (give its number from project.orders): title, supplier, phase, status, dates, notes. Only the fields you give are changed. The amount can be given only by the owner of the project. Orders are never deleted from here (website only): use the status cancelled (creates a draft that takes effect after the user approves it) - `project_orders`: Purchase orders of one project: title, supplier, phase, status (planned, quoted, ordered, delivered, invoiced, cancelled), dates and whether the delivery is late. The amount is shown only to the owner of the project (read-only, runs immediately) - `project_permit_save`: Add a permit or administrative decision to a project, or change one (give its number from project.permits): kind, status, authority, case reference, dates, notes. Only the fields you give are changed. Permits are never deleted from here (website only): use the status expired or refused (creates a draft that takes effect after the user approves it) - `project_permits`: Permits and administrative decisions of one project (planning decision, building permit, notification, occupancy permit): status, authority, case reference, dates and whether the validity date has passed (read-only, runs immediately) - `project_phase_set_status`: Set the status of one phase of a project (pending / active / done / skipped), optionally with its actual start and end dates. The phase is found by its code, its number or its name (see project.get) (creates a draft that takes effect after the user approves it) - `project_requirement_set`: Add a required document (checklist item) to a project, or change one (give its number from project.documents): name, phase, status (missing / in_progress / submitted / accepted), due date, validity, notes, and the document that fills it. Only the fields you give are changed. Required documents are never deleted from here (website only) (creates a draft that takes effect after the user approves it) - `project_requirements`: Checklist of the required documents of one project with their number (to change them with project.requirement_set), phase, status (missing / in_progress / submitted / accepted), due date, validity and the document that fills each one (read-only, runs immediately) - `project_revenue_save`: Add a revenue line to a project, or change one (give its number from project.finance): name, planned and actual amount, currency, date received. Only the fields you give are changed. Only for the owner of the project. A line that comes from a deal cannot be changed here, and revenue lines are never deleted from here (creates a draft that takes effect after the user approves it) - `project_task_link`: Link an existing task to a project, so that it shows in the tasks of the project. The task itself is not changed. Use task.create with project_code to create a new task already linked (creates a draft that takes effect after the user approves it) - `project_task_unlink`: Remove the link between a task and a project. The task itself is never deleted or changed. A task born from a deadline of the project stays with the project and cannot be unlinked (creates a draft that takes effect after the user approves it) - `project_tasks`: Tasks linked to one project (added by hand or born from a deadline), with assignee, status and planned dates, plus counters of open, overdue and finished tasks (read-only, runs immediately) - `project_update`: Change the details of a project you can see: name, status (idea / active / on hold / closed / abandoned), company, currency, place, dates, description. Only the fields you give are changed. The code and the owner stay as they are. Projects are never deleted or archived from here (creates a draft that takes effect after the user approves it) - `project_utilities`: Utility connections of one project (water, sewage, storm water, electricity, gas, heat, telecom): operator, status, dates, validity of the conditions (expired or expiring within 30 days), capacity and distance. The costs are shown only to the owner of the project (read-only, runs immediately) - `project_utility_save`: Add a utility connection to a project, or change one (give its number from project.utilities): kind, operator, status, dates, capacity, distance, reference, notes. Only the fields you give are changed. The costs can be given only by the owner of the project. Connections are never deleted from here (website only): use the status refused or none (creates a draft that takes effect after the user approves it) - `property_create_draft`: Create a new property for the user with its rooms. Creates the MyBooking sales channel automatically. The platform fee for adding a property is charged from the user's token wallet (same as the web form). Publication to other channels is a separate action (creates a draft that takes effect after the user approves it; paid from the user's token wallet) - `property_delete`: Permanently delete one of the user's properties together with its rooms, sales channel and settings. Refused if the property or any of its rooms has a reservation (past or future). Free of charge. Always needs the user's approval on the card (creates a draft that takes effect after the user approves it) - `property_extras_set`: Set what a property sells besides the room and its rules, in the property's currency: the name guests see on its channels, paid extras offered when booking (extra bed, baby cot, breakfast ...; once set, only the property's own extras are offered), house rules text, check-in / check-out times on every channel, the number of extra beds and the tourist tax per adult and night. Damage charges and laundry price lists belong in house_rules (creates a draft that takes effect after the user approves it) - `property_get`: One of the user's properties: address, time zone and the list of rooms with their ids, beds, bathroom, size and active flag. Use it before property_update, room_update, room_delete or property_delete (read-only, runs immediately) - `property_list`: List the properties (hotels, apartments, buildings) the user owns or manages as an employee (manager / receptionist), with room counts and the user's role in each (read-only, runs immediately) - `property_update`: Change the address, time zone, coordinates or rooms-per-cleaner of one of the user's properties. Only the fields you pass are changed; validated like the web edit form. Free of charge (creates a draft that takes effect after the user approves it) - `rates_confirm_chat`: Second step ONLY after rates.preview_chat and a NEW user message containing its exact confirmation phrase. Never use the initial price request as confirmation. Applies only the frozen preview, checks owner, agent, expiry, access, limits and current price/configuration revision. Changed data requires a new preview and new confirmation. Repeat calls return the original batch without applying twice. No payment or admin approval changes (creates a draft that takes effect after the user approves it) - `rates_get`: Prices and availability MyBooking sends to each sales channel (Booking.com via Channex ...), per offer and date: price, currency, rooms to sell, closed flag and sync status, plus the connection's price floor rules. Read this before proposing price changes (read-only, runs immediately) - `rates_preview_chat`: Preferred first step for explicit dated price changes. No prices are changed. Return the full changes, effects and confirmation phrase. Show all offers, dates, prices and warnings to the user, then STOP and ask for the exact phrase in a NEW user message. Only after that message call rates.confirm_chat. A preview expires in 15 minutes. For recommendations, permanent rules or floor exceptions use rates.set (read-only, runs immediately) - `rates_recommend`: Ask the pricing assistant built into MyBooking (the /pricing-ai/ model, with your offers, prices and sales history) to propose prices. Paid from the MyBooking token wallet — the approval card shows the estimate. Returns a task_id: read the result with rates.recommendation (30-120 s), then apply it with rates.set(from_recommendation=task_id), all or only_offers (creates a draft that takes effect after the user approves it) - `rates_recommendation`: Result of rates.recommend: phase (planning / dryrun / done / error), summary, per-offer proposals (offer id, name, current, proposed, rationale) or the plan actions in plain words, errors and the real cost. Apply it with rates.set(from_recommendation=task_id) (read-only, runs immediately) - `rates_set`: Change prices of the user's offers, through the same engine as the MyBooking pricing assistant (/pricing-ai/): explicit prices per offer and night range, or the plan of a rates.recommend recommendation (from_recommendation). The approval card shows the effect night by night, channel floors and the safety check (> 10 offers or below 60% of the ADR needs confirm_count = number of offers). After approval the prices are saved as one batch (undo with rates.undo or on /pricing-ai/) and pushed to the channels. From a recommendation only per-offer rules are applied; its property-wide rules (permanent) only with include_property_rules=true (creates a draft that takes effect after the user approves it) - `rates_undo`: Undo one applied price batch (rates.set or the /pricing-ai/ screen): created rules are switched off, manual prices removed, changed rows get their old values back, then the channels are updated. Same as 'Undo batch' on /pricing-ai/ (creates a draft that takes effect after the user approves it) - `realestate_create_draft`: Create a real-estate listing for sale or rent in the user's brokerage. Saved as a draft; use realestate.publish to make it public. Requires an active agent profile (the tool explains how to set one up if missing) (creates a draft that takes effect after the user approves it) - `realestate_my_listings`: List the real-estate listings of the user's brokerage (requires an active agent profile) (read-only, runs immediately) - `realestate_publish`: Publish a draft listing on the MyBooking marketplace (status active). Accounts created via AI must have approved identity verification (KYC) first (creates a draft that takes effect after the user approves it) - `realestate_search`: Search public, active real-estate listings on MyBooking (sale, long/short rent, lease, auction). No login needed. Returns listing slugs/references and public links (read-only, runs immediately) - `realestate_unpublish`: Withdraw one of the brokerage's listings from the MyBooking marketplace (status withdrawn). The listing stays in the broker dashboard and can be published again with realestate.publish (creates a draft that takes effect after the user approves it) - `reservation_charge_card`: Charge the saved (tokenized, Booking.com) cards of up to 50 reservations with one approval card, the same way as the 'Charge card' button on the reservation screen: Stripe charge on the company's own connected account, reservation marked 'paid card', guest invoice when required. The card lists per reservation the amount (total minus what was already charged), currency, company and why a reservation is left out (cancelled, already paid, no saved card, company payments not on Stripe ...). Nothing is charged until the owner approves the card on MyBooking.ai - never automatically. Give the user the approval link (creates a draft that takes effect after the user approves it) - `reservation_get`: One reservation by channel number (every room of a multi-room booking: -0, -1 ...) or internal id: everything reservation.list returns plus cancellation policy, commission, extra beds, fees, invoice request and check-in progress. Guest contact data, card data and access codes are never returned (read-only, runs immediately) - `reservation_list`: List reservations of the user's properties like the Daily Report screen: guests staying in a date range, arrivals, departures or bookings made. Each item: canonical status (confirmed = a room is assigned, cancelled, unknown), raw channel status, payment hint, dates, nights, guests, amounts, offer and listing, building, assigned physical rooms, flags (no_room_assigned, zero_amount). Guest data is masked to initials. Plus a summary with counts (read-only, runs immediately) - `restaurant_list`: Read-only. The user's restaurants (id, property, currency, tables, menus). With restaurant_id: every active dish with its id, price and options - what restaurant_order needs (read-only, runs immediately) - `restaurant_menu_add`: Add menus (categories, dishes with prices, paid options such as extra toppings linked to the dishes) to one of the user's restaurants, in the restaurant's currency. replace=true switches off an existing menu with the same name and creates it anew (creates a draft that takes effect after the user approves it) - `restaurant_order`: Place an order in one of the user's restaurants and send it to the kitchen: dine_in (table label), takeout (pickup time) or room_service (room number). Dishes by id or exact name from restaurant_list, with options. Room service is charged to the room by default: the amount is added to the additional services of the guest's current stay and settled at check-out (creates a draft that takes effect after the user approves it) - `restaurant_setup`: Create a restaurant (or bar / café) of one of the user's properties: tables, one kitchen station, opening hours and its menus - categories, dishes with prices and paid options such as extra toppings - in the property's currency. Guests can then be served at a table, take away or order to their room (restaurant_order). Add more menus later with restaurant_menu_add (creates a draft that takes effect after the user approves it) - `room_delete`: Permanently delete one room of the user's property. Refused if the room has any reservation (past or future) - then use room_update with is_active=false instead. Free of charge. Always needs the user's approval on the card (creates a draft that takes effect after the user approves it) - `room_update`: Change one room of the user's property: name/number, beds, private bathroom, size, description, or is_active (False hides it from sale and keeps its history). Only the fields you pass are changed. Free of charge (creates a draft that takes effect after the user approves it) - `rooms_assign_apply`: Apply the plan shown by rooms.assign_preview (same parameters + its fingerprint): rooms are moved or assigned, every move is logged with a run id, extra beds follow the guest and the new availability is sent to the channels. Refused if the bookings changed since the preview (run the preview again). A re-plan (guests change room) is applied by the owner or a manager only; mode 'unassigned' (only reservations without a room) also by the reception. Undo with rooms.assign_undo(run_id) (creates a draft that takes effect after the user approves it) - `rooms_assign_default_get`: The owner's default room assignment model: order rule, room rule, and whether new reservations are placed with it when they arrive. 'saved' is false when the owner never saved one (today's rules apply) (read-only, runs immediately) - `rooms_assign_default_set`: Save the owner's default room assignment model (order rule x room rule). It is preselected on the room assignment screen; with auto_assign=true its room rule places every new reservation in its own building when it arrives. Owner or manager only (creates a draft that takes effect after the user approves it) - `rooms_assign_preview`: Compute, without writing anything, how rooms would be assigned to the user's reservations with a chosen model: order rule (who gets a room first) x room rule (which room). Mode 'unassigned' places only reservations without a room; 'replan' recomputes future assignments of the window (locked: room frozen by hand, checked in, access codes sent, billing company locked, arrival today or tomorrow). Returns a summary (moves, new, without room, locked, dead nights before and after), one line per reservation (current room -> proposed room, reason) and a 'fingerprint' to pass to rooms.assign_apply. Guest names masked to initials (read-only, runs immediately) - `rooms_assign_undo`: Put back the room moves of one run of rooms.assign_apply (run_id), when the previous room is still free; a reservation moved again since is left as it is. New assignments of the run are kept. Owner or manager only (creates a draft that takes effect after the user approves it) - `rooms_company_get`: Read the current and scheduled companies of selected owned rooms, their full history and a revision for rooms_company_set. Room IDs come from property_get (read-only, runs immediately) - `rooms_company_set`: Assign an accessible company to 1-100 OWNED rooms from a local date, with history. Call rooms_company_get first and pass its revision. Today applies now; future dates start at local midnight. Existing reservation billing companies and invoices are not rewritten. Other rooms and property/channel company links are unchanged. Free of charge (creates a draft that takes effect after the user approves it) - `rooms_occupancy`: For one night and each of the user's buildings: physical rooms in use (overnight booking mode, active), rooms occupied by a non-cancelled reservation (RoomBooking), free room numbers, and active reservations of that building that have no room assigned yet. Use it before accepting, moving or pricing reservations: the real capacity is physical rooms, offers share them (read-only, runs immediately) - `services_catalog`: Read the current MyBooking service catalogue and a local-currency estimate based on your country. Hotel 19 USD up to 50 rooms, apartment 3 USD with 9 USD account minimum, phone line 5 USD. Additional same-portal connection 2 USD/month; first connection to each portal included. 0% MyBooking reservation commission. Telephone AI requires a separate usage quote. No charge (read-only, runs immediately) - `services_subscribe`: Approve a recurring hospitality subscription for your selected physical hotels and apartments. One 14-day trial per account, then the displayed monthly USD amount from the selected company wallet. No phone number or AI service is activated. Existing channel fee months are preserved without overlap. The accepted total includes 2 USD/month per additional same-portal connection. Connections exceeding the accepted allowance require a new quote. No reservation commission (creates a draft that takes effect after the user approves it) - `services_update_extra_channels`: Review and approve the total number of additional same-portal connections under an existing v2 hospitality subscription. Shows the new monthly USD amount and effective billing date. No immediate debit; existing periods stay unchanged. The trial, base price and company payer stay unchanged. Earlier v1 contracts keep their accepted terms (creates a draft that takes effect after the user approves it) - `shield_claims_extract`: AI reads the ingested mention and splits it into atomic claims about the profile, each classified (fact / opinion / insinuation / accusation / quote) and scored. Replaces earlier unverified claims of the same mention. Next: shield.claims_verify (creates a draft that takes effect after the user approves it) - `shield_claims_verify`: For each claim: hybrid search (vector + full text) over every document the signed-in user can see (own, shared with them, their companies), AI judgement, evidence links with verbatim quotes and page. Findings are created NOT publishable; mark them with shield.finding_publishable before they can be quoted in a public response (creates a draft that takes effect after the user approves it) - `shield_defense_plan`: AI analysis of every publication about the profile and of its checked claims: which court actions to take (pre-court demand, civil personal-rights suit, private prosecution for defamation, platform report, press correction) with deadlines, evidence strength and risks, and whether / where to answer in the media from the owner's own channels, with ready texts. Runs in the background (1-3 min); read it on the Shield page. Nothing is filed, sent or published. Next: shield.legal_draft for a court document (creates a draft that takes effect after the user approves it) - `shield_finding_publishable`: The owner decides which document findings may be quoted in a public response. Only the profile principal (or shield_legal) can do this — a shared document stays the sharer's (creates a draft that takes effect after the user approves it) - `shield_legal_draft`: Drafts the document of one legal action of the defense plan (pre-court demand, civil suit, private indictment, platform report, press correction) and saves it as a DRAFT in the owner's Documents. Runs in the background (1-3 min). Nothing is filed or sent; the owner decides whether to share the document with a lawyer, and with which one (creates a draft that takes effect after the user approves it) - `shield_mention_ingest`: Registers a publication about the profile: fetches the article text (or YouTube transcript) from the URL, or takes the pasted text/transcript (required for Facebook). Creates the monitored source, the versioned mention with content hash and an incident with an audit trail. Next: shield.claims_extract (creates a draft that takes effect after the user approves it) - `shield_pr_asset_save`: Save an owner's PR draft, sources and target date. Live records describe material already published elsewhere; this action never publishes or sends anything (creates a draft that takes effect after the user approves it) - `shield_pr_status`: Read private PR drafts, source links, target dates and recorded publication URLs (read-only, runs immediately) - `shield_profile_list`: Profiles (person / company / brand) the signed-in user may defend with Shield Persona: own profile as principal, plus all profiles for shield_admin / shield_legal roles (read-only, runs immediately) - `shield_response_approve`: Owner approval of a drafted response (card). Counsel gate 'light': a draft flagged accusation / needs_counsel / touches litigation needs a shield_legal user's approval — or override_counsel=true by the profile principal, which is logged. Approved text is final; sending/publishing is a separate action (lot 2) (creates a draft that takes effect after the user approves it) - `shield_response_draft`: Drafts three responses from the verified claims: formal press-law correction request, conciliatory update request, and a short public comment. Quotes only publishable findings; lists the non-publishable ones separately so the owner can release them. Flags the draft for counsel (light gate) when a claim is an accusation, needs counsel, or touches an active matter. Nothing is sent — next: shield.response_approve (creates a draft that takes effect after the user approves it) - `shield_status`: Every ingested mention of the profile with its claims, verification status, drafts and what still waits for the owner (publishable findings, approvals, counsel) (read-only, runs immediately) - `shop_category_save`: Create, rename, reorder or remove a category of the shop. Without slug a new category is created from the name; with the slug of an existing category only the fields given are changed. A category that still has products cannot be removed: move the products first. The categories and their slugs are listed by shop_design (creates a draft that takes effect after the user approves it) - `shop_design`: Read-only. The look of the shop (colours, font, products per row, banner, footer), its free pages (about us, terms, privacy, withdrawal, delivery, FAQ) with their address, its categories, and the values that design_set and page_save accept (read-only, runs immediately) - `shop_design_set`: Change the look of the shop; only the fields given are changed: colours (#rrggbb), font, products per row, banner title and subtitle, footer text and social pages. The banner picture is sent with shop_image_save. Read the current values with shop_design (creates a draft that takes effect after the user approves it) - `shop_domain_check`: Check the own domain of the shop: does the DNS record point to the platform, and does the secure connection show the shop. Moves the state of the domain: pending (waiting for DNS), verified (DNS ok), active (https works). Safe to repeat (creates a draft that takes effect after the user approves it) - `shop_domain_set`: Register the own domain of the shop (for example sklep.example.pl), or remove it with an empty domain. Nothing is visible yet: the answer gives the DNS record to create at the domain provider; then call shop_domain_check. The secure connection (https certificate) of the domain is installed by the platform administrator (creates a draft that takes effect after the user approves it) - `shop_image_save`: Send a picture of the shop through the assistant (base64, JPEG, PNG, WEBP or GIF, 8 MB at most): target logo (shown next to the shop name) or hero (banner of the home page) replaces the current one; target product (with product_id from shop_products) adds a photo, 8 photos at most. To remove: clear=true for the logo or banner, remove_photo_id for a product photo. The file must be a picture the owner owns the rights to. Returns the current picture(s) (creates a draft that takes effect after the user approves it) - `shop_order_status_set`: Change the status of one order: new -> preparing -> ready (pickup) or out_for_delivery (delivery) -> completed; an order can be cancelled until it is completed. Every change is recorded in the history of the order. Cancelling a PAID order refunds the customer automatically in Stripe (the platform commission is returned too), puts the units back in stock and tells the customer by e-mail. A paid order that was already cancelled can be cancelled again to refund it (creates a draft that takes effect after the user approves it) - `shop_orders_list`: Read-only. The orders of the user's shop with customer, items, total, payment, pickup or delivery address and status. Without a status it returns the orders still to handle (new, preparing, ready, out for delivery) (read-only, runs immediately) - `shop_page_save`: Create or change a free page of the shop: about us, terms (regulamin), privacy policy, right of withdrawal, delivery and payment, questions and answers. Without slug a new page is created from the title; with the slug of an existing page only the fields given are changed. A page stays hidden until is_published is true. Legal pages must be checked by a lawyer first (creates a draft that takes effect after the user approves it) - `shop_product_add`: Add a product to the user's online shop: name, gross price, VAT rate, size, category and, for food, the information the law requires (ingredients, allergens, net quantity, storage). Stock is counted per product. The product is hidden until is_published is set and, for food, until the food information is complete. Creates the matching entry of the invoice catalogue. Photos are added on the owner screen (creates a draft that takes effect after the user approves it) - `shop_product_update`: Change one product of the shop (number from shop_products): price, VAT, texts, food information, stock (stock_qty sets it, stock_add adds or removes units) and visibility. Only the fields you give are changed. Nothing is deleted: set is_published=false to hide a product (creates a draft that takes effect after the user approves it) - `shop_products`: Read-only. The shop(s) of the user and their products: number, price, VAT, stock, whether it is visible and what food information is still missing. Use it to find the number of a product (read-only, runs immediately) - `shop_publish`: Open the shop to customers, or close it again. To open it the shop needs at least one visible product, a way to receive the order, and the Stripe account of the company connected and ready. Food products must carry the legal information. The first opening starts the 90 days without commission (creates a draft that takes effect after the user approves it) - `shop_setup`: Create the online shop of one of the user's companies, or update it (only the fields given are changed). Name, address of the shop (slug), pickup point, own delivery with zones matched by postal-code prefix and a fee, minimum order, contact. Payments go to the Stripe account of the company. The shop stays private until shop_publish (creates a draft that takes effect after the user approves it) - `social_brandkit_create`: Creates the Brand Kit (public identity of a brand: name, descriptions, contact, address, logo, photos, suggested account names) for one or several of the user's properties and fills it automatically from MyBooking data; nothing already filled is overwritten. If a property already belongs to a Brand Kit, that kit is reused. One approval card. The result lists what is still missing; social accounts themselves are created later by the owner (platforms forbid automatic signup) (creates a draft that takes effect after the user approves it) - `social_brandkit_list`: Read-only. The user's Brand Kits (one brand per group of properties): brand name, status (draft, needs_review, confirmed), the properties it covers, the required and recommended information still missing, the suggested account name per platform and the signup progress of each platform (todo, in_progress, done, skipped, with the profile link once done). With property_id: only the Brand Kit of that property (read-only, runs immediately) - `social_brandkit_update`: Changes a Brand Kit (see social_brandkit_list): brand name, tagline, type of business, main language, short and long descriptions, public email, phone, website, booking page, address, and the preferred account name per platform. Only the fields given are changed (an empty string clears a field), with the same checks as the Brand Kit screen. confirm=true also confirms the kit when nothing required is missing; the signup cards (social_signup_cards) need a confirmed kit. The logo and cover image are added in the Brand Kit screen (page_url). One approval card (creates a draft that takes effect after the user approves it) - `social_signup_cards`: Read-only. For a confirmed Brand Kit: one card per platform (Google Business Profile, Facebook, Instagram, Threads, TikTok, LinkedIn, YouTube, X, Pinterest) with the official signup link, the values to copy into the platform's form (already cut to its limits), the suggested account name with fallbacks, a short note and the progress (todo, in_progress, done, skipped). The owner creates the accounts on each platform (platforms forbid automatic signup). If the kit is not confirmed yet, the answer lists what is missing (read-only, runs immediately) - `spa_setup`: Create the spa / massage (or beauty) business of one of the user's properties in the services module, with its services: duration and price in the property's currency. Run again to add services: the property's spa is reused and services with the same name are skipped. Staff and working hours are set on the services page (creates a draft that takes effect after the user approves it) - `stays_book`: Books one offer from stays.search for the signed-in guest. The booking is held, not confirmed: MyBooking.ai e-mails a secure online payment link, the booking is confirmed when paid and released automatically if unpaid at the hold deadline. The assistant never takes payment. accept_terms=true records that the guest agreed to the total, the host's booking terms and the payment rules from stays.quote. Changes and cancellations are not available through the assistant (creates a draft that takes effect after the user approves it) - `stays_quote`: Full price breakdown of one offer for given dates (stay, booking fee, total), the company the guest books with and its booking terms, the payment rules (how long an unpaid booking is held) and how changes are handled. These are the conditions the guest accepts when booking with stays.book (read-only, runs immediately) - `stays_search`: Search rooms and apartments that can be booked on MyBooking.ai through AI assistants, for a city, dates and number of guests. Returns available offers with the total price for the whole stay (the same price as on MyBooking.ai, booking fee included), cheapest first. Each offer_id is used with stays.quote and stays.book (read-only, runs immediately) - `stripe_connect`: Start or resume Stripe Connect for an owned company. Explicit mode required. Preview shows platform commission and data sent. Express creates/reuses an account and returns Stripe hosted onboarding; Standard returns the authenticated MyBooking OAuth start link. User completes verification and accepts Stripe terms themselves. Never replaces a real linked account, charges guests, releases payouts or enables payments. For EVERY owner, immediately present onboarding_url as a clickable MyBooking link to add bank details and accept Stripe terms. Also present company_public_url or company_website_manage_url with its missing/draft/published status. Follow assistant_guidance. After onboarding call stripe_status then stripe_enable (creates a draft that takes effect after the user approves it) - `stripe_enable`: Select Stripe as payment provider only after live charges and payouts are enabled and platform risk controls permit it. Rechecks at approval. Does not change room assignments, existing invoices, risk decisions, limits or payout schedules (creates a draft that takes effect after the user approves it) - `stripe_status`: Read live Stripe charges/payouts status and missing verification field names for an owned company. No changes, no payment or payout. API failure is not readiness. For every owner, show the returned MyBooking onboarding link if setup is incomplete and remind them of company_public_url or company_website_manage_url; follow assistant_guidance (read-only, runs immediately) - `task_create`: Create a task (cleaning, reception, maintenance...) on a property or a room, optionally assigned to a team member and planned for a time. The task starts as new: its status is driven by the work sessions, never set from here (creates a draft that takes effect after the user approves it) - `task_external_ref_add`: Record how an existing task is called elsewhere: the title or link of a Claude / ChatGPT conversation, a Trello card, a work code. task.list with q finds the task by these names (creates a draft that takes effect after the user approves it) - `task_list`: Tasks of the user's properties: cleaning, reception, maintenance and the rest, with who they are assigned to and when they are planned. Finished tasks are left out unless asked for (read-only, runs immediately) - `tasks_company_time`: Hours of the owner's team (task timer sessions) split between the owner's companies for a month or date range, per company and per person, with the basis of the split: the room of the task; for reception, phone calls by talk time to the guest's booking and the rest by payments marked during the session (estimated from the day's arrivals before 21.10.2026); otherwise by the number of rooms of each company. Read-only (read-only, runs immediately) - `tasks_company_time_rebuild`: Recompute the company split of the team's task sessions from a date (default 2026-10-01) in the background - only derived figures change, no task or session is edited. Takes a few minutes; then read the result with tasks_company_time (creates a draft that takes effect after the user approves it) - `team_ai_invite`: Send employees of the signed-in owner an e-mail, in each employee's language, with a link to the step-by-step page that connects MyBooking to their AI assistant (ChatGPT, Claude, Gemini, Copilot...). Also returns a link the owner can share by WhatsApp or SMS. Name the people and get the owner's OK in the chat before calling. Limit: 50 invitations a day (creates a draft that takes effect after the user approves it) - `team_assign_properties`: Add, remove or set the roles of an employee of the signed-in owner in the owner's own properties (receptionist, manager, cleaner, maintenance and the other staff roles). Manager and receptionist give the employee access to that property on screens and in the connector (managers and receptionists can change bookings, prices and the property; only the owner deletes). Show the before/after to the user and get their OK in the chat before calling. Undo: the same call with mode=remove, or mode=set with the previous roles (creates a draft that takes effect after the user approves it) - `team_assignments`: For the signed-in owner: his properties (id + address) and, per employee of his team, the properties and roles they are assigned to (receptionists, managers, cleaners and the other staff roles). Use the property ids with team_assign_properties (read-only, runs immediately) - `team_collaboration_delete`: Only the team creator can delete it. Members, pending invitations or shared resources block deletion (creates a draft that takes effect after the user approves it) - `team_collaboration_inbox`: Read applications explicitly shared with the signed-in account. CV links recheck team permissions when opened (read-only, runs immediately) - `team_collaboration_invite`: Invite an exact username. Send an internal message, push and email for a pending invitation. Repeating retries only unsent channels. An accepted member is not notified (creates a draft that takes effect after the user approves it) - `team_collaboration_list`: List your teams, invitations, enabled modules and explicitly shared offers. Pending invitees see only their own invitation (read-only, runs immediately) - `team_collaboration_manage`: Create a team, accept or decline your own invitation (leave), leave, remove a member, configure both modules, or share/unshare an offer you own. Disabling a module removes its shares (creates a draft that takes effect after the user approves it) - `team_employee_create`: Create a MyBooking account for a new employee of the signed-in owner: linked to the owner's team, with the owner's companies and roles. The employee receives a welcome e-mail in their language with a link to set their own password; the owner never sets or sees it. Before calling, show the user the name, e-mail, companies and roles and get their OK in the chat. If the e-mail already has an account, it cannot be created again (creates a draft that takes effect after the user approves it) - `team_employee_deactivate`: Deactivate an employee of the signed-in owner: they can no longer sign in and their connected AI assistants are disconnected. Nothing is deleted; team_employee_reactivate undoes it. Get the user's OK in the chat before calling (creates a draft that takes effect after the user approves it) - `team_employee_link_confirm`: Finish an invitation sent with team_employee_link_existing: with the code the person gave (their consent), their existing account joins the signed-in owner's team as an employee with the companies and roles chosen in the invitation. Wrong codes are limited to 5 tries (creates a draft that takes effect after the user approves it) - `team_employee_link_existing`: Invite a person who already has a MyBooking account to join the signed-in owner's team as an employee. Nothing changes yet: the person receives an e-mail with a 6-digit code (valid 48 hours) and joins only if they give that code to the owner; then call team_employee_link_confirm. Owner and administrator accounts, and accounts already in another owner's team, cannot be added (creates a draft that takes effect after the user approves it) - `team_employee_list`: List the owner's employees with their companies, roles and status, plus the owner's own companies and the available roles (the only values team_employee_create / team_employee_update accept) (read-only, runs immediately) - `team_employee_reactivate`: Reactivate a deactivated employee of the signed-in owner so they can sign in again (creates a draft that takes effect after the user approves it) - `team_employee_resend_welcome`: Send the welcome e-mail with a fresh set-password link to an employee of the signed-in owner (e.g. the link expired or the e-mail got lost) (creates a draft that takes effect after the user approves it) - `team_employee_update`: Change an employee of the signed-in owner: name, phone, language, companies (the owner's own only) or roles. Lists replace the current ones. The e-mail can be corrected only while the employee has never signed in (the welcome e-mail is then sent again). Show the change to the user and get their OK in the chat before calling (creates a draft that takes effect after the user approves it) - `team_permissions`: Permissions of the user's employees: job roles, extra permissions, the Documents rights that every employee has by default, and the number of effective permissions. Give one employee (username or id) for the full list of his effective permissions. Also lists the job roles (id, name, number of permissions) to use with team.permissions_set. An owner sees only his own employees; an employee cannot use it (read-only, runs immediately) - `team_permissions_set`: Change what one of the user's employees may do: replace his job roles (each job role carries a set of permissions, e.g. 'other' = tasks, documents, inventory, availability, messages) and/or add or remove extra permissions on top. Every employee always keeps the Documents permissions (upload, edit and share his own documents). Extra permissions can only be ones that job roles use. An owner changes only his own employees. Takes effect at once; the result shows the state before and after, so a change is undone by calling again with the previous values (creates a draft that takes effect after the user approves it) - `team_timesheet_audit`: Audit of the team's task time (the start/stop sessions of the MyBooking task timer) for a month or a date range, with the same rights as the Your Ongoing Tasks and Payment Summary screens: an owner sees the team, a manager the related team, an employee only themself; rates, amounts and invoices only for owners and the accountant / HR role. Flags sessions still running for over 12 h (stop forgotten), longer than 4 h, with at least 30 min between 22:00 and 06:00 local time, more than 3x the person's usual time for the same task and 60 min over it, tasks of one person overlapping in time, sessions on two invoices, days over 12 h, and invoices whose amount differs from hours x rate. Each check can be changed with 'thresholds'. Local time uses the time zone of the person's device, then their profile, then the property of the task, then the business (the time zone of the owner's properties, also used to cut the month). Activity in MyBooking is given only as totals (number of signals, longest gap), never the pages visited; work outside the system leaves no signals. Per person totals, flagged sessions with the amount at stake, long days and invoice checks with a verdict (read-only, runs immediately) - `team_timesheet_sessions`: Every task timer session of one team member in a month or date range (max 62 days): task, local start and end, minutes, the person's usual minutes for that task, the same flags as team_timesheet_audit, the invoice the session is on and, for sessions of 30 min or more, activity in MyBooking as totals only (number of signals, longest gap, last signal). Same rights as team_timesheet_audit; amounts only for owners and the accountant / HR role (read-only, runs immediately) - `tutor_child_add`: Add a child profile for the AI tutor under the user's account (first name, grade 1-8 primary, 9-13 secondary (12 = final liceum, 13 = final technikum), tutor voice, language). Confirm with the user in the chat first. Free of charge (creates a draft that takes effect after the user approves it) - `tutor_child_delete`: Permanently delete a child profile together with all its lessons, results and transcripts. Refused while a lesson is in progress. Free of charge. Always needs approval on the card (creates a draft that takes effect after the user approves it) - `tutor_child_link`: Permanent link the parent sends to the child: it opens only this child's tutor screen on any device, without sign-in, until the parent turns it off. The child picks the subject and topic; lessons are paid from the parent's wallet, limited to the child's daily minutes; the parent gets an e-mail after each lesson. Returns the existing link unless regenerate=true. Also returns whatsapp_url: a wa.me link with a ready message; the parent opens it and sends it from their own WhatsApp (with phone it opens the chat with that number). Give the user url and whatsapp_url as copyable text. Confirm with the user in the chat first. Free of charge (creates a draft that takes effect after the user approves it) - `tutor_child_link_revoke`: Turn off the child's tutor link at once (e.g. a lost phone). Lessons and reports stay. Confirm with the user in the chat first. Free of charge (creates a draft that takes effect after the user approves it) - `tutor_child_update`: Change a child profile: first name, grade, tutor voice, language or the daily limit of tutor minutes. Only the fields you pass are changed. Confirm with the user in the chat first. Free of charge (creates a draft that takes effect after the user approves it) - `tutor_children`: The child profiles under the user's account for the AI tutor (MyBooking Korepetytor AI): id, first name, grade 1-8 primary, 9-13 secondary (12 = final liceum, 13 = final technikum), language, tutor voice and number of lessons. Use the ids with tutor_child_update, tutor_child_delete, tutor_lessons and tutor_lesson_link (read-only, runs immediately) - `tutor_lesson_delete`: Permanently delete one lesson with its results and text transcript. Refused while the lesson is in progress. Free of charge. Always needs approval on the card (creates a draft that takes effect after the user approves it) - `tutor_lesson_link`: Link that opens the AI-tutor lesson screen with the child, subject and topic already filled in. The voice lesson itself starts on the child's device (it needs a microphone), so give the user this link to open there (read-only, runs immediately) - `tutor_lesson_report`: Full report of one lesson: tutor's summary for the parent, every question/task with the expected answer, the child's answer, verdict and attempts, and the text transcript (read-only, runs immediately) - `tutor_lessons`: The user's AI-tutor lessons, newest first: child, subject, topic, status, correct answers out of graded ones, cost and the report link. Optional child_id filter (read-only, runs immediately) - `utility_agreement_set`: Create or change an agreement: who the user pays for utilities (no invoices), the account, the units (properties) it covers, the water rate, monthly rubbish and administration amounts and what was already paid before (water readings up to a day, fees up to a month). Opens a card (creates a draft that takes effect after the user approves it) - `utility_agreements`: Agreements under which the user pays someone for utilities by meter readings without invoices (payee, account, units, rates, paid until) with their latest settlements. Read-only (read-only, runs immediately) - `utility_match`: Analyses where a meter reading belongs: serial number, address hint, continuity with earlier readings (never lower than the previous one, consumption similar to earlier periods) and the unit type. Returns ranked candidates with reasons and decision=unique|ask|none. Ask the user only when decision is 'ask' (use the returned question). Read-only (read-only, runs immediately) - `utility_meter_create`: Register a physical meter (serial number, utility type, unit) in one of the user's properties. By default the unit's earlier readings without a meter are attached to it, so consumption continues from them. Refused if the serial number is already registered. Free of charge (creates a draft that takes effect after the user approves it) - `utility_meters`: Meters of the user's properties (serial number, utility type, unit, status, last reading) and the reading series that have no meter yet, with the last value, the usual daily consumption and anomalies such as negative consumption. Use it before utility_reading_add (read-only, runs immediately) - `utility_photo_link`: A one-time link (valid 72 h) the user opens on the phone to take or choose the photo of the meter; the photo is stored with the reading and read by AI as a cross-check. Use it after utility_reading_add when the user sent the photo in the chat: read the digits from the chat photo yourself, add the reading, then give this link so the photo itself is kept (read-only, runs immediately) - `utility_read_photo`: Reads the index and serial number from a meter photo already in Documents, then runs utility_match on the value. Nothing is saved. Uses AI tokens of the owner (read-only, runs immediately) - `utility_reading_add`: Add a utility meter reading (index with the meter's full precision, date, optional photo). Consumption is computed from the previous reading of the same meter. The card shows the previous reading, the consumption, the estimated cost and warnings (lower than before, unusual consumption). Refused for a duplicate date or a future date. Use utility_match first when unsure which unit it is. Free of charge, except the AI cross-check of a photo (creates a draft that takes effect after the user approves it) - `utility_reading_update`: Correct the index or the date of an existing meter reading. The consumption of this reading and of the next one in the same series is recomputed. Refused when this reading or the next one is already recharged to a tenant (index and dates are locked). Always needs the user's approval on the card. Free of charge (creates a draft that takes effect after the user approves it) - `utility_settlement_cancel`: Cancel a settlement that is not in a live transfer (cancel its payment batch first); its readings and months can be settled again (creates a draft that takes effect after the user approves it) - `utility_settlement_create`: Save the settlement shown by utility_settlement_preview (one row = one transfer) after the user's OK in the chat. No money moves: then call payments_prepare with source='manual' and ids = the settlement ids; the owner releases the transfer on the Touch ID card (creates a draft that takes effect after the user approves it) - `utility_settlement_message`: The message for the payee of saved settlements (per unit readings, months, total) and a WhatsApp link (wa.me) with the text filled in; the user sends it from the phone (read-only, runs immediately) - `utility_settlement_preview`: How much is due under an agreement: water from the meter readings not settled yet (per unit: previous and new index, m3, PLN), rubbish and administration for the months not settled yet, the transfer titles in the usual format and the message for the payee. Writes nothing (read-only, runs immediately) - `vault_list`: Read-only account names, access readiness and links in the native MyBooking vault. Only explicitly granted accounts. Never returns logins, passwords, tokens or instructions (read-only, runs immediately) - `vault_task_access`: Read-only readiness of the assignee for the task's required external accounts. Task assignment never grants a password. Restricted account details remain hidden (read-only, runs immediately) - `voip_call`: Place an outbound AI phone call to a person from the phone book (contact, team member) or to a phone number, and pass them a message, then record their answer. The call is made by the AI assistant from the owner's own VoIP line, in the contact's language, and it is announced as recorded. Always needs approval (creates a draft that takes effect after the user approves it) - `voip_fallback_set`: Set who carries the fallback mobile of a VoIP number - by default, or only during one schedule rule (e.g. night shift). Calls forwarded to that mobile then count as that person's work. Optional backfill_since assigns earlier fallback calls that have no person yet. Confirm the change with the user in the chat before calling (creates a draft that takes effect after the user approves it) - `voip_fallback_status`: For the owner's VoIP numbers: the fallback mobile (calls nobody answers in the browser go there), who carries it by default and per schedule rule, who has it right now, and how many of this month's fallback calls already have a person assigned. Read-only (read-only, runs immediately) - `voip_number_ai_set`: Set the AI receptionist mode of one of the owner's VoIP numbers: off (only people answer), first (AI answers first) or fallback (humans first, AI when nobody answers). Same setting as the number screen. Confirm the change with the user in the chat before calling (creates a draft that takes effect after the user approves it) - `voip_rule_set`: Switch one of the owner's AI call rules on or off and optionally change its hours, start time or (rule 9) what foreign guests get. Same settings as the Call rules screen. When a rule calls guests (rule 9), switching it on starts real phone calls at the next scan (every 15 min). Confirm the change with the user in the chat before calling (creates a draft that takes effect after the user approves it) - `voip_rules_list`: The owner's AI call rules (numbered 1-9 like on the Call rules screen, then own rules): enabled or not, hours, start time; and for each of the owner's VoIP numbers the AI receptionist mode (off / first / fallback). Read-only (read-only, runs immediately) - `wallet_invoice`: Retrieve a Stripe invoice for a paid top-up in the owner's wallets. For legacy purchases without an invoice, prepare one against the verified original payment. Never charges the card again or credits tokens again. Missing billing details, refunds or historical tax/discounts require billing review instead of guessed data (creates a draft that takes effect after the user approves it) - `wallet_status`: Account username, personal and owned-company wallet balances, current top-up packs and the last 30 paid purchases with available invoice links. Never includes other accounts, even for administrators. Use before wallet_topup to select the correct wallet (read-only, runs immediately) - `wallet_topup`: Prepare a billing-review link for the signed-in owner or a company they own. The approval preview identifies the account, wallet, currency, price and tokens. The owner reviews and confirms the invoice buyer, address and tax ID in MyBooking before Stripe opens. This action never charges a saved card or creates Checkout (creates a draft that takes effect after the user approves it) - `whatsapp_number_add`: Connect a new WhatsApp number to your MyBooking account in two steps. step=add: the number is added to your WhatsApp Business Account (the one of your first number) and Meta sends a 6-digit code by SMS or voice call to that number. step=verify with the code: the number is registered and connected. No token or secret is needed. The code is sent by SMS or voice call to the number itself: you need that SIM. Registering a number on the Cloud API disconnects it from the WhatsApp app on the phone (creates a draft that takes effect after the user approves it) - `whatsapp_numbers`: List the WhatsApp numbers connected to your MyBooking account (never tokens) (read-only, runs immediately) - `whatsapp_task_template`: The French WhatsApp template used to write about a task outside Meta's 24 h window (D16): submit it to Meta for approval, or read whether Meta approved it (creates a draft that takes effect after the user approves it) ## Platform modules - Accommodation: properties and rooms, bookings, PMS, channel manager for Booking.com and other OTAs, dynamic pricing and the MyBooking sales channel - Communication: guest messaging, VoIP telephony with an AI receptionist and a shared phone book - Documents: document storage with AI naming and search, and invoices captured from e-mail - Accounting: bookkeeping, sales and cost invoices, and Polish KSeF e-invoicing - Task management: tasks for staff and contractors, such as cleaning, reception and maintenance, billed per company - Talent Hub: job offers and job search - Real estate: listings for sale and for rent - Flights: flight search and booking, charters and empty-leg flights - Medical: doctors and clinics with online appointment booking - Transport: rides and airport transfers - Restaurants: table reservations, menus, kitchen display and waiter app - CourtExpert: legal case management with matters, deadlines, hearings and AI-drafted filings - AI models: model training and federated learning Modules without a listed action are used on the website. ## Links - [Website](https://www.mybooking.ai/en/) - [AI assistants guide](https://www.mybooking.ai/en/ai/) - [Terms](https://www.mybooking.ai/en/terms/) - [Privacy policy](https://www.mybooking.ai/privacy/) - Support: support@mybooking.ai - Operator: Abba Villa Host Central Warsaw sp. z o.o.