melba_analytics_get
Get analytics GET /analytics Get analytics (scopes: read)
Scopes: read
The Melba MCP server exposes the Melba domain as Model Context Protocol primitives so any compliant client (Claude, ChatGPT, custom agents) can call Melba operations directly. The catalogue below is generated from the live /manifest.json endpoint at build time.
New to MCP? Follow a step-by-step guide to connect Melba to your assistant in a couple of minutes.
Get analytics GET /analytics Get analytics (scopes: read)
Scopes: read
Search application POST /applications/search Search application (scopes: write)
Scopes: write
Get application GET /applications/{id} Get application (scopes: read)
Scopes: read
Create catalog product POST /catalog-products Create catalog product (scopes: write)
Scopes: write
Bulk delete DELETE /catalog-products Bulk delete (scopes: write)
Scopes: write
Export POST /catalog-products/export Export (scopes: write)
Scopes: write
Search catalog product POST /catalog-products/search Search catalog product (scopes: write)
Scopes: write
Get catalog product GET /catalog-products/{id} Get catalog product (scopes: read)
Scopes: read
Delete catalog product DELETE /catalog-products/{id} Delete catalog product (scopes: write)
Scopes: write
List catalog products requiring reconciliation POST /catalog-products/reconciliation/list List catalog products requiring reconciliation (scopes: write)
Scopes: write
Pull POST /catalog-products/{id}/pull Pull (scopes: write)
Scopes: write
Create a catalog POST /catalogs Create a catalog Creates a catalog owned by the calling organization. The catalog starts empty — populate it via `POST /catalog-products` or by linking products in a group sync. (scopes: write)
Scopes: write
Bulk delete DELETE /catalogs Bulk delete (scopes: write)
Scopes: write
Search catalog POST /catalogs/search Search catalog (scopes: write)
Scopes: write
Get catalog GET /catalogs/{id} Get catalog (scopes: read)
Scopes: read
Update catalog PUT /catalogs/{id} Update catalog (scopes: write)
Scopes: write
Update catalog PATCH /catalogs/{id} Update catalog (scopes: write)
Scopes: write
Delete catalog DELETE /catalogs/{id} Delete catalog (scopes: write)
Scopes: write
Create catalog product POST /catalogs/{id}/products Create catalog product (scopes: write)
Scopes: write
Delete catalog product DELETE /catalogs/{id}/products Delete catalog product (scopes: write)
Scopes: write
Sync catalog POST /catalogs/{id}/sync Sync catalog (scopes: write)
Scopes: write
Create category POST /categories Create category (scopes: write)
Scopes: write
Bulk delete DELETE /categories Bulk delete (scopes: write)
Scopes: write
Search category POST /categories/search Search category (scopes: write)
Scopes: write
Get category GET /categories/{id} Get category (scopes: read)
Scopes: read
Update category PUT /categories/{id} Update category (scopes: write)
Scopes: write
Update category PATCH /categories/{id} Update category (scopes: write)
Scopes: write
Delete category DELETE /categories/{id} Delete category (scopes: write)
Scopes: write
Create client POST /clients Create client (scopes: write)
Scopes: write
Bulk delete DELETE /clients Bulk delete (scopes: write)
Scopes: write
Export POST /clients/export Export (scopes: write)
Scopes: write
Search client POST /clients/search Search client (scopes: write)
Scopes: write
Get client GET /clients/{id} Get client (scopes: read)
Scopes: read
Update client PUT /clients/{id} Update client (scopes: write)
Scopes: write
Update client PATCH /clients/{id} Update client (scopes: write)
Scopes: write
Delete client DELETE /clients/{id} Delete client (scopes: write)
Scopes: write
Create client contact POST /clients/{id}/contacts Create client contact (scopes: write)
Scopes: write
Delete client contact DELETE /clients/{id}/contacts Delete client contact (scopes: write)
Scopes: write
Get configuration GET /config Get configuration Returns Melba's shared reference data (allergens, countries, currencies, nutrients, subscription plans, modules, timezones). The body is **empty (`[]`) by default** — request the collections you need via the `include` query parameter, e.g. `?include=allergens,currencies`. Pass them all with `?include=allergens,countries,currencies,nutrients,plans,modules,timezones`.
Create contact POST /contacts Create contact (scopes: write)
Scopes: write
Bulk delete DELETE /contacts Bulk delete (scopes: write)
Scopes: write
Export POST /contacts/export Export (scopes: write)
Scopes: write
Search contact POST /contacts/search Search contact (scopes: write)
Scopes: write
Get contact GET /contacts/{id} Get contact (scopes: read)
Scopes: read
Update contact PUT /contacts/{id} Update contact (scopes: write)
Scopes: write
Update contact PATCH /contacts/{id} Update contact (scopes: write)
Scopes: write
Delete contact DELETE /contacts/{id} Delete contact (scopes: write)
Scopes: write
Create delivery anomaly POST /delivery-anomalies Create delivery anomaly (scopes: write)
Scopes: write
Bulk delete DELETE /delivery-anomalies Bulk delete (scopes: write)
Scopes: write
Export POST /delivery-anomalies/export Export (scopes: write)
Scopes: write
Bulk print POST /delivery-anomalies/print Bulk print (scopes: write)
Scopes: write
Search delivery anomaly POST /delivery-anomalies/search Search delivery anomaly (scopes: write)
Scopes: write
Get delivery anomaly GET /delivery-anomalies/{id} Get delivery anomaly (scopes: read)
Scopes: read
Update delivery anomaly PUT /delivery-anomalies/{id} Update delivery anomaly (scopes: write)
Scopes: write
Update delivery anomaly PATCH /delivery-anomalies/{id} Update delivery anomaly (scopes: write)
Scopes: write
Delete delivery anomaly DELETE /delivery-anomalies/{id} Delete delivery anomaly (scopes: write)
Scopes: write
Create delivery anomaly media POST /delivery-anomalies/{id}/medias Create delivery anomaly media (scopes: write)
Scopes: write
Delete delivery anomaly media DELETE /delivery-anomalies/{id}/medias Delete delivery anomaly media (scopes: write)
Scopes: write
Create element POST /elements Create element (scopes: write)
Scopes: write
Get element GET /elements/{id} Get element (scopes: read)
Scopes: read
Update element PUT /elements/{id} Update element (scopes: write)
Scopes: write
Update element PATCH /elements/{id} Update element (scopes: write)
Scopes: write
Delete element DELETE /elements/{id} Delete element (scopes: write)
Scopes: write
Create group catalog POST /group-catalogs Create group catalog (scopes: write)
Scopes: write
Bulk delete DELETE /group-catalogs Bulk delete (scopes: write)
Scopes: write
Create group organization POST /group-organizations Create group organization (scopes: write)
Scopes: write
Bulk delete DELETE /group-organizations Bulk delete (scopes: write)
Scopes: write
Export POST /group-catalogs/export Export (scopes: write)
Scopes: write
Search group catalog POST /group-catalogs/search Search group catalog (scopes: write)
Scopes: write
Get group catalog GET /group-catalogs/{id} Get group catalog (scopes: read)
Scopes: read
Delete group catalog DELETE /group-catalogs/{id} Delete group catalog (scopes: write)
Scopes: write
Export POST /group-organizations/export Export (scopes: write)
Scopes: write
Search group organization POST /group-organizations/search Search group organization (scopes: write)
Scopes: write
Get group organization GET /group-organizations/{id} Get group organization (scopes: read)
Scopes: read
Delete group organization DELETE /group-organizations/{id} Delete group organization (scopes: write)
Scopes: write
Create group POST /groups Create group (scopes: write)
Scopes: write
Bulk delete DELETE /groups Bulk delete (scopes: write)
Scopes: write
Search group POST /groups/search Search group (scopes: write)
Scopes: write
Get group GET /groups/{id} Get group (scopes: read)
Scopes: read
Update group PUT /groups/{id} Update group (scopes: write)
Scopes: write
Update group PATCH /groups/{id} Update group (scopes: write)
Scopes: write
Delete group DELETE /groups/{id} Delete group (scopes: write)
Scopes: write
Pull POST /groups/suppliers/pull Pull (scopes: write)
Scopes: write
Create group contact POST /groups/{id}/contacts Create group contact (scopes: write)
Scopes: write
Delete group contact DELETE /groups/{id}/contacts Delete group contact (scopes: write)
Scopes: write
Create group supplier POST /groups/{id}/suppliers Create group supplier (scopes: write)
Scopes: write
Delete group supplier DELETE /groups/{id}/suppliers Delete group supplier (scopes: write)
Scopes: write
Create hygiene record POST /hygiene-records Create hygiene record (scopes: write)
Scopes: write
Bulk delete DELETE /hygiene-records Bulk delete (scopes: write)
Scopes: write
Create hygiene template POST /hygiene-templates Create hygiene template (scopes: write)
Scopes: write
Bulk delete DELETE /hygiene-templates Bulk delete (scopes: write)
Scopes: write
Export POST /hygiene-records/export Export (scopes: write)
Scopes: write
Search hygiene record POST /hygiene-records/search Search hygiene record (scopes: write)
Scopes: write
Get hygiene record GET /hygiene-records/{id} Get hygiene record (scopes: read)
Scopes: read
Update hygiene record PUT /hygiene-records/{id} Update hygiene record (scopes: write)
Scopes: write
Update hygiene record PATCH /hygiene-records/{id} Update hygiene record (scopes: write)
Scopes: write
Delete hygiene record DELETE /hygiene-records/{id} Delete hygiene record (scopes: write)
Scopes: write
Export POST /hygiene-templates/export Export (scopes: write)
Scopes: write
Search hygiene template POST /hygiene-templates/search Search hygiene template (scopes: write)
Scopes: write
Get hygiene template GET /hygiene-templates/{id} Get hygiene template (scopes: read)
Scopes: read
Update PUT /hygiene-templates/{id} Update (scopes: write)
Scopes: write
Update PATCH /hygiene-templates/{id} Update (scopes: write)
Scopes: write
Delete DELETE /hygiene-templates/{id} Delete (scopes: write)
Scopes: write
Analyze invoice POST /invoices/analyze Analyze invoice (scopes: ai:invoke)
Scopes: ai:invoke
Import invoice POST /invoices/import Import invoice (scopes: write)
Scopes: write
Get invoice analysis GET /invoices/analyses/{id} Get invoice analysis (scopes: read)
Scopes: read
Auto match invoice POST /invoices/{id}/auto-match Auto match invoice (scopes: write)
Scopes: write
Enrich invoice analysis POST /invoices/analyses/{id}/enrich Enrich invoice analysis (scopes: write)
Scopes: write
Crée une recette dans Melba à partir d'une description en langage naturel. Le macro fait correspondre chaque ingrédient déclaré au catalogue produits via POST /products/search, résout les unités en lisant la liste embarquée dans GET /products/{id}.units pour chaque produit matché, puis assemble la recette + sa composition en un POST /products. Mode preview par défaut : montre les ingrédients matchés et ceux non trouvés. Routes touchées : - POST /products/search — Match each declared ingredient against the products catalog - GET /products/{id} — Fetch each matched product's embedded units catalogue (no /units/list endpoint exists) - POST /products — Create the recipe with its composition Confirmation gate : appel sans `confirm: true` → renvoie un preview. Re-appel avec `confirm: true` après accord utilisateur pour exécuter.
Crée une recette depuis une photo (carte manuscrite, livre, emballage). La vision/OCR est faite par le client LLM (Claude, ChatGPT) qui renvoie la structure `extractedRecipe`. La macro délègue ensuite à `melba_macro_recipe_create_from_text` pour le matching + l'écriture. Confirmation gate identique à create-from-text. Routes touchées : - POST /products/search — Match each extracted ingredient against the catalog - GET /products/{id} — Resolve unit symbols via the embedded `units` graph on each matched product - POST /products — Create the recipe + composition Confirmation gate : appel sans `confirm: true` → renvoie un preview. Re-appel avec `confirm: true` après accord utilisateur pour exécuter.
Calcule le coût matière (COGS) d'une recette en récupérant sa composition via GET /products/{id} puis en chargeant chaque ingrédient pour lire son prix d'approvisionnement. Si un prix de vente HT est fourni, renvoie aussi la marge brute (€) et le taux de marge (%). Routes touchées : - GET /products/{id} — Fetch recipe with full composition graph - GET /products/{id} — Fetch each composition ingredient to read its supplyingItems / cost
Construit une proposition de planning de production pour un jour donné. Joint la demande prévisionnelle (sales/search), le catalogue recettes (products/search?type=recipe) et l'état de stock (stock-items/search). Renvoie une liste {recipeId, quantity} ajustée par un buffer de sécurité. Routes touchées : - POST /sales/search — Pull sales forecast / history for the target date - POST /products/search — Enumerate recipes available for production - POST /stock-items/search — Read current on-hand stock to subtract from the plan
Identifie les stocks en dessous du seuil de réappro, les regroupe par fournisseur préféré et propose des bons de commande draft. Le mode preview liste les fournisseurs concernés, les lignes prévues et le montant estimé. Avec confirm: true, exécute les POST /orders en batch. Routes touchées : - POST /stock-items/search — List stock items flagged low - POST /suppliers/search — Resolve preferred supplier per product - POST /orders — Create draft purchase orders, grouped by supplier Confirmation gate : appel sans `confirm: true` → renvoie un preview. Re-appel avec `confirm: true` après accord utilisateur pour exécuter.
Effectue un take-over d'inventaire en batch. Pour chaque ligne {productId, observedQuantity}, calcule le delta par rapport au stock actuel et émet un POST /stock-transactions d'ajustement par ligne non nulle (fan-out — pas d'endpoint batch). Confirmation gate obligatoire — montre la diff par ligne avant écriture. Routes touchées : - POST /stock-items/search — Read current on-hand quantities to diff - POST /stock-transactions — Post each inventory adjustment (one call per non-zero delta) Confirmation gate : appel sans `confirm: true` → renvoie un preview. Re-appel avec `confirm: true` après accord utilisateur pour exécuter.
Compare deux plages de ventes (current vs baseline). Calcule delta CA, delta volume et top movers ± (ventes uniquement, pas de COGS). Read-only — aucun changement n'est écrit dans Melba. Routes touchées : - POST /sales/search — Pull sales lines for the current period - POST /sales/search — Pull sales lines for the baseline period
Pour chaque recette vendue sur la période, recalcule le COGS courant, le compare au prix de vente moyen observé, et flag celles dont la marge % est en dessous du seuil. Propose une suggestion (hausse de prix ou alerte substitution ingrédient). Read-only — aucune écriture côté Melba. Routes touchées : - POST /sales/search — List recipes sold during the period - GET /products/{id} — Fetch product full graph to recompute COGS per recipe
Compare la période donnée à la baseline (N dernières semaines), produit par produit. Flag les ventes hors-bande (moyenne ± sensibilité × écart-type). Read-only — utile pour repérer un produit qui décroche ou qui explose. Routes touchées : - POST /sales/search — Pull sales lines for the current period - POST /sales/search — Pull sales lines for each baseline week
Wizard d'import CSV avec deux phases. Preview : parse le CSV, propose un mapping colonne→champ avec confidence par colonne, montre les 3 premières lignes prêtes à être créées. Execute (confirm: true) : applique le mapping et appelle POST /products/import (products/recipes) ou boucle POST /suppliers par ligne (suppliers — pas d'endpoint bulk côté API). Routes touchées : - POST /products/import — Bulk create when kind=products (or recipes) - POST /suppliers — Per-row create when kind=suppliers (no bulk endpoint exists) Confirmation gate : appel sans `confirm: true` → renvoie un preview. Re-appel avec `confirm: true` après accord utilisateur pour exécuter.
Agrège pour une semaine ISO les hygiene records, les tâches hygiène, et les anomalies livraison dans un rapport markdown structuré. Read-only — pratique en revue hebdo ops manager. Routes touchées : - POST /hygiene-records/search — Pull hygiene records for the week - POST /tasks/search — Pull hygiene tasks (executed + pending) - POST /delivery-anomalies/search — Pull delivery anomalies that may impact traceability
Pont entre l'OCR fait par le LLM client et l'écriture d'une commande dans Melba. Le LLM extrait la structure {supplierName, lines, …} depuis la photo/PDF et la passe à la macro qui match les entités côté Melba. Preview obligatoire avant écriture. Sur confirm: true, POST /orders. Routes touchées : - POST /suppliers/search — Match the extracted supplier name against the catalog - POST /products/search — Match each line description against the products catalog - POST /orders — Create the draft order on confirm Confirmation gate : appel sans `confirm: true` → renvoie un preview. Re-appel avec `confirm: true` après accord utilisateur pour exécuter.
Compare les quantités d'un bon de livraison (extrait par le LLM côté client) aux lignes commandées. Renvoie {missing, overdelivered, match}. Sur confirm: true, POST /delivery-anomalies pour chaque écart. Routes touchées : - GET /orders/{id} — Fetch ordered quantities to diff against the slip - POST /delivery-anomalies — Post anomalies on confirm Confirmation gate : appel sans `confirm: true` → renvoie un preview. Re-appel avec `confirm: true` après accord utilisateur pour exécuter.
Rassemble le contexte fournisseur (commandes récentes, anomalies, contacts) pour permettre au LLM de rédiger un email contextualisé. AUCUNE écriture côté Melba — pattern "read + assemble". L'utilisateur copie le texte produit par le LLM dans son client email. Routes touchées : - GET /suppliers/{id} — Resolve supplier name + contacts + payment terms - POST /orders/search — Pull recent orders from the supplier - POST /delivery-anomalies/search — List recent anomalies that justify the email
Pull ventes + production + stock + anomalies sur une semaine ISO et renvoie un payload structuré que le LLM peut rendre en markdown digestible pour l'ops manager. Read-only. Routes touchées : - POST /sales/search — Pull sales for the week - POST /tasks/search — Pull production tasks for the week - POST /stock-items/search — Snapshot low-stock state - POST /delivery-anomalies/search — Pull weekly anomalies
Create media POST /media Create media (scopes: write)
Scopes: write
Download external POST /media/download-external Download external (scopes: write)
Scopes: write
Search images POST /media/search-images Search images (scopes: write)
Scopes: write
Search nutrition fact reference POST /nutrition-references/search Search nutrition fact reference (scopes: write)
Scopes: write
Returns a paginated list of purchase orders. Filter by status (created/sent/received/cancelled) or supplierId. Use this before melba_orders_get when the LLM does not yet know the order uuid. Cost: 1 API call.
Fetches a single order by uuid. Use `include=lines` to expand the order lines, `include=lines,supplier` for both. Cost: 1 API call.
Create order line POST /order-lines Create order line (scopes: write)
Scopes: write
Bulk delete DELETE /order-lines Bulk delete (scopes: write)
Scopes: write
Create order POST /orders Create order (scopes: write)
Scopes: write
Bulk delete DELETE /orders Bulk delete (scopes: write)
Scopes: write
Order line deduce stocks POST /order-lines/deduce-stocks Order line deduce stocks (scopes: write)
Scopes: write
Export POST /order-lines/export Export (scopes: write)
Scopes: write
Restock POST /order-lines/restock Restock (scopes: write)
Scopes: write
Round order line POST /order-lines/round Round order line (scopes: write)
Scopes: write
Search order line POST /order-lines/search Search order line (scopes: write)
Scopes: write
Update order line PUT /order-lines/{id} Update order line (scopes: write)
Scopes: write
Update order line PATCH /order-lines/{id} Update order line (scopes: write)
Scopes: write
Delete order line DELETE /order-lines/{id} Delete order line (scopes: write)
Scopes: write
Duplicate POST /orders/duplicate Duplicate (scopes: write)
Scopes: write
Export POST /orders/export Export (scopes: write)
Scopes: write
Search order POST /orders/search Search order (scopes: write)
Scopes: write
Get order GET /orders/{id} Get order (scopes: read)
Scopes: read
Update order PUT /orders/{id} Update order (scopes: write)
Scopes: write
Update order PATCH /orders/{id} Update order (scopes: write)
Scopes: write
Delete order DELETE /orders/{id} Delete order (scopes: write)
Scopes: write
Create parcel labels from order line POST /order-lines/{id}/parcel-labels Create parcel labels from order line (scopes: write)
Scopes: write
Delete parcel labels from order line DELETE /order-lines/{id}/parcel-labels Delete parcel labels from order line (scopes: write)
Scopes: write
Get emails order GET /orders/{id}/emails Get emails order (scopes: read)
Scopes: read
Print order POST /orders/{id}/print Print order (scopes: write)
Scopes: write
Send order POST /orders/{id}/send Send order (scopes: write)
Scopes: write
Order excel GET /orders/{id}/spreadsheet Order excel (scopes: read)
Scopes: read
Create organization POST /organizations Create organization (scopes: write)
Scopes: write
Search organization POST /organizations/search Search organization (scopes: write)
Scopes: write
Get organization GET /organizations/{id} Get organization (scopes: read)
Scopes: read
Update organization PUT /organizations/{id} Update organization (scopes: write)
Scopes: write
Update organization PATCH /organizations/{id} Update organization (scopes: write)
Scopes: write
Switch organization POST /organizations/{id}/switch Switch organization (scopes: write)
Scopes: write
Create parcel label POST /parcel-labels Create parcel label (scopes: write)
Scopes: write
Bulk delete DELETE /parcel-labels Bulk delete (scopes: write)
Scopes: write
Export POST /parcel-labels/export Export (scopes: write)
Scopes: write
Print POST /parcel-labels/print Print (scopes: write)
Scopes: write
Search parcel label POST /parcel-labels/search Search parcel label (scopes: write)
Scopes: write
Get parcel label GET /parcel-labels/{id} Get parcel label (scopes: read)
Scopes: read
Update parcel label PUT /parcel-labels/{id} Update parcel label (scopes: write)
Scopes: write
Update parcel label PATCH /parcel-labels/{id} Update parcel label (scopes: write)
Scopes: write
Delete parcel label DELETE /parcel-labels/{id} Delete parcel label (scopes: write)
Scopes: write
Create print template POST /print-templates Create print template (scopes: write)
Scopes: write
Bulk delete DELETE /print-templates Bulk delete (scopes: write)
Scopes: write
Search print template POST /print-templates/search Search print template (scopes: write)
Scopes: write
Get print template GET /print-templates/{id} Get print template (scopes: read)
Scopes: read
Update print template PUT /print-templates/{id} Update print template (scopes: write)
Scopes: write
Update print template PATCH /print-templates/{id} Update print template (scopes: write)
Scopes: write
Delete DELETE /print-templates/{id} Delete (scopes: write)
Scopes: write
Duplicate print template POST /print-templates/{id}/duplicate Duplicate print template (scopes: write)
Scopes: write
Create product POST /products Create product (scopes: write)
Scopes: write
Bulk delete DELETE /products Bulk delete (scopes: write)
Scopes: write
AI create recipe POST /products/ai-create-recipe AI create recipe (scopes: ai:invoke)
Scopes: ai:invoke
AI recipe content POST /products/ai-recipe-content AI recipe content (scopes: ai:invoke)
Scopes: ai:invoke
Allergens product POST /products/allergens Allergens product (scopes: write)
Scopes: write
Assign categories POST /products/assign-categories Assign categories (scopes: write)
Scopes: write
Backup POST /products/backup Backup (scopes: write)
Scopes: write
Detect allergens POST /products/detect-allergens Detect allergens (scopes: write)
Scopes: write
Duplicate POST /products/duplicate Duplicate (scopes: write)
Scopes: write
Estimate nutrition POST /products/estimate-nutrition Estimate nutrition (scopes: write)
Scopes: write
Export POST /products/export Export (scopes: write)
Scopes: write
Bulk generate description POST /products/generate-descriptions Bulk generate description (scopes: ai:invoke)
Scopes: ai:invoke
Bulk create POST /products/import Bulk create (scopes: write)
Scopes: write
Bulk import composition POST /products/import-composition Bulk import composition (scopes: write)
Scopes: write
Product print POST /products/print Product print (scopes: write)
Scopes: write
Search product POST /products/search Search product (scopes: write)
Scopes: write
Select POST /products/select Select (scopes: write)
Scopes: write
Suggest categories POST /products/suggest-categories Suggest categories (scopes: write)
Scopes: write
Get product GET /products/{id} Get product (scopes: read)
Scopes: read
Update product PUT /products/{id} Update product (scopes: write)
Scopes: write
Update product PATCH /products/{id} Update product (scopes: write)
Scopes: write
Delete product DELETE /products/{id} Delete product (scopes: write)
Scopes: write
Get AI job status GET /products/ai-jobs/{id} Get AI job status (scopes: read)
Scopes: read
Generate description POST /products/{id}/generate-description Generate description (scopes: write)
Scopes: write
Import composition POST /products/{id}/import-composition Import composition (scopes: write)
Scopes: write
Print product POST /products/{id}/print Print product (scopes: write)
Scopes: write
Produce POST /products/{id}/produce Produce (scopes: write)
Scopes: write
Pull POST /products/{id}/pull Pull (scopes: write)
Scopes: write
Create product tag POST /products/{id}/tags Create product tag (scopes: write)
Scopes: write
Delete product tag DELETE /products/{id}/tags Delete product tag (scopes: write)
Scopes: write
Returns a paginated list of recipes owned by the calling Melba organization. Each recipe carries id, name, category, allergens, cost, and version. Use this before any mutation tool to confirm the recipe exists and you have its uuid. Cost: 1 API call (debited from the credits batch counter if no API subscription).
Fetches a single recipe by its uuid. Pass `include` to expand related entities (composition for the full ingredient tree, allergens for the per-line list, etc.). Cost: 1 API call.
Create role POST /roles Create role (scopes: write)
Scopes: write
Search role POST /roles/search Search role (scopes: write)
Scopes: write
Get role GET /roles/{id} Get role (scopes: read)
Scopes: read
Update role PUT /roles/{id} Update role (scopes: write)
Scopes: write
Update role PATCH /roles/{id} Update role (scopes: write)
Scopes: write
Delete role DELETE /roles/{id} Delete role (scopes: write)
Scopes: write
Create role module POST /roles/{id}/modules Create role module (scopes: write)
Scopes: write
Delete role module DELETE /roles/{id}/modules Delete role module (scopes: write)
Scopes: write
Create sale item POST /sale-items Create sale item (scopes: write)
Scopes: write
Bulk delete DELETE /sale-items Bulk delete (scopes: write)
Scopes: write
Create sale line POST /sale-lines Create sale line (scopes: write)
Scopes: write
Bulk delete DELETE /sale-lines Bulk delete (scopes: write)
Scopes: write
Create sale POST /sales Create sale (scopes: write)
Scopes: write
Bulk delete DELETE /sales Bulk delete (scopes: write)
Scopes: write
Export POST /sale-items/export Export (scopes: write)
Scopes: write
Search sale item POST /sale-items/search Search sale item (scopes: write)
Scopes: write
Get sale item GET /sale-items/{id} Get sale item (scopes: read)
Scopes: read
Update sale item PUT /sale-items/{id} Update sale item (scopes: write)
Scopes: write
Update sale item PATCH /sale-items/{id} Update sale item (scopes: write)
Scopes: write
Delete DELETE /sale-items/{id} Delete (scopes: write)
Scopes: write
Destock POST /sale-lines/destock Destock (scopes: write)
Scopes: write
Export POST /sale-lines/export Export (scopes: write)
Scopes: write
Bulk create POST /sale-lines/import Bulk create (scopes: write)
Scopes: write
Order sale lines POST /sale-lines/order Order sale lines (scopes: write)
Scopes: write
Print POST /sale-lines/print Print (scopes: write)
Scopes: write
Produce sale line POST /sale-lines/produce Produce sale line (scopes: write)
Scopes: write
Restock POST /sale-lines/restock Restock (scopes: write)
Scopes: write
Search sale line POST /sale-lines/search Search sale line (scopes: write)
Scopes: write
Select sale line POST /sale-lines/select Select sale line (scopes: write)
Scopes: write
Get sale line GET /sale-lines/{id} Get sale line (scopes: read)
Scopes: read
Update sale line PUT /sale-lines/{id} Update sale line (scopes: write)
Scopes: write
Update sale line PATCH /sale-lines/{id} Update sale line (scopes: write)
Scopes: write
Delete sale line DELETE /sale-lines/{id} Delete sale line (scopes: write)
Scopes: write
Duplicate sale POST /sales/duplicate Duplicate sale (scopes: write)
Scopes: write
Export POST /sales/export Export (scopes: write)
Scopes: write
Order sales POST /sales/order Order sales (scopes: write)
Scopes: write
Produce sale POST /sales/produce Produce sale (scopes: write)
Scopes: write
Search sale POST /sales/search Search sale (scopes: write)
Scopes: write
Get sale GET /sales/{id} Get sale (scopes: read)
Scopes: read
Update sale PUT /sales/{id} Update sale (scopes: write)
Scopes: write
Update sale PATCH /sales/{id} Update sale (scopes: write)
Scopes: write
Delete sale DELETE /sales/{id} Delete sale (scopes: write)
Scopes: write
Get emails sale GET /sales/{id}/emails Get emails sale (scopes: read)
Scopes: read
Print sale POST /sales/{id}/print Print sale (scopes: write)
Scopes: write
Create selected product POST /selected-products Create selected product (scopes: write)
Scopes: write
Bulk delete DELETE /selected-products Bulk delete (scopes: write)
Scopes: write
Create selection POST /selections Create selection (scopes: write)
Scopes: write
Bulk delete DELETE /selections Bulk delete (scopes: write)
Scopes: write
Allergens selected product POST /selected-products/allergens Allergens selected product (scopes: write)
Scopes: write
Deduce stock selected products POST /selected-products/deduce-stocks Deduce stock selected products (scopes: write)
Scopes: write
Destock POST /selected-products/destock Destock (scopes: write)
Scopes: write
Export POST /selected-products/export Export (scopes: write)
Scopes: write
Flatten selected product POST /selected-products/flatten Flatten selected product (scopes: write)
Scopes: write
Order selected product POST /selected-products/order Order selected product (scopes: write)
Scopes: write
Print selected products POST /selected-products/print Print selected products (scopes: write)
Scopes: write
Produce selected product POST /selected-products/produce Produce selected product (scopes: write)
Scopes: write
Restock POST /selected-products/restock Restock (scopes: write)
Scopes: write
Search selected product POST /selected-products/search Search selected product (scopes: write)
Scopes: write
Sell selected product POST /selected-products/sell Sell selected product (scopes: write)
Scopes: write
Get selected product GET /selected-products/{id} Get selected product (scopes: read)
Scopes: read
Update selected product PUT /selected-products/{id} Update selected product (scopes: write)
Scopes: write
Update selected product PATCH /selected-products/{id} Update selected product (scopes: write)
Scopes: write
Delete selected product DELETE /selected-products/{id} Delete selected product (scopes: write)
Scopes: write
Duplicate POST /selections/duplicate Duplicate (scopes: write)
Scopes: write
Search selection POST /selections/search Search selection (scopes: write)
Scopes: write
Get selection GET /selections/{id} Get selection (scopes: read)
Scopes: read
Update selection PUT /selections/{id} Update selection (scopes: write)
Scopes: write
Update selection PATCH /selections/{id} Update selection (scopes: write)
Scopes: write
Delete selection DELETE /selections/{id} Delete selection (scopes: write)
Scopes: write
Create step POST /steps Create step (scopes: write)
Scopes: write
Get step GET /steps/{id} Get step (scopes: read)
Scopes: read
Update step PUT /steps/{id} Update step (scopes: write)
Scopes: write
Update step PATCH /steps/{id} Update step (scopes: write)
Scopes: write
Delete step DELETE /steps/{id} Delete step (scopes: write)
Scopes: write
Create stock item POST /stock-items Create stock item (scopes: write)
Scopes: write
Bulk delete DELETE /stock-items Bulk delete (scopes: write)
Scopes: write
Create stock transaction POST /stock-transactions Create stock transaction (scopes: write)
Scopes: write
Bulk delete DELETE /stock-transactions Bulk delete (scopes: write)
Scopes: write
Create storage location POST /storage-locations Create storage location (scopes: write)
Scopes: write
Bulk delete DELETE /storage-locations Bulk delete (scopes: write)
Scopes: write
Empty stock item POST /stock-items/empty Empty stock item (scopes: write)
Scopes: write
Export POST /stock-items/export Export (scopes: write)
Scopes: write
Order stock item POST /stock-items/order Order stock item (scopes: write)
Scopes: write
Produce stock item POST /stock-items/produce Produce stock item (scopes: write)
Scopes: write
Search stock item POST /stock-items/search Search stock item (scopes: write)
Scopes: write
Sell POST /stock-items/sell Sell (scopes: write)
Scopes: write
Get stock item GET /stock-items/{id} Get stock item (scopes: read)
Scopes: read
Update stock item PUT /stock-items/{id} Update stock item (scopes: write)
Scopes: write
Update stock item PATCH /stock-items/{id} Update stock item (scopes: write)
Scopes: write
Delete stock item DELETE /stock-items/{id} Delete stock item (scopes: write)
Scopes: write
Export POST /stock-transactions/export Export (scopes: write)
Scopes: write
Search stock transaction POST /stock-transactions/search Search stock transaction (scopes: write)
Scopes: write
Get stock transaction GET /stock-transactions/{id} Get stock transaction (scopes: read)
Scopes: read
Update stock transaction PUT /stock-transactions/{id} Update stock transaction (scopes: write)
Scopes: write
Update stock transaction PATCH /stock-transactions/{id} Update stock transaction (scopes: write)
Scopes: write
Import stock POST /stocks/import Import stock (scopes: write)
Scopes: write
Search storage location POST /storage-locations/search Search storage location (scopes: write)
Scopes: write
Get storage location GET /storage-locations/{id} Get storage location (scopes: read)
Scopes: read
Update PATCH /storage-locations/{id} Update (scopes: write)
Scopes: write
Delete DELETE /storage-locations/{id} Delete (scopes: write)
Scopes: write
Update stock item POST /stock-items/{id}/transfer Update stock item (scopes: write)
Scopes: write
Revert stock transaction POST /stock-transactions/{id}/revert Revert stock transaction (scopes: write)
Scopes: write
Create supplier POST /suppliers Create supplier (scopes: write)
Scopes: write
Bulk delete DELETE /suppliers Bulk delete (scopes: write)
Scopes: write
Create supplying item POST /supplying-items Create supplying item (scopes: write)
Scopes: write
Bulk delete DELETE /supplying-items Bulk delete (scopes: write)
Scopes: write
Export POST /suppliers/export Export (scopes: write)
Scopes: write
Search supplier POST /suppliers/search Search supplier (scopes: write)
Scopes: write
Get supplier GET /suppliers/{id} Get supplier (scopes: read)
Scopes: read
Update supplier PUT /suppliers/{id} Update supplier (scopes: write)
Scopes: write
Update supplier PATCH /suppliers/{id} Update supplier (scopes: write)
Scopes: write
Delete supplier DELETE /suppliers/{id} Delete supplier (scopes: write)
Scopes: write
Export POST /supplying-items/export Export (scopes: write)
Scopes: write
Search supplying item POST /supplying-items/search Search supplying item (scopes: write)
Scopes: write
Get supplying item GET /supplying-items/{id} Get supplying item (scopes: read)
Scopes: read
Update PUT /supplying-items/{id} Update (scopes: write)
Scopes: write
Update PATCH /supplying-items/{id} Update (scopes: write)
Scopes: write
Delete DELETE /supplying-items/{id} Delete (scopes: write)
Scopes: write
Create supplier contact POST /suppliers/{id}/contacts Create supplier contact (scopes: write)
Scopes: write
Delete supplier contact DELETE /suppliers/{id}/contacts Delete supplier contact (scopes: write)
Scopes: write
API root GET / API root (scopes: read)
Scopes: read
Create task POST /tasks Create task (scopes: write)
Scopes: write
Bulk delete DELETE /tasks Bulk delete (scopes: write)
Scopes: write
Bulk update PUT /tasks/bulk Bulk update (scopes: write)
Scopes: write
Bulk update PATCH /tasks/bulk Bulk update (scopes: write)
Scopes: write
Deduce stock tasks POST /tasks/deduce-stocks Deduce stock tasks (scopes: write)
Scopes: write
Destock POST /tasks/destock Destock (scopes: write)
Scopes: write
Duplicate task POST /tasks/duplicate Duplicate task (scopes: write)
Scopes: write
Export POST /tasks/export Export (scopes: write)
Scopes: write
Flatten task POST /tasks/flatten Flatten task (scopes: write)
Scopes: write
Order task POST /tasks/order Order task (scopes: write)
Scopes: write
Print task POST /tasks/print Print task (scopes: write)
Scopes: write
Restock POST /tasks/restock Restock (scopes: write)
Scopes: write
Search task POST /tasks/search Search task (scopes: write)
Scopes: write
Select task POST /tasks/select Select task (scopes: write)
Scopes: write
Sell task POST /tasks/sell Sell task (scopes: write)
Scopes: write
Get task GET /tasks/{id} Get task (scopes: read)
Scopes: read
Update task PUT /tasks/{id} Update task (scopes: write)
Scopes: write
Update task PATCH /tasks/{id} Update task (scopes: write)
Scopes: write
Delete task DELETE /tasks/{id} Delete task (scopes: write)
Scopes: write
Create used parcel labels from task POST /tasks/{id}/used-parcel-labels Create used parcel labels from task (scopes: write)
Scopes: write
Delete used parcel labels from task DELETE /tasks/{id}/used-parcel-labels Delete used parcel labels from task (scopes: write)
Scopes: write
Create unit POST /units Create unit (scopes: write)
Scopes: write
Get unit GET /units/{id} Get unit (scopes: read)
Scopes: read
Update unit PUT /units/{id} Update unit (scopes: write)
Scopes: write
Update unit PATCH /units/{id} Update unit (scopes: write)
Scopes: write
Delete unit DELETE /units/{id} Delete unit (scopes: write)
Scopes: write
Get unit factor GET /units/{id}/convert Get unit factor (scopes: read)
Scopes: read
Get current authenticated user + organization snapshot GET /me Get current authenticated user + organization snapshot (scopes: read)
Scopes: read
Create user POST /users Create user (scopes: users:write)
Scopes: users:write
Bulk delete DELETE /users Bulk delete (scopes: users:write)
Scopes: users:write
Get list views GET /me/list-views Get list views (scopes: read)
Scopes: read
Create list view POST /me/list-views Create list view (scopes: write)
Scopes: write
Export POST /users/export Export (scopes: users:write)
Scopes: users:write
Search user POST /users/search Search user (scopes: users:write)
Scopes: users:write
Get user GET /users/{id} Get user (scopes: read)
Scopes: read
Update user PUT /users/{id} Update user (scopes: users:write)
Scopes: users:write
Update user PATCH /users/{id} Update user (scopes: users:write)
Scopes: users:write
Delete user DELETE /users/{id} Delete user (scopes: users:write)
Scopes: users:write
Update list view PUT /me/list-views/{id} Update list view (scopes: write)
Scopes: write
Delete list view DELETE /me/list-views/{id} Delete list view (scopes: write)
Scopes: write
Set default list view PUT /me/list-views/{id}/default Set default list view (scopes: write)
Scopes: write
Planification journalière via macro production_plan_day (sales forecast + stock + recettes → tâches), mise en production manuelle (POST /products/{id}/produce), gestion des sous-recettes via extractRecipes, génération étiquettes DLC et INCO depuis composition + allergènes.
melba_productionLecture d'état stocks (articles + recettes), passage de transactions avec auto-direction par type (Production→restock, Theft→destock…), pattern restock-before-destock obligatoire, inventaire physique batch via macro stock_takeover, réappro automatique via macro stock_reorder_low.
melba_stocksWalks le LLM à travers l'ingestion de données externes : facture papier (photo/PDF) → commande draft via macro invoice_extract, export caisse → ventes bulk, catalogue CSV → bulk update prix. Mode preview obligatoire avant chaque écriture batch.
melba_importCharge ce prompt quand l'utilisateur ouvre une session sans demande précise. Donne un état global rapide (anomalies récentes, ventes, production, stocks, à-faire) en lecture seule via les macros digest / compare / anomalies. Reflète l'écran d'accueil du frontend.
melba_tableau_de_bordGestion des sélections (sets de produits pour carte saisonnière, catalogue fournisseur, menu enfants…). Création, enrichissement par search + add, duplication pour période suivante, export markdown.
melba_modelesCréation + gestion d'articles (produits non-recette) depuis instructions libres, photo d'emballage, PDF fiche technique ou CSV catalogue fournisseur. Inclut anti-doublons, résolution catégorie/allergènes validée par l'utilisateur, gestion prix fournisseur (supplyingItems) et prix de vente (saleItems). Reflète l'écran Modals/Articles/Manager.tsx.
melba_articlesCréation + gestion de recettes depuis description libre (macro recipe_create_from_text), photo (macro recipe_create_from_photo), PDF fiche technique. Inclut mode AI 2-étapes miroir frontend, calcul COGS via macro compute_cost, tableau allergènes par recette, sous-recettes, mise en production via /products/{id}/produce. Reflète l'écran Modals/Recipes/Manager.tsx.
melba_recettesCréation + suivi commandes fournisseurs depuis instructions libres (orders_create + orderLines en boucle), facture photo/PDF (macro invoice_extract), CSV/Excel, email/devis collé, ou réappro automatique. Inclut gestion des supplyingItems actifs par supplier, anomalies livraison via macro delivery_slip_check, et envoi au fournisseur. Reflète les écrans Modals/Orders/Create.tsx + OrderLines/Manager.tsx.
melba_commandesSaisie ventes avec rescaling discount 0-100→0-1, devis (status: quote), factures PDF, comparaison périodes via macro sales_compare_periods, détection anomalies via macro sales_anomalies, audit marges via macro margin_audit. Reflète Modals/Sales/Manager.tsx.
melba_ventesSaisie relevés hygiène (type immutable, photo, signataire), cycle températures, étiquettes parcel et INCO/DLC, audit HACCP hebdo via macro haccp_weekly_report. Confirmation utilisateur explicite obligatoire pour signature légale (marker done). Reflète Modals/HygieneRecords/Manager.tsx.
melba_hygieneConfiguration de l'organisation : catégories hiérarchiques, clients, fournisseurs (création minimale name + legalName puis enrichissement), templates HACCP avec plages attendues, multi-sites, zones de stockage avec hiérarchie. Anti-doublon systématique avant create.
melba_parametresJSON array of every Unit in the organisation's catalogue. Each entry carries id, name, symbol and conversion metadata. Read this once at the start of a session to resolve unit names from natural language into the uuids the mutation tools expect.
melba://catalogs/unitsJSON array of every Allergen tracked by Melba (EU-14 + extras). Each entry carries id, name and i18n keys. Read this when a user mentions an allergen by colloquial name to translate to the canonical uuid used on Product and Recipe records.
melba://catalogs/allergensStatic catalogue of status enum values for Sale / Order / Task / Inventory. Hardcoded in the MCP server until the backend exposes a /api/status-values endpoint. Use this to validate the `status` argument of any mutation tool before calling it.
melba://catalogs/status-valuesReference list of currencies known to Melba (ISO 4217 code, name, symbol). Sourced from `GET /config?include=currencies`, falls back to a hardcoded ISO 4217 subset if the upstream response is empty. Read this to resolve a currency code from a natural-language mention before building a price / order payload.
melba://catalogs/currenciesJSON array of organisations the authenticated user belongs to. Sourced from POST /organizations/search (count=100, sort=name asc). REQUIRES an authenticated session — calling this resource anonymously throws. Cache is scoped to the session (1h) so a different api key sees a different list.
melba://catalogs/organizationsJSON listing of the org's top-100 suppliers (sorted by name asc), via POST /suppliers/search. Use this to resolve a supplier name from natural language before crafting an Order payload. Above 100 suppliers, prefer the search tool. Cache is session-scoped (1h) because the supplier set is org-specific.
melba://catalogs/suppliersAggregated index of products + recipes + suppliers (cap 5 000 items) — each entry carries kind, id, name, aliases, tags. Read this once at the start of a session to do natural-language fuzzy matching across the full catalog without per-field round-trips. Session-cached 1h.
melba://catalogs/full-indexAggregated "what is wrong this week" signal — HACCP failed records + delivery anomalies from the last 7 days. Use this to ground a weekly digest or a compliance narrative without 3 separate listing calls. Session-cached 1h.
melba://catalogs/recent-anomalies