otomata
planity.
List salons accessible to the user.
setup & usage
oto se connecte à pro.planity.com avec tes identifiants, comme tu le ferais toi-même. renseigne l'email et le mot de passe de ton compte planity pro — ils sont chiffrés au coffre, jamais rendus en clair, et servent uniquement à ouvrir la session.
planity_list_salons te dit lesquels — si tu en attendais quatre et n'en vois qu'un, c'est le compte, pas l'outillecture seule. aucun rendez-vous n'est créé, modifié ni annulé.
planity_list_salons pour commencer : l'id rendu est le salon_id de tous les autres outilsplanity_list_appointments, presets today / this_week / 30d…), le détail d'un rendez-vous (planity_get_appointment), les rendez-vous récurrents (planity_list_recurring_appointments, qui n'apparaissent dans AUCUNE liste par date)planity_search_customers), fiche (planity_get_customer), statistiques et tickets d'une cliente (planity_get_customer_stats, planity_get_customer_receipts)planity_list_employees), le catalogue de prestations et de produits (planity_list_services, planity_list_products)planity_get_revenue_summary), le jour par jour (planity_get_daily_revenue), la décomposition prestations/produits (planity_get_revenue_breakdown), par collaboratrice (planity_get_seller_stats), par moyen de paiement (planity_get_revenue_by_payment_method), par taux de TVA (planity_get_revenue_by_vat), par prestation (planity_get_service_stats), le taux d'occupation (planity_get_occupancy_rate) et les avis (planity_get_reviews_stats)planity_list_pos_periods), une session et ses tickets (planity_get_pos_period), un ticket en détail (planity_get_receipt), la table des moyens de paiement (planity_list_payment_methods)planity_list_stock_movements), les fournisseurs (planity_list_suppliers), les commandes de réassort (planity_list_product_orders), les sorties groupées (planity_list_mass_stock_removals)planity_get_best_customers, planity_get_new_customers, planity_get_customer_frequencies)le connecteur s'authentifie avec l'email et le mot de passe de ton compte planity pro, et rien d'autre : il n'utilise pas le code administrateur de l'application planity.
le connecteur a besoin, en plus de tes identifiants, de trois coordonnées de l'application planity posées une fois par l'exploitant de l'instance oto : firebase_api_key, firebase_app_id, rest_api (réglages de connecteur, scope plateforme).
planity_* restent visibles mais refusent en le disant, en nommant la clé absente et la commande qui la pose — ce n'est alors pas ton credential qui est en cause, et il n'y a rien à reposer de ton côtépro.planity.com les reçoit), elles appartiennent à planity, et elles n'autorisent rien à elles seules — ce qui autorise, c'est ton mot de passe, qui vit au coffre chiffré. elles peuvent apparaître dans un message d'erreur ou un journal de débogage sans que ce soit une fuiteplanity_get_revenue_breakdown (by_seller) revient vide côté planity, même en lui passant l'équipe. la bonne réponse est planity_get_seller_stats, qui passe par un autre endpoint — un by_seller vide n'est donc pas un salon sans ventesle connecteur rend le brut et laisse l'agent composer, sauf sur les données personnelles d'une tierce. un rendez-vous et un ticket portent, chez planity, le nom, le téléphone, l'email et l'adresse de la cliente ; un ticket y ajoute le commentaire écrit sur elle.
planity_list_appointments ne rend pas non plus le commentaire libre du rendez-vous (il contient couramment des noms) ; planity_get_appointment, appelé pour UN rendez-vous, le rendplanity_get_customer. c'est son objet, tu l'as demandé, et rien ne sort tant que tu ne le demandes pasil n'y a pas d'outil de prévision : la règle (couverture visée, délai fournisseur, familles à réassortir) t'appartient. les outils rendent les faits.
1. planity_get_revenue_breakdown sur 90 jours → les quantités vendues par produit, en un appel (by_product, bucket_id = l'id du produit au catalogue)
2. planity_list_products → le stock de chaque produit et ses lots d'achat (avec leur prix d'achat, donc la marge)
3. le calcul est à toi : couverture = stock / (ventes ÷ 90), à comparer à ton délai de réassort. planity_list_stock_movements(product_ids=[…]) donne le détail des mouvements sur les produits qui sortent du lot
planity_list_stock_movements exige `product_ids` : les mouvements se lisent un produit à la fois, et il ne balaie pas un catalogue entier tout seul. sans les ids, il refuse tout de suite, sans rien lirestock_threshold et stock_ceiling valent null quand le salon ne s'en sert pas — `null` n'est pas `0` : une règle qui lirait zéro commanderait tout, tout le tempsplanity_list_mass_stock_removals (inventaire, casse, péremption)planity conserve ce qu'on supprime : une collaboratrice partie garde son agenda et ses rendez-vous passés, une prestation retirée reste sur les anciens tickets.
planity_list_employees, planity_list_services et planity_list_products écartent les supprimés par défaut — un salon de trois personnes n'en annonce pas septinclude_deleted=true pour l'historique : retrouver la prestation d'un ancien ticket, ou le chiffre d'une collaboratrice partietype et title sont rendus tels que planity les stockeplanity_get_revenue_summary et planity_get_daily_revenue rendent un bloc period : bornes, nombre de jours, fuseau (europe/paris), et surtout ends_today / complete.
days_with_revenue n'est pas period.daysoutils
usage
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.pipx install oto-cli then oto planity …