otomata
planity.
List salons accessible to the user.
setup & usage
oto logs in to pro.planity.com with your credentials, just as you would yourself. enter the email and password of your planity pro account — they are encrypted in the vault, never returned in clear, and used only to open the session.
planity_list_salons tells you which — if you expected four and see only one, it is the account, not the toolread-only. no appointment is created, modified or cancelled.
planity_list_salons to start: the returned id is the salon_id of all the other toolsplanity_list_appointments, presets today / this_week / 30d…), the detail of one appointment (planity_get_appointment), recurring appointments (planity_list_recurring_appointments, which appear in NO by-date list)planity_search_customers), record (planity_get_customer), a customer's statistics and receipts (planity_get_customer_stats, planity_get_customer_receipts)planity_list_employees), the catalogue of services and products (planity_list_services, planity_list_products)planity_get_revenue_summary), day by day (planity_get_daily_revenue), the services/products breakdown (planity_get_revenue_breakdown), by staff member (planity_get_seller_stats), by payment method (planity_get_revenue_by_payment_method), by VAT rate (planity_get_revenue_by_vat), by service (planity_get_service_stats), the occupancy rate (planity_get_occupancy_rate) and reviews (planity_get_reviews_stats)planity_list_pos_periods), a session and its receipts (planity_get_pos_period), a receipt in detail (planity_get_receipt), the table of payment methods (planity_list_payment_methods)planity_list_stock_movements), suppliers (planity_list_suppliers), restocking orders (planity_list_product_orders), grouped removals (planity_list_mass_stock_removals)planity_get_best_customers, planity_get_new_customers, planity_get_customer_frequencies)the connector authenticates with the email and password of your planity pro account, and nothing else: it does not use the planity application's administrator code.
in addition to your credentials, the connector needs three planity application endpoints set once by the operator of the oto instance: firebase_api_key, firebase_app_id, rest_api (connector settings, platform scope).
planity_* tools stay visible but refuse and say so, naming the missing key and the command that sets it — your credential is then not at fault, and there is nothing to set again on your sidepro.planity.com receives them), they belong to planity, and they authorize nothing on their own — what authorizes is your password, which lives in the encrypted vault. they can appear in an error message or a debug log without being a leakplanity_get_revenue_breakdown (by_seller) comes back empty on planity's side, even when passing it the team. the right answer is planity_get_seller_stats, which goes through another endpoint — an empty by_seller is therefore not a salon with no salesthe connector returns the raw data and lets the agent compose, except on a third party's personal data. at planity, an appointment and a receipt carry the customer's name, phone, email and address; a receipt adds the comment written about her.
planity_list_appointments does not return the appointment's free-text comment either (it commonly contains names); planity_get_appointment, called for ONE appointment, returns itplanity_get_customer. it is her record, you asked for it, and nothing comes out until you askthere is no forecast tool: the rule (target coverage, supplier lead time, families to restock) is yours. the tools return the facts.
1. planity_get_revenue_breakdown over 90 days → the quantities sold per product, in one call (by_product, bucket_id = the product's catalogue id)
2. planity_list_products → each product's stock and its purchase lots (with their purchase price, hence the margin)
3. the calculation is yours: coverage = stock / (sales ÷ 90), to compare with your restocking lead time. planity_list_stock_movements(product_ids=[…]) gives the detail of the movements on the products that are running out
planity_list_stock_movements requires `product_ids`: movements are read one product at a time, and it does not sweep a whole catalogue by itself. without the ids, it refuses at once, reading nothingstock_threshold and stock_ceiling are null when the salon does not use them — `null` is not `0`: a rule that read zero would order everything, all the timeplanity_list_mass_stock_removals (inventory, breakage, expiry)planity keeps what is deleted: a departed staff member keeps her calendar and past appointments, a withdrawn service stays on old receipts.
planity_list_employees, planity_list_services and planity_list_products discard deleted items by default — a three-person salon does not announce seveninclude_deleted=true for history: finding the service on an old receipt, or the revenue of a departed staff membertype and title are returned as planity stores themplanity_get_revenue_summary and planity_get_daily_revenue return a period block: bounds, number of days, timezone (europe/paris), and above all ends_today / complete.
days_with_revenue is not period.daysthis connector accepts multiple comptes: each stored credential becomes a named account (one name per compte), at your level, your team's or your org's.
_account="<name>" on the tool; list them: oto_identity(op='list', connector='planity') (scope='org' or scope='group' for the org's or team's)oto_identity(op='set', connector='planity', identity_id='<name>'); rename: op='rename' with new_name_account) and adding upoutils
utilisation
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.pipx install oto-cli puis oto planity …