L'API FoodEatUp expose l'ensemble de votre restaurant — stocks, carte, commandes,
HACCP, équipe, marketing, fidélité — via un point d'entrée unique au protocole
JSON-RPC 2.0 (MCP). Connectez-la à n8n, Make, Zapier ou à vos
propres scripts pour construire vos automatisations, exactement comme nos équipes.
264 outils sont disponibles,
présentés module par module.
Toutes les requêtes suivantes portent ce jeton dans l'en-tête
Authorization: Bearer <access_token>. La clé est liée à
votre établissement : chaque appel est automatiquement restreint à
ses données — il est impossible de lire ou modifier un autre établissement, même en
passant un autre establishment_id (il est réécrit côté serveur).
Chaque réponse d'outil suit la même enveloppe — le résultat métier est le JSON contenu dans result.content[0].text :
Bonnes pratiques : réutilisez votre jeton (ne redemandez pas un jeton à chaque appel),
et en cas de 429 appliquez un retry exponentiel (2 s, 4 s, 8 s…).
Catalogue généré automatiquement depuis le serveur — il reflète toujours exactement
les outils réellement disponibles. Les exemples n'incluent que les paramètres requis ;
les paramètres optionnels sont listés dans le tableau de chaque outil.
Aucun outil ne correspond à cette recherche.
Ingrédients
8 outils
Crée un nouvel ingrédient pour un établissement.
ingredients.ingredients.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
category_id |
integer | null |
optionnel
|
Catégorie d’ingrédient (id de list_categories type ingredient ; null = sans catégorie). |
name |
string |
requis
|
Nom de l'ingrédient |
unit |
string |
requis
|
Unité (ex: g, kg, ml, L, pièce) |
cooking_coefficient |
number |
optionnel
|
Coefficient de transformation à la cuisson : poids_final = poids_brut × coefficient. 1 = neutre, >1 expansion (riz ≈3, pâtes ≈2.5), <1 perte (viande ≈0.7). Défaut 1. |
price_per_unit |
number |
requis
|
Prix unitaire |
quantity_in_stock |
number |
requis
|
Quantité en stock |
alert_threshold |
number |
optionnel
|
Seuil d'alerte stock |
description |
string |
optionnel
|
Description (optionnel) |
calories |
number |
optionnel
|
Calories pour 100g |
proteins |
number |
optionnel
|
Protéines (g) |
carbs |
number |
optionnel
|
Glucides (g) |
fats |
number |
optionnel
|
Lipides (g) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_ingredient",
"arguments": {
"establishment_id": 1,
"name": "exemple",
"unit": "exemple",
"price_per_unit": 1,
"quantity_in_stock": 1
}
}
}'
Liste les ingrédients d'un établissement avec, par fiche : unité, price_per_unit, alert_threshold, quantity_in_stock, category_id + category_name, allergènes, produit d'achat par défaut. Filtres optionnels : recherche par nom, type.
ingredients.ingredients.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
search |
string |
optionnel
|
Recherche par nom (optionnel) |
type |
string — frais | surgele | sec | autres |
optionnel
|
Filtre par type (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_ingredients",
"arguments": {
"establishment_id": 1
}
}
}'
Retourne le détail d'un ingrédient, avec ses produits d'achat (purchase_products : marque, conditionnement, conversion, fournisseur, prix, produit par défaut).
ingredients.ingredients.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ingredient_id |
integer |
requis
|
ID de l'ingrédient |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_ingredient",
"arguments": {
"establishment_id": 1,
"ingredient_id": 1
}
}
}'
Modifie un ingrédient (nom, unité, prix, stock, seuil, catégorie, allergènes, valeurs nutritionnelles). Tout est vérifié avant la première écriture.
ingredients.ingredients.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
category_id |
integer | null |
optionnel
|
Catégorie d’ingrédient (id de list_categories type ingredient ; null = sans catégorie). |
ingredient_id |
integer |
requis
|
ID de l'ingrédient |
name |
string |
optionnel
|
Nouveau nom (optionnel) |
unit |
string |
optionnel
|
Unité (optionnel) |
cooking_coefficient |
number |
optionnel
|
Coefficient de transformation cuisson : poids_final = poids_brut × coefficient (1=neutre, >1 expansion, <1 perte). Optionnel. |
price_per_unit |
number |
optionnel
|
Prix unitaire (optionnel) |
quantity_in_stock |
number |
optionnel
|
Quantité en stock (optionnel) |
alert_threshold |
number |
optionnel
|
Seuil d'alerte (optionnel) |
description |
string |
optionnel
|
Description (optionnel) |
calories |
number |
optionnel
|
Calories (optionnel) |
proteins |
number |
optionnel
|
Protéines (optionnel) |
carbs |
number |
optionnel
|
Glucides (optionnel) |
fats |
number |
optionnel
|
Lipides (optionnel) |
allergens |
array<integer | string> |
optionnel
|
Allergènes (liste FERMÉE, table allergens : 1 Gluten, 2 Crustacés, 3 Œufs, 4 Poisson, 5 Arachides, 6 Soja, 7 Lait, 8 Fruits à coque, 9 Céleri, 10 Moutarde, 11 Graines de sésame, 12 Anhydride sulfureux et sulfites, 13 Lupin, 14 Mollusques). Ids ou noms (accents et casse ignorés). REMPLACE la liste ; [] = aucun allergène. |
copy_from_dish_id |
integer |
optionnel
|
Reprendre la photo d’un PLAT du restaurant (fichier recopié, aucune génération IA, aucune facturation). confirm:true si la fiche a déjà une photo. |
copy_from_ingredient_id |
integer |
optionnel
|
Reprendre la photo d’un INGRÉDIENT du restaurant (même règle). |
copy_from_recipe_id |
integer |
optionnel
|
Reprendre la photo d’une RECETTE du restaurant (même règle). |
copy_from_product_id |
integer |
optionnel
|
Reprendre la photo d’un PRODUIT du restaurant (même règle). |
image_url |
string |
optionnel
|
PHOTO depuis une adresse https:// PUBLIQUE et DIRECTE vers le fichier (Canva, bibliothèque RapidoCMS, site du client) : téléchargée, contrôlée (JPEG/PNG/WebP/GIF, 8 Mo max, jamais un réseau interne) puis stockée chez FoodEatUp. Aucune facturation. confirm:true si la fiche a déjà une photo. Exclusif avec image_action et copy_from_*. |
image_action |
string — generate | edit |
optionnel
|
PHOTO de la fiche : generate = nouvelle image IA, edit = retouche la photo ACTUELLE. Remplace la photo existante (irréversible) : exige confirm:true. |
image_instruction |
string |
optionnel
|
Avec generate : ce que la photo doit montrer (défaut : nom + description de la fiche). Avec edit : ce qu'il faut changer, ex. « enlève le fond », « plus lumineux ». |
confirm |
boolean |
optionnel
|
Obligatoire dès que image_action est fourni : remplacer la photo est irréversible. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_ingredient",
"arguments": {
"establishment_id": 1,
"ingredient_id": 1
}
}
}'
Supprime un ingrédient d'un établissement. Action irréversible.
ingredients.ingredients.delete
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ingredient_id |
integer |
requis
|
ID de l'ingrédient |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_ingredient",
"arguments": {
"establishment_id": 1,
"ingredient_id": 1
}
}
}'
Modifie plusieurs ingrédients en une fois : `items` [{ingredient_id, …}] ou `ingredient_ids` + `set`. Champs : category_id, price_per_unit, unit, alert_threshold, cooking_coefficient, allergens (ids ou noms des 14 allergènes, REMPLACE la liste). TOUT ou RIEN, aperçu sans confirm:true, 500 ingrédients maximum.
ingredients.ingredients.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
items |
array<object> |
optionnel
|
|
ingredient_ids |
array<integer> |
optionnel
|
|
set |
object |
optionnel
|
|
confirm |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bulk_update_ingredients",
"arguments": {
"establishment_id": 1
}
}
}'
Recherche un code-barres (EAN/GTIN 8, 12, 13 ou 14 chiffres, clé de contrôle vérifiée) : dans le catalogue du restaurant d’abord, puis sur OpenFoodFacts. Chaque champ indique sa source (catalogue | openfoodfacts) ; une donnée du catalogue n’est jamais remplacée par OpenFoodFacts. Lecture seule.
ingredients.ingredients.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ean |
string |
requis
|
Code-barres, espaces acceptés |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lookup_ean",
"arguments": {
"establishment_id": 1,
"ean": "exemple"
}
}
}'
Complète un ingrédient avec OpenFoodFacts à partir de son code-barres, UNIQUEMENT sur les champs vides : ce que le restaurant a saisi n’est jamais écrasé (listé dans kept). Renvoie filled et kept.
ingredients.ingredients.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ingredient_id |
integer |
requis
|
|
ean |
string |
optionnel
|
Facultatif si l’ingrédient a déjà un code-barres |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "fill_ingredient_from_ean",
"arguments": {
"establishment_id": 1,
"ingredient_id": 1
}
}
}'
Carte & plats
20 outils
CADENCIER d'un fournisseur : une ligne par produit, une colonne par jour de livraison. Chaque ligne : ingrédient relié, stock/seuil, contenance, conditionnement et prix du colis, plats de la carte qui consomment l'ingrédient (utilise_par), consommation journalière (ventes réglées 28 j), et par jour : colis habituels (mémoire), colis proposés jusqu'à la livraison suivante, ce qui est déjà en liste de courses (deja). Sans fournisseur_id : le premier fournisseur, avec la liste de tous (fournisseurs). Lecture seule.
carte.dishes.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
fournisseur_id |
integer |
optionnel
|
Fournisseur (list_suppliers). Défaut : le premier. |
semaine |
string |
optionnel
|
Un jour de la semaine voulue, YYYY-MM-DD (défaut : cette semaine). |
plat_id |
integer |
optionnel
|
Ne garder que les produits consommés par ce plat. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_cadencier",
"arguments": {
"establishment_id": 1
}
}
}'
Portions d'un plat suivi : solde, portions encore vendables aujourd'hui (solde − portions tenues par les notes en cours), armé ou non (alimenté aujourd'hui), et les derniers mouvements. Sans dish_id : tous les plats suivis.
carte.dishes.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
dish_id |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_dish_portions",
"arguments": {
"establishment_id": 1
}
}
}'
Suivi des portions d'un plat : activer / désactiver (suivi), portions consommées par vente (grand format = 2), seuil d'alerte, et/ou INVENTAIRE (count : « j'en compte 12 »), ou PERTE (loss + motif). Tant que le compteur n'est pas alimenté dans la journée (production ou inventaire), le plat se vend librement.
carte.dishes.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
dish_id |
integer |
requis
|
|
suivi |
boolean |
optionnel
|
|
portions_par_vente |
number |
optionnel
|
|
seuil_alerte |
number |
optionnel
|
|
count |
number |
optionnel
|
Inventaire : nombre de portions comptées |
loss |
number |
optionnel
|
Perte : portions jetées (casse, DLC, repas du personnel…) |
motif |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_dish_portions",
"arguments": {
"establishment_id": 1,
"dish_id": 1
}
}
}'
Liste les plats de la carte d'un établissement : prix TTC, catégorie, nature de TVA (tva_nature) et taux effectifs sur place / à emporter, photo (has_image, image_url), temps de préparation.
carte.dishes.view
| Paramètre | Type | | Description |
with_ingredients |
boolean |
optionnel
|
Inclure la composition de chaque plat (ingrédient, quantité, unité). |
establishment_id |
integer |
requis
|
ID de l'établissement |
active |
boolean |
optionnel
|
Filtrer par statut actif (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_dishes",
"arguments": {
"establishment_id": 1
}
}
}'
Ajoute un plat à la carte d'un établissement, avec sa composition (ingredients) et sa photo (image_url) si fournies. Sans prep_time, reprend le temps le plus fréquent de la catégorie (sinon du restaurant, sinon 10 min).
carte.dishes.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
name |
string |
requis
|
Nom du plat |
price |
number |
requis
|
Prix |
tva_nature |
string — immediate | conservable | alcohol | exonere |
optionnel
|
Nature TVA : immediate=10% (plat à consommation immédiate), conservable=10% sur place/5,5% emporté (emballé/sous vide), alcohol=20% (boisson alcoolisée). Défaut immediate. |
description |
string |
optionnel
|
Description (optionnel) |
category_id |
integer |
optionnel
|
Catégorie (optionnel) |
prep_time |
integer |
optionnel
|
Temps de préparation en minutes (optionnel) |
portions |
integer |
optionnel
|
Nombre de portions (optionnel) |
active |
boolean |
optionnel
|
Actif (défaut : true) |
ingredients |
array<object> |
optionnel
|
COMPOSITION du plat — REMPLACE toute la composition actuelle (comme l'écran Carte) ; [] = vider. Une ligne par ingrédient : {ingredient_id (id de list_ingredients) OU name (nom exact d'un ingrédient de la maison), quantity (quantité par portion), unit (optionnel : unité de l'ingrédient par défaut, ex. g, kg, cl, pièce)}. TOUT ou RIEN : une ligne invalide et rien n'est écrit, l'erreur liste chaque ligne. |
recipe_id |
integer | string | null |
optionnel
|
Fiche recette de la maison reliée au plat (id de list_recipes, « recipe_9050 » accepté). Sert de composition quand le plat n’a pas d’ingrédients propres : les plans de production du plat reprennent alors les ingrédients de la recette. null = délier (optionnel). |
image_url |
string |
optionnel
|
Photo du plat depuis une adresse https:// publique et directe (téléchargée et stockée chez FoodEatUp, 8 Mo max). Vérifiée AVANT la création : un lien invalide et le plat n’est pas créé. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_dish",
"arguments": {
"establishment_id": 1,
"name": "exemple",
"price": 1
}
}
}'
Crée une catégorie de PLAT (carte / vitrine), éventuellement comme sous-catégorie (2 niveaux max via parent_id ou parent_name). Apparaît dans la carte des plats et la vitrine.
carte.categories.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
name |
string |
requis
|
Nom de la catégorie de plat |
parent_id |
integer |
optionnel
|
ID de la catégorie parente (sous-catégorie). Optionnel. |
parent_name |
string |
optionnel
|
Nom de la catégorie parente (alternative à parent_id). Optionnel. |
description |
string |
optionnel
|
Description (optionnel) |
show_on_storefront |
boolean |
optionnel
|
Visible sur la vitrine (défaut true) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_dish_category",
"arguments": {
"establishment_id": 1,
"name": "exemple"
}
}
}'
Modifie une catégorie de PLAT : name, parent_id (null = remonter au premier niveau ; 2 niveaux max, pas de cycle), description, show_on_storefront. Journalisée (qui, quand, avant → après).
carte.categories.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
category_id |
integer |
requis
|
ID de la catégorie de plat (list_dish_categories) |
name |
string |
optionnel
|
|
parent_id |
integer | null |
optionnel
|
Catégorie parente ; null = premier niveau |
description |
string | null |
optionnel
|
|
show_on_storefront |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_dish_category",
"arguments": {
"establishment_id": 1,
"category_id": 1
}
}
}'
Supprime une catégorie de PLAT. REFUSÉ si elle contient des plats actifs, sauf reassign_to (catégorie du même restaurant où les déplacer). Ses sous-catégories remontent au premier niveau, ses rattachements de cuissons/suppléments sont retirés, la suppression est journalisée. confirm:true obligatoire — sans lui, l’outil décrit ce qui serait fait.
carte.categories.delete
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
category_id |
integer |
requis
|
|
reassign_to |
integer |
optionnel
|
Catégorie qui reçoit les plats |
confirm |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_dish_category",
"arguments": {
"establishment_id": 1,
"category_id": 1
}
}
}'
Liste les catégories de PLATS (carte / vitrine / caisse) — à ne pas confondre avec list_categories (catégories d'ingrédients et de produits). Donne id, nom, parent (2 niveaux), visibilité vitrine, ordre et nombre de plats : à consulter AVANT create_dish_category pour ne pas créer de doublon.
carte.dishes.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_dish_categories",
"arguments": {
"establishment_id": 1
}
}
}'
Liste les groupes d'OPTIONS de la carte (cuissons, accompagnements, suppléments payants, retraits) avec leurs choix, prix et rattachements (catégories / plats). Les mêmes groupes servent la caisse, la borne, le QR de table et la boutique en ligne.
carte.dishes.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_option_groups",
"arguments": {
"establishment_id": 1
}
}
}'
Crée (sans group_id) ou modifie (avec group_id) un groupe d'options : ex. « Sirops » supplément +0,50 €, « Lait » au choix, « Cuisson » obligatoire. À préférer aux faux plats « Supplément … » : le supplément suit alors le plat en caisse, en cuisine et sur le ticket. Les choix absents d'une modification sont DÉSACTIVÉS, jamais supprimés. Rattache ensuite le groupe avec link_option_group.
carte.dishes.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
group_id |
integer |
optionnel
|
Groupe à modifier (absent = création). |
name |
string |
requis
|
Nom affiché, ex. « Sirops », « Lait végétal ». |
type |
string — choix | supplement | retrait |
requis
|
choix = on en prend un (cuisson, accompagnement) ; supplement = ajout, souvent payant ; retrait = « sans … » (toujours gratuit, jamais obligatoire). |
min |
integer |
optionnel
|
Nombre minimum de choix (1 = obligatoire, 0 = facultatif). Défaut 0. |
max |
integer | null |
optionnel
|
Nombre maximum de choix. Absent ou null = SANS LIMITE (ex. suppléments cumulables). |
items |
array<object> |
requis
|
Choix du groupe : [{label, price_delta (€ TTC ajoutés, défaut 0), id (pour modifier un choix existant)}]. 40 maximum. |
active |
boolean |
optionnel
|
false = désactiver le groupe (il disparaît des écrans ; jamais supprimé). |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "save_option_group",
"arguments": {
"establishment_id": 1,
"name": "exemple",
"type": "choix",
"items": [
{
"label": "exemple"
}
]
}
}
}'
Rattache un groupe d'options à des CATÉGORIES de plats (hérité par tous leurs plats) et/ou à des PLATS. mode:retire sur un plat efface un groupe hérité de sa catégorie (ex. pas de cuisson sur le tartare). remove:true détache. Tout est vérifié avant écriture : une cible d'un autre restaurant et rien n'est écrit.
carte.dishes.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
group_id |
integer |
requis
|
|
category_ids |
array<integer> |
optionnel
|
Catégories de plats (list_dish_categories). |
dish_ids |
array<integer> |
optionnel
|
Plats (list_dishes). |
mode |
string — ajoute | retire |
optionnel
|
Défaut ajoute ; retire = uniquement sur des plats. |
min_override |
integer |
optionnel
|
Minimum propre à ces cibles (optionnel). |
max_override |
integer |
optionnel
|
Maximum propre à ces cibles (optionnel). |
remove |
boolean |
optionnel
|
true = détacher le groupe de ces cibles. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "link_option_group",
"arguments": {
"establishment_id": 1,
"group_id": 1
}
}
}'
Pose la PHOTO de plusieurs plats depuis des adresses https:// publiques et directes : items [{dish_id, image_url}], 50 par appel. Chaque ligne est traitée seule (un lien cassé n'empêche pas les autres) et la réponse donne le résultat LIGNE PAR LIGNE. Un plat qui a déjà une photo n'est remplacé qu'avec confirm:true. Aucune facturation.
carte.dishes.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
items |
array<object> |
requis
|
|
confirm |
boolean |
optionnel
|
true = remplacer aussi les photos existantes. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bulk_update_dish_images",
"arguments": {
"establishment_id": 1,
"items": [
{
"dish_id": 1,
"image_url": "exemple"
}
]
}
}
}'
Liste les formules (menus à prix fixe) telles que la CAISSE les vend : étapes, plats au choix, supplément, et « vendable » avec la raison sinon (ex. étape sans plat relié — formule de brochure créée par import_storefront_menu).
carte.dishes.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_formules",
"arguments": {
"establishment_id": 1
}
}
}'
Crée (sans formule_id) ou remplace (avec formule_id) une formule VENDABLE en caisse : prix fixe + étapes (ex. « Sando », « Boisson », « Dessert ») dont chaque choix est un PLAT de la carte. À préférer à un plat « Menu … » : la caisse écrit une ligne PAR PLAT et répartit le prix au prorata, chaque composant gardant SA TVA (boisson fermée à 5,5 % à emporter, plat à 10 %, alcool à 20 %) — la ventilation est automatique. Remplacer désactive les anciennes étapes (l'historique des ventes reste lisible).
carte.dishes.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
formule_id |
integer |
optionnel
|
Formule à remplacer (absent = création). |
title |
string |
requis
|
Nom, ex. « Formule Sando + Boisson ». |
subtitle |
string |
optionnel
|
|
price |
number |
requis
|
Prix TTC de la formule. |
steps |
array<object> |
requis
|
Étapes dans l'ordre : [{title, min (défaut 1), max (défaut = min), choices: [{dish_id, price_delta (supplément € TTC, défaut 0)}]}]. |
active |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "save_formule",
"arguments": {
"establishment_id": 1,
"title": "exemple",
"price": 1,
"steps": [
{
"title": "exemple",
"choices": []
}
]
}
}
}'
Modifie un plat de la carte d'un établissement, y compris sa COMPOSITION : ingredients (remplace tout), ingredients_add (ajoute/met à jour), ingredients_remove (retire).
carte.dishes.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
dish_id |
integer |
requis
|
ID du plat |
name |
string |
optionnel
|
Nouveau nom (optionnel) |
price |
number |
optionnel
|
Nouveau prix (optionnel) |
tva_nature |
string — immediate | conservable | alcohol | exonere |
optionnel
|
Nature TVA : immediate=10%, conservable=10/5,5%, alcohol=20% (optionnel). |
description |
string |
optionnel
|
Description (optionnel) |
category_id |
integer |
optionnel
|
Catégorie (optionnel) |
prep_time |
integer |
optionnel
|
Temps de préparation (optionnel) |
portions |
integer |
optionnel
|
Portions (optionnel) |
active |
boolean |
optionnel
|
Actif (optionnel) |
ingredients |
array<object> |
optionnel
|
COMPOSITION du plat — REMPLACE toute la composition actuelle (comme l'écran Carte) ; [] = vider. Une ligne par ingrédient : {ingredient_id (id de list_ingredients) OU name (nom exact d'un ingrédient de la maison), quantity (quantité par portion), unit (optionnel : unité de l'ingrédient par défaut, ex. g, kg, cl, pièce)}. TOUT ou RIEN : une ligne invalide et rien n'est écrit, l'erreur liste chaque ligne. |
ingredients_add |
array<object> |
optionnel
|
AJOUTE ou met à jour des lignes SANS retirer les autres (même format que ingredients). Un ingrédient déjà présent voit sa quantité/unité remplacée. |
ingredients_remove |
array<integer | string> |
optionnel
|
Retire ces ingrédients de la composition (ids de list_ingredients ou noms exacts). |
recipe_id |
integer | string | null |
optionnel
|
Fiche recette de la maison reliée au plat (id de list_recipes, « recipe_9050 » accepté). Sert de composition quand le plat n’a pas d’ingrédients propres : les plans de production du plat reprennent alors les ingrédients de la recette. null = délier (optionnel). |
copy_from_dish_id |
integer |
optionnel
|
Reprendre la photo d’un PLAT du restaurant (fichier recopié, aucune génération IA, aucune facturation). confirm:true si la fiche a déjà une photo. |
copy_from_ingredient_id |
integer |
optionnel
|
Reprendre la photo d’un INGRÉDIENT du restaurant (même règle). |
copy_from_recipe_id |
integer |
optionnel
|
Reprendre la photo d’une RECETTE du restaurant (même règle). |
copy_from_product_id |
integer |
optionnel
|
Reprendre la photo d’un PRODUIT du restaurant (même règle). |
image_url |
string |
optionnel
|
PHOTO depuis une adresse https:// PUBLIQUE et DIRECTE vers le fichier (Canva, bibliothèque RapidoCMS, site du client) : téléchargée, contrôlée (JPEG/PNG/WebP/GIF, 8 Mo max, jamais un réseau interne) puis stockée chez FoodEatUp. Aucune facturation. confirm:true si la fiche a déjà une photo. Exclusif avec image_action et copy_from_*. |
image_action |
string — generate | edit |
optionnel
|
PHOTO de la fiche : generate = nouvelle image IA, edit = retouche la photo ACTUELLE. Remplace la photo existante (irréversible) : exige confirm:true. |
image_instruction |
string |
optionnel
|
Avec generate : ce que la photo doit montrer (défaut : nom + description de la fiche). Avec edit : ce qu'il faut changer, ex. « enlève le fond », « plus lumineux ». |
confirm |
boolean |
optionnel
|
Obligatoire dès que image_action est fourni : remplacer la photo est irréversible. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_dish",
"arguments": {
"establishment_id": 1,
"dish_id": 1
}
}
}'
Modifie plusieurs plats en une fois : soit `items` (une ligne par plat, valeurs propres à chacun, ex. des prix), soit `dish_ids` + `set` (la même valeur pour tous, ex. tva_nature). Champs : price, tva_nature, category_id, active. TOUT ou RIEN : une seule ligne invalide et rien n’est écrit, l’erreur liste chaque ligne refusée. Sans confirm:true, renvoie l’aperçu (avant → après) sans rien écrire. 500 plats maximum.
carte.dishes.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
items |
array<object> |
optionnel
|
[{dish_id, price?, tva_nature?, category_id?, active?}] |
dish_ids |
array<integer> |
optionnel
|
Plats auxquels appliquer `set` |
set |
object |
optionnel
|
{price?, tva_nature?, category_id?, active?} |
confirm |
boolean |
optionnel
|
true pour écrire ; absent = aperçu |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bulk_update_dishes",
"arguments": {
"establishment_id": 1
}
}
}'
Supprime un plat de la carte d'un établissement. Action irréversible.
carte.dishes.delete
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
dish_id |
integer |
requis
|
ID du plat |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_dish",
"arguments": {
"establishment_id": 1,
"dish_id": 1
}
}
}'
Carte des VINS & boissons ÉDITORIALE de la vitrine (appellation, millésime, prix verre/bouteille — saisie par upsert_beverage_item). Ce n'est PAS la liste des boissons vendues : celles-ci sont des plats (list_dishes, catégories « Boissons »). Réponse : categories (groupées), count, note.
carte.dishes.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_beverages",
"arguments": {
"establishment_id": 1
}
}
}'
Équipe (RH)
9 outils
Liste tous les employés d'un établissement.
rh.employees.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_employees",
"arguments": {
"establishment_id": 1
}
}
}'
Crée un nouvel employé pour un établissement avec son planning optionnel.
rh.employees.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
first_name |
string |
requis
|
Prénom |
last_name |
string |
requis
|
Nom de famille |
email |
string |
requis
|
Email |
phone_number |
string |
requis
|
Numéro de téléphone |
role |
string |
requis
|
Rôle (obligatoire) : un rôle type — gerant, chef_cuisine, cuisinier, plongeur, serveur, barman, hote_caisse, responsable_haccp, marketing, comptable — ou le nom exact d’un rôle déjà créé dans le restaurant. Un rôle inconnu est refusé (aucun rôle par défaut). |
schedule |
object |
optionnel
|
Planning hebdomadaire (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_employee",
"arguments": {
"establishment_id": 1,
"first_name": "exemple",
"last_name": "exemple",
"email": "exemple",
"phone_number": "exemple",
"role": "exemple"
}
}
}'
Retourne les détails complets d'un employé (profil, rôle, planning, contrat).
rh.employees.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
employee_id |
integer |
requis
|
ID de l'employé |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_employee",
"arguments": {
"establishment_id": 1,
"employee_id": 1
}
}
}'
Modifie les informations d'un employé (prénom, nom, email, téléphone, rôle).
rh.employees.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
employee_id |
integer |
requis
|
ID de l'employé |
first_name |
string |
optionnel
|
Nouveau prénom (optionnel) |
last_name |
string |
optionnel
|
Nouveau nom (optionnel) |
email |
string |
optionnel
|
Nouvel email (optionnel) |
phone_number |
string |
optionnel
|
Nouveau téléphone (optionnel) |
role |
string |
optionnel
|
Nouveau rôle (optionnel) : gerant, chef_cuisine, cuisinier, plongeur, serveur, barman, hote_caisse, responsable_haccp, marketing, comptable, ou le nom exact d’un rôle du restaurant. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_employee",
"arguments": {
"establishment_id": 1,
"employee_id": 1
}
}
}'
Remplace entièrement le planning hebdomadaire d'un employé.
rh.employees.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
employee_id |
integer |
requis
|
ID de l'employé |
schedules |
array<object> |
requis
|
Tableau des créneaux horaires |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_employee_schedule",
"arguments": {
"establishment_id": 1,
"employee_id": 1,
"schedules": [
{
"day": "exemple",
"start_time": "exemple",
"end_time": "exemple"
}
]
}
}
}'
Supprime un employé et son planning. Action irréversible.
rh.employees.delete
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
employee_id |
integer |
requis
|
ID de l'employé |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_employee",
"arguments": {
"establishment_id": 1,
"employee_id": 1
}
}
}'
Liste les contrats des employés d'un établissement. Filtre : employé.
rh.contracts.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
employee_id |
integer |
optionnel
|
Filtrer par employé (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_employee_contracts",
"arguments": {
"establishment_id": 1
}
}
}'
Crée un contrat de travail pour un employé.
rh.contracts.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
employee_id |
integer |
requis
|
ID de l'employé |
type |
string |
optionnel
|
Type : CDI, CDD, Extra, Apprentissage, Stage (défaut : CDI) |
start_date |
string |
optionnel
|
Date de début YYYY-MM-DD (défaut : aujourd'hui) |
end_date |
string |
optionnel
|
Date de fin YYYY-MM-DD (optionnel, pour CDD) |
job_title |
string |
optionnel
|
Intitulé du poste (optionnel) |
base_salary |
number |
optionnel
|
Salaire de base (optionnel) |
weekly_hours |
number |
optionnel
|
Heures hebdomadaires (optionnel) |
days_per_week |
integer |
optionnel
|
Jours par semaine (optionnel) |
manager_name |
string |
optionnel
|
Nom du responsable (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_employee_contract",
"arguments": {
"establishment_id": 1,
"employee_id": 1
}
}
}'
Liste les documents administratifs des employés d'un établissement. Filtre : employé.
rh.documents.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
employee_id |
integer |
optionnel
|
Filtrer par employé (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_employee_documents",
"arguments": {
"establishment_id": 1
}
}
}'
Production
7 outils
Liste les plans de production sur une période donnée.
production.plans.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
start_date |
string |
optionnel
|
Début YYYY-MM-DD (défaut : aujourd'hui) |
end_date |
string |
optionnel
|
Fin YYYY-MM-DD (défaut : +30 jours) |
status |
string |
optionnel
|
Filtre par statut (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_production_plans",
"arguments": {
"establishment_id": 1
}
}
}'
Planifie une production (plat ou recette). Le statut est calculé d'après le STOCK : « Prêt à produire » (produit_livre) si tous les ingrédients sont en stock, sinon « En attente d'ingrédients » (en_cours_livraison) ; la réponse donne status_label et missing_ingredients.
production.plans.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
item_id |
string |
requis
|
ID du plat (entier) ou de la recette (préfixe "recipe_", ex: "recipe_12") |
planned_quantity |
integer |
requis
|
Quantité planifiée |
planned_date |
string |
requis
|
Date de production YYYY-MM-DD |
planned_time |
string |
optionnel
|
Heure HH:MM (défaut : 09:00) |
notes |
string |
optionnel
|
Notes optionnelles |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_production_plan",
"arguments": {
"establishment_id": 1,
"item_id": "exemple",
"planned_quantity": 1,
"planned_date": "exemple"
}
}
}'
Valide une production réalisée : retire les ingrédients (rapport « stock » : retirés / non retirés et pourquoi) et, si le plat est suivi en portions, ajoute les portions (rapport « portions »). Une production déjà validée n'est jamais appliquée deux fois (erreur « déjà validée »).
production.validation.validate
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
production_id |
integer |
requis
|
ID du plan de production |
produced_quantity |
integer |
requis
|
Quantité réellement produite |
temperature_log |
number |
optionnel
|
Température enregistrée (optionnel) |
notes |
string |
optionnel
|
Notes optionnelles |
portions |
number |
optionnel
|
Portions produites (recette : par défaut fournées × portions de la fiche) |
plat_id |
integer |
optionnel
|
Plat qui reçoit les portions, si plusieurs plats suivis utilisent la recette |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "validate_production",
"arguments": {
"establishment_id": 1,
"production_id": 1,
"produced_quantity": 1
}
}
}'
Retourne les ingrédients nécessaires pour un plan de production (avec statut suffisant/manquant).
production.plans.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
production_id |
integer |
requis
|
ID du plan de production |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_production_ingredients",
"arguments": {
"establishment_id": 1,
"production_id": 1
}
}
}'
Supprime un plan de production (et ses listes de courses et livraisons en attente). Refusé pour une production déjà réalisée : le stock a été déduit, c’est de l’historique. Exige confirm:true ; sans lui, l’outil décrit le plan qui serait supprimé.
production.plans.delete
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
production_id |
integer |
requis
|
ID du plan de production |
confirm |
boolean |
optionnel
|
Obligatoire : true |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_production_plan",
"arguments": {
"establishment_id": 1,
"production_id": 1
}
}
}'
Liste les ingrédients manquants pour les productions planifiées dans les prochains jours.
production.missing.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
days |
integer |
optionnel
|
Horizon en jours (défaut : 7) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_production_alerts",
"arguments": {
"establishment_id": 1
}
}
}'
Liste les plats/recettes les plus produits sur une période.
production.plans.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
days |
integer |
optionnel
|
Nombre de jours en arrière (défaut : 30) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_top_productions",
"arguments": {
"establishment_id": 1
}
}
}'
HACCP
27 outils
Liste les friteuses actives et leur état huile.
haccp.oil.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_fryers",
"arguments": {
"establishment_id": 1
}
}
}'
Consigne un test huile. Un contrôle visuel ne mesure pas les polaires. Action corrective obligatoire au seuil critique.
haccp.oil.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
equipment_id |
integer |
optionnel
|
|
equipment_label |
string |
optionnel
|
|
logged_at |
string |
optionnel
|
|
polar_pct |
number |
optionnel
|
|
method |
string — testeur | bandelette | visuel |
optionnel
|
|
visual_result |
string — acceptable | defavorable | indetermine |
optionnel
|
|
oil_temp |
number |
optionnel
|
|
volume_l |
number |
optionnel
|
|
oil_type |
string |
optionnel
|
|
notes |
string |
optionnel
|
|
corrective_action |
string |
optionnel
|
|
photo_url |
string |
optionnel
|
|
request_key |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_oil_test",
"arguments": {
"establishment_id": 1
}
}
}'
Consigne un remplacement huile : volume et type requis.
haccp.oil.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
equipment_id |
integer |
optionnel
|
|
equipment_label |
string |
optionnel
|
|
logged_at |
string |
optionnel
|
|
polar_pct |
number |
optionnel
|
|
method |
string — testeur | bandelette | visuel |
optionnel
|
|
visual_result |
string — acceptable | defavorable | indetermine |
optionnel
|
|
oil_temp |
number |
optionnel
|
|
volume_l |
number |
requis
|
|
oil_type |
string |
requis
|
|
notes |
string |
optionnel
|
|
corrective_action |
string |
optionnel
|
|
photo_url |
string |
optionnel
|
|
request_key |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_oil_change",
"arguments": {
"establishment_id": 1,
"volume_l": 1,
"oil_type": "exemple"
}
}
}'
Consigne une filtration, sans effacer une non-conformité.
haccp.oil.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
equipment_id |
integer |
optionnel
|
|
equipment_label |
string |
optionnel
|
|
logged_at |
string |
optionnel
|
|
polar_pct |
number |
optionnel
|
|
method |
string — testeur | bandelette | visuel |
optionnel
|
|
visual_result |
string — acceptable | defavorable | indetermine |
optionnel
|
|
oil_temp |
number |
optionnel
|
|
volume_l |
number |
optionnel
|
|
oil_type |
string |
optionnel
|
|
notes |
string |
optionnel
|
|
corrective_action |
string |
optionnel
|
|
photo_url |
string |
optionnel
|
|
request_key |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_oil_filtration",
"arguments": {
"establishment_id": 1
}
}
}'
Consulte le carnet d’huile, jusqu’à 100 opérations, pagination par offset.
haccp.oil.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
equipment_id |
integer |
optionnel
|
|
offset |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_oil_logs",
"arguments": {
"establishment_id": 1
}
}
}'
Démarre un refroidissement ou une remise. Référence de lot unique et températures à cœur requises.
haccp.thermal_cycles.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
kind |
string — refroidissement | remise |
requis
|
|
equipment_id |
integer |
optionnel
|
|
product_name |
string |
requis
|
|
lot_ref |
string |
requis
|
|
quantity |
number |
requis
|
|
unit |
string |
requis
|
|
started_at |
string |
optionnel
|
|
start_temp |
number |
requis
|
|
parent_cycle_id |
integer |
optionnel
|
|
production_plan_id |
integer |
optionnel
|
|
plat_id |
integer |
optionnel
|
|
recipe_id |
integer |
optionnel
|
|
notes |
string |
optionnel
|
|
request_key |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "start_thermal_cycle",
"arguments": {
"establishment_id": 1,
"kind": "refroidissement",
"product_name": "exemple",
"lot_ref": "exemple",
"quantity": 1,
"unit": "exemple",
"start_temp": 1
}
}
}'
Ajoute un relevé à un cycle en cours.
haccp.thermal_cycles.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
cycle_id |
integer |
requis
|
|
temp |
number |
requis
|
|
read_at |
string |
optionnel
|
|
request_key |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_thermal_reading",
"arguments": {
"establishment_id": 1,
"cycle_id": 1,
"temp": 1
}
}
}'
Clôture un cycle. Le serveur calcule sa conformité ; un écart impose un correctif.
haccp.thermal_cycles.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
cycle_id |
integer |
requis
|
|
end_temp |
number |
requis
|
|
ended_at |
string |
optionnel
|
|
corrective_action |
string |
optionnel
|
|
destroyed |
boolean |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "close_thermal_cycle",
"arguments": {
"establishment_id": 1,
"cycle_id": 1,
"end_temp": 1,
"destroyed": true
}
}
}'
Liste les cycles et leur courbe de relevés (100 maximum par page).
haccp.thermal_cycles.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
|
offset |
integer |
optionnel
|
|
status |
string — en_cours | conforme | non_conforme | abandonne |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_thermal_cycles",
"arguments": {
"establishment_id": 1
}
}
}'
Liste les fiches de réception HACCP d'un établissement.
haccp.reception.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_haccp_reception",
"arguments": {
"establishment_id": 1
}
}
}'
Enregistre une mesure de température d'équipement (HACCP).
haccp.temperatures.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
equipment_id |
integer |
requis
|
ID de l'équipement |
temperature |
number |
requis
|
Température en degrés Celsius |
measured_at |
string |
optionnel
|
Date/heure ISO 8601 (optionnel, défaut = maintenant) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_temperature",
"arguments": {
"establishment_id": 1,
"equipment_id": 1,
"temperature": 1
}
}
}'
Liste les relevés de températures HACCP d'un établissement. Filtres optionnels : période, équipement, type.
haccp.temperatures.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
start_date |
string |
optionnel
|
Début période YYYY-MM-DD (optionnel) |
end_date |
string |
optionnel
|
Fin période YYYY-MM-DD (optionnel) |
equipment_id |
integer |
optionnel
|
Filtre par équipement (optionnel) |
type |
string |
optionnel
|
Type d'équipement (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_haccp_temperatures",
"arguments": {
"establishment_id": 1
}
}
}'
Crée un contrôle de réception HACCP manuel (arrivée fournisseur).
haccp.reception.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date_controle |
string |
requis
|
Date du contrôle YYYY-MM-DD |
heure_controle |
string |
requis
|
Heure HH:MM |
etat_livraison |
string — conforme | non_conforme |
requis
|
État de la livraison |
fournisseur_id |
integer |
optionnel
|
ID fournisseur (optionnel) |
fournisseur_nom |
string |
optionnel
|
Nom fournisseur libre (optionnel) |
reference_bl |
string |
optionnel
|
Référence BL (optionnel) |
temperature_produits_frais |
number |
optionnel
|
Température produits frais en °C (optionnel) |
commentaires |
string |
optionnel
|
Commentaires (optionnel) |
non_conformites |
array<mixed> |
optionnel
|
Liste des non-conformités si etat=non_conforme |
validate |
boolean |
optionnel
|
Valider immédiatement (défaut : false) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_haccp_reception",
"arguments": {
"establishment_id": 1,
"date_controle": "exemple",
"heure_controle": "exemple",
"etat_livraison": "conforme"
}
}
}'
Liste les étiquettes HACCP (DLC) d'un établissement. Filtre : statut.
haccp.labels.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string |
optionnel
|
Statut : created, printed, validated, used (optionnel) |
limit |
integer |
optionnel
|
Nombre max (défaut : 100) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_haccp_labels",
"arguments": {
"establishment_id": 1
}
}
}'
Crée une étiquette HACCP (DLC). Le numéro de lot est généré automatiquement si absent.
haccp.labels.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ingredient_name |
string |
requis
|
Nom du produit/ingrédient |
quantity |
integer |
optionnel
|
Quantité (optionnel) |
unit |
string |
optionnel
|
Unité (optionnel) |
dlc |
string |
optionnel
|
Date limite de consommation YYYY-MM-DD (optionnel) |
type |
string |
optionnel
|
Type : Fait/ouvert, Prêt à manger, Surgelé, Frais, Vente (défaut : Frais) |
storage_location |
string |
optionnel
|
Lieu de stockage (optionnel) |
temperature |
number |
optionnel
|
Température de stockage °C (optionnel) |
lot_number |
string |
optionnel
|
Numéro de lot (optionnel, auto-généré sinon) |
notes |
string |
optionnel
|
Notes (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_haccp_label",
"arguments": {
"establishment_id": 1,
"ingredient_name": "exemple"
}
}
}'
Liste les enregistrements de traçabilité HACCP d'un établissement.
haccp.tracability.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string |
optionnel
|
Statut : "complété", "non complété" (optionnel) |
limit |
integer |
optionnel
|
Nombre max (défaut : 100) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_haccp_tracabilite",
"arguments": {
"establishment_id": 1
}
}
}'
Crée un enregistrement de traçabilité HACCP.
haccp.tracability.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
type |
string |
optionnel
|
Type : simple, complete (défaut : simple) |
reference_type |
string |
optionnel
|
Type d'élément tracé : ingredient, plat, product, haccp (optionnel) |
reference_id |
integer |
optionnel
|
ID de l'élément tracé (optionnel) |
quantite |
string |
optionnel
|
Quantité (optionnel) |
dlc |
string |
optionnel
|
DLC YYYY-MM-DD (optionnel) |
lot |
string |
optionnel
|
Numéro de lot (optionnel) |
remarques |
string |
optionnel
|
Remarques (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_haccp_tracabilite",
"arguments": {
"establishment_id": 1
}
}
}'
Liste les modèles de checklist hygiène HACCP d'un établissement.
haccp.checklist.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
categorie |
string |
optionnel
|
Filtre par catégorie (optionnel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_hygiene_checklists",
"arguments": {
"establishment_id": 1
}
}
}'
Enregistre une validation de checklist hygiène pour un modèle donné.
haccp.checklist.validate
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
template_id |
integer |
requis
|
ID du modèle de checklist |
zone_controle |
string |
optionnel
|
Zone contrôlée (optionnel) |
reponses |
object |
optionnel
|
Réponses clé/valeur (ex: {"tenues_propres":"oui"}) |
commentaires |
string |
optionnel
|
Commentaires (optionnel) |
statut |
string |
optionnel
|
Statut (défaut : complete) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_hygiene_checklist_validation",
"arguments": {
"establishment_id": 1,
"template_id": 1
}
}
}'
Liste les zones de nettoyage (avec leurs postes) d'un établissement.
haccp.cleaning_plan.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_cleaning_zones",
"arguments": {
"establishment_id": 1
}
}
}'
Liste les actions de nettoyage réalisées d'un établissement. Filtres : période.
haccp.cleaning_plan.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date_from |
string |
optionnel
|
Début YYYY-MM-DD (optionnel) |
date_to |
string |
optionnel
|
Fin YYYY-MM-DD (optionnel) |
limit |
integer |
optionnel
|
Nombre max (défaut : 100) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_cleaning_actions",
"arguments": {
"establishment_id": 1
}
}
}'
Enregistre une action de nettoyage réalisée sur un poste.
haccp.cleaning_plan.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
poste_nettoyage_id |
integer |
requis
|
ID du poste de nettoyage |
commentaires |
string |
optionnel
|
Commentaires (optionnel) |
statut |
string |
optionnel
|
Statut (défaut : complete) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "record_cleaning_action",
"arguments": {
"establishment_id": 1,
"poste_nettoyage_id": 1
}
}
}'
Crée un équipement de suivi des températures (frigo, congélateur, chambre froide, cellule, four…).
haccp.temperatures.create
| Paramètre | Type | | Description |
kind |
string — froid_positif | froid_negatif | chaud | ambiant | friteuse | cellule | four | autre |
optionnel
|
|
temp_min |
number |
optionnel
|
|
temp_max |
number |
optionnel
|
|
capacity_l |
number |
optionnel
|
|
oil_type |
string |
optionnel
|
|
oil_alert_pct |
number |
optionnel
|
|
oil_max_pct |
number |
optionnel
|
|
check_interval_hours |
integer |
optionnel
|
|
oil_max_age_days |
integer |
optionnel
|
|
establishment_id |
integer |
requis
|
ID de l'établissement |
label |
string |
requis
|
Nom de l'équipement (ex. « Frigo pâtisserie ») |
type |
string |
optionnel
|
Type : frigo, congelateur, chambre_froide, cellule, four, autre |
emplacement |
string |
optionnel
|
Emplacement (cuisine, réserve…) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_equipment",
"arguments": {
"establishment_id": 1,
"label": "exemple"
}
}
}'
Crée un modèle de checklist hygiène (point de contrôle + liste de vérifications), utilisable ensuite par create_hygiene_checklist_validation.
haccp.checklist.validate
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
nom_point_controle |
string |
requis
|
Nom du point de contrôle (ex. « Ouverture cuisine ») |
categorie |
string — hygiene_personnel | etat_locaux |
optionnel
|
Catégorie (défaut : etat_locaux) |
description |
string |
optionnel
|
|
points_controle |
array<string> |
requis
|
Liste des vérifications (ex. ["Températures relevées", "Plans de travail désinfectés"]) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_hygiene_checklist",
"arguments": {
"establishment_id": 1,
"nom_point_controle": "exemple",
"points_controle": [
"exemple"
]
}
}
}'
Modifie un modèle de checklist hygiène (id de list_hygiene_checklists) : nom_point_controle, categorie (hygiene_personnel | etat_locaux), description, points_controle (REMPLACE la liste), points_add (ajoute à la fin), points_remove (retire par libellé exact), actif (false = retiré des validations futures). Les validations déjà enregistrées ne sont jamais modifiées. Tout est vérifié avant écriture.
haccp.checklist.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
template_id |
integer |
requis
|
|
nom_point_controle |
string |
optionnel
|
|
categorie |
string — hygiene_personnel | etat_locaux |
optionnel
|
|
description |
string | null |
optionnel
|
|
points_controle |
array<string> |
optionnel
|
|
points_add |
array<string> |
optionnel
|
|
points_remove |
array<string> |
optionnel
|
|
actif |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_hygiene_checklist",
"arguments": {
"establishment_id": 1,
"template_id": 1
}
}
}'
Crée une zone du plan de nettoyage avec ses postes (ex. zone « Cuisine » avec postes « Plans de travail », « Sols »).
haccp.cleaning_plan.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
nom_zone |
string |
requis
|
Nom de la zone (Cuisine, Salle, Réserve…) |
description |
string |
optionnel
|
|
postes |
array<string> |
requis
|
Postes de nettoyage de la zone |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_cleaning_zone",
"arguments": {
"establishment_id": 1,
"nom_zone": "exemple",
"postes": [
"exemple"
]
}
}
}'
Complète une fiche de traçabilité HACCP (statut « complété », quantité/remarques mises à jour).
haccp.tracability.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
tracabilite_id |
integer |
requis
|
|
quantite |
string |
optionnel
|
Quantité constatée (optionnel) |
remarques |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "complete_haccp_tracabilite",
"arguments": {
"establishment_id": 1,
"tracabilite_id": 1
}
}
}'
Finance
7 outils
Synthèse financière d'un établissement : CA facturé, encaissé, impayés, dépenses, marge sur une période.
finance.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date_from |
string |
optionnel
|
Début période YYYY-MM-DD (défaut : 1er jour du mois) |
date_to |
string |
optionnel
|
Fin période YYYY-MM-DD (défaut : aujourd'hui) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "finance_summary",
"arguments": {
"establishment_id": 1
}
}
}'
Statistiques de caisse sur une période (défaut 30 jours) : CA, tickets, panier moyen, couverts, marge estimée, CA par jour/heure/canal/mode/serveur/zone/table.
finance.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
from |
string |
optionnel
|
AAAA-MM-JJ |
to |
string |
optionnel
|
AAAA-MM-JJ |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_pos_analytics",
"arguments": {
"establishment_id": 1
}
}
}'
Meilleures ventes (CA, quantité, marge estimée) et flops de la carte (plats actifs les moins vendus, zéro vente inclus) sur une période.
finance.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
from |
string |
optionnel
|
|
to |
string |
optionnel
|
|
limit |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_top_flop_products",
"arguments": {
"establishment_id": 1
}
}
}'
Temps de table : durée moyenne et médiane d'occupation, rotations par table et par jour, sur une période.
finance.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
from |
string |
optionnel
|
|
to |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_table_turnover",
"arguments": {
"establishment_id": 1
}
}
}'
Taux de capture client : part des tickets rattachés à une fiche client, clients uniques, CA identifié.
finance.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
from |
string |
optionnel
|
|
to |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_loyalty_capture",
"arguments": {
"establishment_id": 1
}
}
}'
Objectifs de vente et challenges avec leur progression (réalisé, reste à faire, jours restants, en bonne voie, classement des serveurs).
finance.targets.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
running |
boolean |
optionnel
|
Uniquement les objectifs en cours |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_sales_targets",
"arguments": {
"establishment_id": 1
}
}
}'
Crée un objectif de vente ou un challenge (exige confirm:true après avoir résumé la cible au restaurateur). metric : revenue, tickets, average_ticket, covers, product_quantity (avec plat_id).
finance.targets.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
label |
string |
requis
|
|
metric |
string |
requis
|
|
target_value |
number |
requis
|
|
starts_on |
string |
requis
|
|
ends_on |
string |
requis
|
|
professional_id |
integer |
optionnel
|
|
plat_id |
integer |
optionnel
|
|
confirm |
boolean |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_sales_target",
"arguments": {
"establishment_id": 1,
"label": "exemple",
"metric": "exemple",
"target_value": 1,
"starts_on": "exemple",
"ends_on": "exemple",
"confirm": true
}
}
}'
Commandes, caisse & livraison
28 outils
Rupture du JOUR d'un ou plusieurs plats (« épuisé » / « de retour ») : le plat reste à la carte mais n'est plus vendu nulle part (caisse, QR de table, borne, boutique) et passe « épuisé » sur les menu boards. La rupture retombe seule à la bascule de journée (5 h par défaut). Pour retirer un plat de la carte durablement, utiliser update_dish active:false.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
dish_ids |
array<integer> |
requis
|
Plats concernés (list_dishes). |
sold_out |
boolean |
requis
|
true = épuisé aujourd'hui, false = de retour. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_dish_sold_out",
"arguments": {
"establishment_id": 1,
"dish_ids": [
1
],
"sold_out": true
}
}
}'
Liste les commandes (tous canaux : téléphone, agent vocal, sur place, vitrine, manuel). Filtres : statut, canal, date, open (notes en cours uniquement), table_name (« T6 »). Chaque commande porte le NOM de sa table (`table`) — ne jamais déduire une table de `table_id`. Pour l'addition ou l'état d'UNE table, préférer get_table_status.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
open |
boolean |
optionnel
|
true = seulement les commandes en cours (ni livrée ni annulée) |
table_name |
string |
optionnel
|
Nom de la table (« T6 », « table 6 ») |
status |
string |
optionnel
|
en_attente|confirmee|en_preparation|prete|livree|annulee |
channel |
string |
optionnel
|
manuel|telephone|vitrine|agent_vocal|sur_place|facture|devis |
date |
string |
optionnel
|
Filtrer par jour YYYY-MM-DD |
limit |
integer |
optionnel
|
Max résultats (défaut 50) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_orders",
"arguments": {
"establishment_id": 1
}
}
}'
Détail d'une commande (articles, totaux, facture/devis liés, table).
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
order_id |
integer |
requis
|
ID de la commande |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_order",
"arguments": {
"establishment_id": 1,
"order_id": 1
}
}
}'
Crée une commande À PARTIR DE LA CARTE et l'envoie en cuisine. Chaque ligne désigne un plat (dish_id, ou dish_name) et une quantité ; le PRIX et la TVA viennent de la carte, jamais de l'appelant. Refusée si aucun article, si un plat est inconnu, épuisé, sans prix, ou si une option obligatoire (cuisson…) manque — l'erreur dit quoi demander. Avec table_id, les plats rejoignent la note ouverte de la table. Article hors carte : name + unit_price (> 0), sans mélange avec des plats de la carte.
orders.online.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
items |
array<object> |
requis
|
Au moins une ligne |
service_mode |
string |
optionnel
|
sur_place (comptoir, défaut) | emporter | livraison |
table_id |
integer |
optionnel
|
Table (mode sur place) |
covers |
integer |
optionnel
|
Nombre de couverts |
customer_name |
string |
optionnel
|
|
customer_phone |
string |
optionnel
|
|
customer_address |
string |
optionnel
|
|
notes |
string |
optionnel
|
|
send_to_kitchen |
boolean |
optionnel
|
Défaut true |
channel |
string |
optionnel
|
Article hors carte seulement (défaut manuel) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_order",
"arguments": {
"establishment_id": 1,
"items": [
{
"quantity": 1
}
]
}
}
}'
Change le statut d'une commande (transitions vers l'avant uniquement ; une note salle non encaissée ne peut pas passer « livree » ; « annulee » exige reason). Répercute sur la facture/devis et la table.
orders.online.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
order_id |
integer |
requis
|
|
status |
string |
requis
|
confirmee|en_preparation|prete|livree|annulee |
reason |
string |
optionnel
|
Motif — obligatoire pour annulee |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_order_status",
"arguments": {
"establishment_id": 1,
"order_id": 1,
"status": "exemple"
}
}
}'
Solde et validité d'une carte cadeau par code.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
code |
string |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "check_gift_card",
"arguments": {
"establishment_id": 1,
"code": "exemple"
}
}
}'
Cartes cadeaux vendues (encaissé, soldes restants).
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_gift_cards",
"arguments": {
"establishment_id": 1
}
}
}'
Zones de livraison (frais, minimums, codes postaux).
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_delivery_zones",
"arguments": {
"establishment_id": 1
}
}
}'
Crée ou met à jour une zone de livraison.
orders.online.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
zone_id |
integer |
optionnel
|
|
name |
string |
requis
|
|
postal_codes |
array<string> |
optionnel
|
|
fee |
number |
optionnel
|
|
minimum_order |
number |
optionnel
|
|
estimated_minutes |
integer |
optionnel
|
|
active |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "upsert_delivery_zone",
"arguments": {
"establishment_id": 1,
"name": "exemple"
}
}
}'
Session de caisse en cours (fond, opérateur) + rapport X (CA, modes, TVA, remises).
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_pos_session",
"arguments": {
"establishment_id": 1
}
}
}'
Ouvre la caisse avec un fond initial. operator_id = employé ayant la permission caisse. register_id = poste de caisse (bar, salle…) ; omis, le poste par défaut est pris.
orders.online.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
operator_id |
integer |
requis
|
|
opening_float |
number |
requis
|
|
register_id |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "open_pos_session",
"arguments": {
"establishment_id": 1,
"operator_id": 1,
"opening_float": 1
}
}
}'
Clôture Z de la caisse : comptage espèces optionnel, écart calculé (exige confirm:true après avoir résumé le rapport X à l'opérateur). register_id = poste à clôturer ; omis, le poste par défaut.
orders.online.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
operator_id |
integer |
requis
|
|
counted_cash |
number |
optionnel
|
|
register_id |
integer |
optionnel
|
|
confirm |
boolean |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "close_pos_session",
"arguments": {
"establishment_id": 1,
"operator_id": 1,
"confirm": true
}
}
}'
Rapport X (session en cours) ou Z (session_id d'une session clôturée) : CA, ticket moyen, par mode, par opérateur, TVA, remises.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
session_id |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_pos_report",
"arguments": {
"establishment_id": 1
}
}
}'
Z CONSOLIDÉ d'une journée : total encaissé de la maison (toutes les caisses), détail par poste avec son écart, règlements, TVA, espèces. date au format AAAA-MM-JJ ; omise, la journée en cours. Les ventes du site déjà payées en ligne sont données à part, jamais dans le total caisse.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_consolidated_pos_report",
"arguments": {
"establishment_id": 1
}
}
}'
Encaisse une note (paiement partiel ou total) : espèces avec rendu (tendered), carte, titre_restaurant (jamais de rendu), cheque. La note est soldée quand le reste dû atteint 0.
orders.online.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
order_id |
integer |
requis
|
|
operator_id |
integer |
requis
|
|
method |
string — especes | carte | titre_restaurant | cheque |
requis
|
|
amount |
number |
requis
|
|
tendered |
number |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "record_pos_payment",
"arguments": {
"establishment_id": 1,
"order_id": 1,
"operator_id": 1,
"method": "especes",
"amount": 1
}
}
}'
Paiements d'une note (modes, montants, rendu, reste dû).
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
order_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_pos_payments",
"arguments": {
"establishment_id": 1,
"order_id": 1
}
}
}'
Happy hours configurées (jours, créneau, remise, périmètre).
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_happy_hours",
"arguments": {
"establishment_id": 1
}
}
}'
Crée ou met à jour une happy hour (days ISO 1-7, HH:MM, remise 1-90 %, scope all|category|plat).
orders.online.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
happy_hour_id |
integer |
optionnel
|
|
name |
string |
requis
|
|
days |
array<integer> |
requis
|
|
start_time |
string |
requis
|
|
end_time |
string |
requis
|
|
discount_percent |
integer |
requis
|
|
scope_type |
string — all | category | plat |
optionnel
|
|
scope_ids |
array<integer> |
optionnel
|
|
active |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "upsert_happy_hour",
"arguments": {
"establishment_id": 1,
"name": "exemple",
"days": [
1
],
"start_time": "exemple",
"end_time": "exemple",
"discount_percent": 1
}
}
}'
Ardoises clients (soldes dus, statut) — le règlement se fait en caisse.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_pos_tabs",
"arguments": {
"establishment_id": 1
}
}
}'
Terminaux de paiement (TPE Smile&Pay) : libellé, îlot, actif/défaut, dernière utilisation. Jamais de clé API dans la réponse.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_payment_terminals",
"arguments": {
"establishment_id": 1
}
}
}'
Encaissements TPE (statut, montant, pourboire, terminal, rapprochement) — filtrables par jour et statut.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date |
string |
optionnel
|
YYYY-MM-DD (défaut aujourd'hui) |
status |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_terminal_payments",
"arguments": {
"establishment_id": 1
}
}
}'
Rapprochement Smile&Pay d'un jour : encaissés/échoués/abandonnés, total, pourboires, paiements non rapprochés à vérifier.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date |
string |
optionnel
|
YYYY-MM-DD (défaut aujourd'hui) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_smilepay_reconciliation",
"arguments": {
"establishment_id": 1
}
}
}'
Crée un lien de paiement sécurisé Smile&Pay (page hébergée) pour un montant, optionnellement rattaché à une commande ou une réservation, et l'envoie par SMS ou WhatsApp au client si un téléphone est fourni. Retourne l'URL courte à transmettre au client.
orders.online.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
optionnel
|
ID de l'établissement |
amount |
number |
requis
|
Montant TTC en euros (0,50 à 20 000) |
description |
string |
requis
|
Libellé vu par le client (ex. « Commande CMD-2026-00045 ») |
order_id |
integer |
optionnel
|
ID de commande boutique à rattacher (optionnel) |
reservation_id |
integer |
optionnel
|
ID de réservation à rattacher (acompte, optionnel) |
customer_name |
string |
optionnel
|
|
customer_phone |
string |
optionnel
|
Téléphone du client (E.164 ou national FR) |
send_via |
string — sms | whatsapp | none |
optionnel
|
Canal d'envoi (défaut none = juste créer) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_payment_link",
"arguments": {
"amount": 1,
"description": "exemple"
}
}
}'
Statut d'un lien de paiement (en attente / payé / expiré / refusé) par son code court ou sa référence.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
optionnel
|
ID de l'établissement |
code |
string |
requis
|
Code court (ex. AB7KQ2XZ) ou transRef |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_payment_link_status",
"arguments": {
"code": "exemple"
}
}
}'
État du connecteur HubRise : connexion, location, plats sans sku_ref (bloqués au push), commandes du jour en attente côté plateformes.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_hubrise_status",
"arguments": {
"establishment_id": 1
}
}
}'
Liste les bornes de commande et tablettes de table : nom, mode, table, en ligne ou non, code d'appairage, commandes du jour, et le nombre de bornes permis par l'offre. Demande le pack Écrans & Borne.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lister_bornes",
"arguments": {
"establishment_id": 1
}
}
}'
État d'une borne : en ligne, dernier signal, version, terminal de paiement, et chiffres du jour (commandes payées, panier moyen, abandons, commandes en cours).
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
borne_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "etat_borne",
"arguments": {
"establishment_id": 1,
"borne_id": 1
}
}
}'
Commandes passées sur les bornes (50 au plus, les plus récentes d'abord) : numéro d'appel, statut, paiement, total TTC, borne. Filtres : borne_id, date (AAAA-MM-JJ, défaut aujourd'hui), statut.
orders.online.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
borne_id |
integer |
optionnel
|
|
date |
string |
optionnel
|
|
statut |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lister_commandes_borne",
"arguments": {
"establishment_id": 1
}
}
}'
Salle & réservations
24 outils
Liste les réservations de table. Filtres : statut, date.
salle.reservations.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string |
optionnel
|
en_attente|confirmee|installee|terminee|annulee|absent |
date |
string |
optionnel
|
Jour YYYY-MM-DD |
limit |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_reservations",
"arguments": {
"establishment_id": 1
}
}
}'
Vérifie la disponibilité d'un créneau : restaurant ouvert + tables libres (anti-double-booking).
salle.reservations.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date |
string |
requis
|
YYYY-MM-DD |
time |
string |
requis
|
HH:MM |
party_size |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "reservation_availability",
"arguments": {
"establishment_id": 1,
"date": "exemple",
"time": "exemple",
"party_size": 1
}
}
}'
Horaires d’ouverture de la semaine (plusieurs services par jour : midi, soir) et fermetures exceptionnelles à venir. Lecture seule : ne crée rien.
salle.reservations.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_opening_hours",
"arguments": {
"establishment_id": 1
}
}
}'
REMPLACE tous les horaires d’ouverture de la semaine. Chaque créneau = {day, service, start_time, end_time} ; plusieurs créneaux par jour autorisés (midi + soir) ; un service qui passe minuit (19:00 → 01:00) est accepté. Un jour ABSENT de la liste devient FERMÉ (ou passer {day, closed:true}). Deux créneaux qui se chevauchent le même jour sont refusés. Retourne les horaires précédents (previous_hours) pour pouvoir revenir en arrière. Ces horaires pilotent la disponibilité des réservations, le site et l’agent téléphonique.
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
hours |
array<object> |
requis
|
Créneaux de la semaine. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_opening_hours",
"arguments": {
"establishment_id": 1,
"hours": [
{
"day": "exemple"
}
]
}
}
}'
Déclare une fermeture exceptionnelle (congés, travaux, privatisation) du start_date au end_date INCLUS : aucune réservation n’est proposée sur ces jours. Les réservations déjà prises ne sont PAS annulées : elles sont signalées dans la réponse.
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
start_date |
string |
requis
|
YYYY-MM-DD |
end_date |
string |
requis
|
YYYY-MM-DD (inclus) |
reason |
string |
optionnel
|
Motif affiché, ex. « Congés annuels » |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_closure_period",
"arguments": {
"establishment_id": 1,
"start_date": "exemple",
"end_date": "exemple"
}
}
}'
Liste les fermetures exceptionnelles (à venir par défaut).
salle.reservations.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
include_past |
boolean |
optionnel
|
Inclure les fermetures passées (défaut false) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_closure_periods",
"arguments": {
"establishment_id": 1
}
}
}'
Supprime une fermeture exceptionnelle : le restaurant redevient réservable sur ces jours. Exige confirm:true.
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
closure_id |
integer |
requis
|
ID donné par list_closure_periods |
confirm |
boolean |
requis
|
Obligatoire : true |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_closure_period",
"arguments": {
"establishment_id": 1,
"closure_id": 1,
"confirm": true
}
}
}'
Crée une réservation de table (assigne la meilleure table libre, ou celle choisie / dans la zone demandée).
salle.reservations.create
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
customer_name |
string |
requis
|
|
customer_phone |
string |
optionnel
|
|
customer_email |
string |
optionnel
|
|
party_size |
integer |
requis
|
|
date |
string |
requis
|
YYYY-MM-DD |
time |
string |
requis
|
HH:MM |
zone |
string |
optionnel
|
Zone souhaitée (ex. terrasse) |
table_id |
integer |
optionnel
|
Table précise (optionnel) |
notes |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_reservation",
"arguments": {
"establishment_id": 1,
"customer_name": "exemple",
"party_size": 1,
"date": "exemple",
"time": "exemple"
}
}
}'
Confirme une réservation (assigne une table si besoin → table « réservée »).
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
reservation_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "confirm_reservation",
"arguments": {
"establishment_id": 1,
"reservation_id": 1
}
}
}'
Check-in : installe le client (table « occupée ») et crée la commande sur place.
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
reservation_id |
integer |
requis
|
|
table_id |
integer |
optionnel
|
Table si non encore assignée |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "checkin_reservation",
"arguments": {
"establishment_id": 1,
"reservation_id": 1
}
}
}'
Annule une réservation (libère la table).
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
reservation_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "cancel_reservation",
"arguments": {
"establishment_id": 1,
"reservation_id": 1
}
}
}'
Marque une réservation en no-show (client absent → libère la table).
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
reservation_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "no_show_reservation",
"arguments": {
"establishment_id": 1,
"reservation_id": 1
}
}
}'
Liste les zones du plan de salle (Salle, Terrasse…).
salle.tables.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_zones",
"arguments": {
"establishment_id": 1
}
}
}'
Crée une zone du plan de salle.
salle.tables.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
name |
string |
requis
|
|
color |
string |
optionnel
|
Couleur hex #RRGGBB |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_zone",
"arguments": {
"establishment_id": 1,
"name": "exemple"
}
}
}'
État RÉEL d'une table, comme la caisse le voit : occupée dès qu'une note est ouverte (montant, couverts, depuis quand, addition demandée, lignes pas envoyées), sinon libre / à nettoyer / réservée / hors service, prochaine réservation, et les CONFLITS (statut enregistré contredit par la note, deux notes ouvertes, réservation imminente sur une table occupée). Répondre avec `summary`. table_id OU table_name (« T1 », « 4 »).
salle.tables.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
table_id |
integer |
optionnel
|
|
table_name |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_table_status",
"arguments": {
"establishment_id": 1
}
}
}'
Liste les tables avec leur état RÉEL (une note ouverte = occupée, quoi que dise le statut enregistré), la note ouverte, la prochaine réservation et les conflits. Filtre : état réel.
salle.tables.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string |
optionnel
|
free|reserved|occupied|cleaning|blocked |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_tables",
"arguments": {
"establishment_id": 1
}
}
}'
Crée une table dans le plan de salle.
salle.tables.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
name |
string |
requis
|
|
capacity |
integer |
optionnel
|
|
shape |
string |
optionnel
|
round|square|rectangle |
zone_id |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_table",
"arguments": {
"establishment_id": 1,
"name": "exemple"
}
}
}'
Change l'état d'une table. free = LIBRE, propre, prête à recevoir (« j'ai nettoyé la table », « nettoie la table », « la table est propre », « libère la table »). cleaning = À NETTOYER : les clients sont partis, la table est encore sale (« la table est à nettoyer », « les clients sont partis »). occupied = occupée, reserved = réservée, blocked = hors service. La réponse donne l'état AVANT et APRÈS ; changed:false = la table était déjà dans cet état, rien n'a été fait.
salle.tables.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
table_id |
integer |
requis
|
|
status |
string — free | reserved | occupied | cleaning | blocked |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_table_status",
"arguments": {
"establishment_id": 1,
"table_id": 1,
"status": "free"
}
}
}'
Vue d'ensemble temps réel du plan de salle : compteurs par statut + chaque table avec sa commande active.
salle.tables.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "floor_plan_status",
"arguments": {
"establishment_id": 1
}
}
}'
Liste la file d'attente active (walk-ins en attente / prévenus).
salle.reservations.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_waitlist",
"arguments": {
"establishment_id": 1
}
}
}'
Ajoute un client à la file d'attente.
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
customer_name |
string |
optionnel
|
|
customer_phone |
string |
optionnel
|
|
party_size |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_waitlist",
"arguments": {
"establishment_id": 1,
"party_size": 1
}
}
}'
Installe un client de la file d'attente sur une table (crée la commande sur place).
salle.reservations.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
waitlist_id |
integer |
requis
|
|
table_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "seat_waitlist",
"arguments": {
"establishment_id": 1,
"waitlist_id": 1,
"table_id": 1
}
}
}'
Adresse du menu digital d'une table (/t/…, celle imprimée sur le chevalet), lien de l'image du QR code et lien d'impression de tous les chevalets. Sans table_id : toutes les tables. N'invalide aucun QR déjà imprimé.
salle.tables.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
table_id |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "generer_qr_table",
"arguments": {
"establishment_id": 1
}
}
}'
Change l'adresse QR d'une table (QR volé, photographié et détourné…). ⚠ Le chevalet déjà imprimé NE FONCTIONNE PLUS : il faudra le réimprimer. Refusé tant qu'une note est ouverte sur la table. EXIGE confirm:true — sans lui, l'outil décrit la conséquence.
salle.tables.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
table_id |
integer |
requis
|
|
confirm |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "regenerer_qr_table",
"arguments": {
"establishment_id": 1,
"table_id": 1
}
}
}'
Écrans d'affichage
14 outils
Liste les écrans d'affichage du restaurant : nom, zone, groupes, orientation, en ligne ou non (dernier signal), ce qu'ils jouent maintenant (diffusion immédiate, créneau programmé, menu board ou programme par défaut), code d'appairage si l'appareil n'est pas encore branché. Demande l'offre Écrans.
display.screens.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lister_ecrans",
"arguments": {
"establishment_id": 1
}
}
}'
Détail d'un écran : état, programme en cours et prochain changement, diffusion immédiate en cours, créneaux qui le visent (lui ou ses groupes), menu board, 10 derniers événements de l'appareil (appairage, pertes de réseau).
display.screens.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ecran_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "obtenir_ecran",
"arguments": {
"establishment_id": 1,
"ecran_id": 1
}
}
}'
Déclare un NOUVEL écran et renvoie son code d'appairage (6 caractères, valable 7 jours) et l'adresse à ouvrir sur le téléviseur (/play/CODE). Respecte le quota d'écrans de l'offre (refus motivé sinon) ; un écran déclaré compte dans le quota même s'il n'est jamais branché — on le retire depuis l'écran de gestion (Désactiver). Deux écrans ne portent jamais le même nom.
display.screens.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
nom |
string |
requis
|
ex. « Télé du bar » |
zone |
string |
optionnel
|
|
orientation |
string — paysage | portrait |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "creer_code_appairage",
"arguments": {
"establishment_id": 1,
"nom": "exemple"
}
}
}'
État du parc d'écrans : nombre en ligne / hors ligne / pas encore branchés, écrans muets depuis quand, diffusions immédiates en cours, quota de l'offre et crédits d'affiches restants. (Les alertes automatiques arriveront avec la supervision.)
display.screens.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "etat_parc",
"arguments": {
"establishment_id": 1
}
}
}'
Ce que chaque écran diffuse MAINTENANT (source, programme, affiche remontée par l'appareil, prochain changement) ET le journal des passages réellement joués sur une période (défaut : aujourd'hui) : passages et durée par écran, dont publicitaires, affiches les plus diffusées. Le rapport détaillé d'un annonceur (CSV/PDF) se trouve dans la page Régie publicitaire.
display.screens.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ecran_id |
integer |
optionnel
|
Un seul écran (facultatif) |
du |
string |
optionnel
|
AAAA-MM-JJ (défaut : aujourd'hui) |
au |
string |
optionnel
|
AAAA-MM-JJ (défaut : aujourd'hui) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "rapport_diffusion",
"arguments": {
"establishment_id": 1
}
}
}'
Menu board : la carte du restaurant en direct sur un écran (prix TTC, plats épuisés du jour marqués « Épuisé »). Avec activer:true/false, pose ou retire le menu board sur les écrans visés (category_ids = catégories de plats à afficher, vide = toute la carte). Sans activer, relit la carte et force le rafraîchissement des écrans qui l'affichent. Rend, par écran, le nombre de plats et les plats épuisés. Ne consomme aucun crédit.
display.screens.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ecran_ids |
array<integer> |
optionnel
|
Écrans visés (lister_ecrans) |
groupe_ids |
array<integer> |
optionnel
|
Groupes d'écrans visés |
zone |
string |
optionnel
|
Zone ou nom de groupe, ex. « salle », « bar », « terrasse » (accents et casse ignorés) |
tous |
boolean |
optionnel
|
Tous les écrans du restaurant |
activer |
boolean |
optionnel
|
|
titre |
string |
optionnel
|
|
category_ids |
array<integer> |
optionnel
|
Catégories de plats (list_dish_categories) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "synchroniser_carte",
"arguments": {
"establishment_id": 1
}
}
}'
Liste la bibliothèque d'affiches du restaurant (id, nom, taille, orientation) et les affiches IA en cours de fabrication ou en échec (avec leur motif). Termine au passage une affiche demandée par generer_affiche qu'aucun traitement de fond n'a prise (l'appel peut alors durer 1 à 2 min).
display.medias.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lister_medias",
"arguments": {
"establishment_id": 1
}
}
}'
Ajoute une affiche à la bibliothèque depuis une adresse d'image HTTPS publique (JPEG, PNG, WebP ; 8 Mo max ; lien DIRECT vers le fichier, pas une page de partage). Elle n'est diffusée nulle part tant qu'on ne l'envoie pas.
display.medias.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
image_url |
string |
requis
|
|
nom |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "importer_media",
"arguments": {
"establishment_id": 1,
"image_url": "exemple"
}
}
}'
Fait composer une affiche promotionnelle par l'IA à partir de plats de la carte (photo, nom et prix TTC relus sur la carte — jamais saisis). format obligatoire : 16:9 (téléviseur paysage) ou 9:16 (portrait). modele obligatoire et compatible avec le nombre de plats : hero (1 plat), vitrine (2 à 4), menu_board (5 à 20) — un modèle incompatible est refusé. Coûte des crédits d'affiches, débités SEULEMENT si l'affiche est réussie ; refusé sans crédit suffisant. Répond aussitôt avec demande_id ; appelez ensuite lister_medias (qui termine la fabrication, 1 à 2 min) : l'affiche arrive dans la bibliothèque et n'est JAMAIS diffusée seule — relisez-la avant de la diffuser.
display.medias.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
format |
string — 16:9 | 9:16 |
requis
|
|
modele |
string — hero | vitrine | menu_board |
requis
|
|
plat_ids |
array<integer> |
requis
|
1 à 20 plats (list_dishes) |
theme |
string |
optionnel
|
Accroche libre, ex. « Happy hour 17 h – 19 h » |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "generer_affiche",
"arguments": {
"establishment_id": 1,
"format": "16:9",
"modele": "hero",
"plat_ids": [
1
]
}
}
}'
Liste les playlists (affiches, durées, message) et les créneaux programmés (jours, heures, écran ou groupe visé).
display.medias.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lister_playlists",
"arguments": {
"establishment_id": 1
}
}
}'
Crée une playlist d'affiches de la bibliothèque (media_ids dans l'ordre, duree_s par affiche, 5 à 300 s), avec un message en surimpression facultatif. Ne diffuse rien : programmez-la avec planifier_diffusion.
display.medias.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
nom |
string |
requis
|
|
media_ids |
array<integer> |
requis
|
Affiches, dans l'ordre |
duree_s |
integer |
optionnel
|
|
message |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "creer_playlist",
"arguments": {
"establishment_id": 1,
"nom": "exemple",
"media_ids": [
1
]
}
}
}'
Programme une playlist sur un écran OU un groupe, sur des jours (lundi…dimanche ou 1-7 ; vide = tous) et une plage horaire (HH:MM ; fin avant début = passe minuit), avec des dates de campagne facultatives. Un créneau qui chevauche un autre sur la même cible est refusé en le nommant. Un créneau d'écran passe devant celui de son groupe.
display.medias.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
playlist_id |
integer |
requis
|
|
ecran_id |
integer |
optionnel
|
|
groupe_id |
integer |
optionnel
|
|
jours |
array<integer | string> |
optionnel
|
|
debut |
string |
requis
|
HH:MM |
fin |
string |
requis
|
HH:MM |
date_debut |
string |
optionnel
|
AAAA-MM-JJ |
date_fin |
string |
optionnel
|
AAAA-MM-JJ |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "planifier_diffusion",
"arguments": {
"establishment_id": 1,
"playlist_id": 1,
"debut": "exemple",
"fin": "exemple"
}
}
}'
Diffuse TOUT DE SUITE des affiches (media_ids, ou playlist_id) sur des écrans, pendant minutes (défaut 60, max 720), au-dessus de la programmation ; à l'échéance, chaque écran reprend seul son programme. Cible : ecran_ids, groupe_ids, zone (« salle », « bar »…) ou tous. EXIGE confirm:true — sans lui, l'outil renvoie la liste exacte des écrans et des affiches concernés, à relire au restaurateur.
display.medias.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ecran_ids |
array<integer> |
optionnel
|
Écrans visés (lister_ecrans) |
groupe_ids |
array<integer> |
optionnel
|
Groupes d'écrans visés |
zone |
string |
optionnel
|
Zone ou nom de groupe, ex. « salle », « bar », « terrasse » (accents et casse ignorés) |
tous |
boolean |
optionnel
|
Tous les écrans du restaurant |
media_ids |
array<integer> |
optionnel
|
Affiches à diffuser |
playlist_id |
integer |
optionnel
|
Ou : les affiches d'une playlist |
minutes |
integer |
optionnel
|
|
message |
string |
optionnel
|
|
confirm |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "diffuser_maintenant",
"arguments": {
"establishment_id": 1
}
}
}'
Arrête la diffusion immédiate en cours sur les écrans visés (ecran_ids, groupe_ids, zone ou tous) : ils reprennent leur programme. EXIGE confirm:true — sans lui, l'outil liste les diffusions qui seraient arrêtées.
display.medias.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
ecran_ids |
array<integer> |
optionnel
|
Écrans visés (lister_ecrans) |
groupe_ids |
array<integer> |
optionnel
|
Groupes d'écrans visés |
zone |
string |
optionnel
|
Zone ou nom de groupe, ex. « salle », « bar », « terrasse » (accents et casse ignorés) |
tous |
boolean |
optionnel
|
Tous les écrans du restaurant |
confirm |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "arreter_diffusion",
"arguments": {
"establishment_id": 1
}
}
}'
PrediBot & appels de Caroline
5 outils
Appels reçus par Caroline (assistante vocale). Sans date : les appels d'AUJOURD'HUI. Chaque appel porte l'heure, le numéro, le client reconnu, la durée, le statut (reussi|transfere|echoue|manque|en_cours), les intentions (commande|question|reservation|reclamation), le résumé en français, si une commande en est née, et son suivi (traité par qui, quand, nombre de notes). with_transcript:true ajoute la transcription complète. Rafraîchit d'abord l'archive depuis ElevenLabs (au plus toutes les 20 s).
predibot.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date |
string |
optionnel
|
Un jour précis (AAAA-MM-JJ) |
date_from |
string |
optionnel
|
Début de période (AAAA-MM-JJ) |
date_to |
string |
optionnel
|
Fin de période (AAAA-MM-JJ) |
status |
string — reussi | transfere | echoue | manque | en_cours |
optionnel
|
|
intent |
string — commande | question | reservation | reclamation | autre |
optionnel
|
|
suivi |
string — a_traiter | traites |
optionnel
|
a_traiter = pas encore marqué traité |
with_transcript |
boolean |
optionnel
|
|
limit |
integer |
optionnel
|
1 à 100, défaut 50 |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_calls",
"arguments": {
"establishment_id": 1
}
}
}'
Un appel de Caroline en détail : transcription complète, résumé français, intentions, commande liée, notes de suivi de l'équipe, traité par qui et quand.
predibot.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
call_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_call",
"arguments": {
"establishment_id": 1,
"call_id": 1
}
}
}'
Prépare le PITCH DE RAPPEL d'un client à partir de la transcription de son appel : accroche, rappel du contexte, proposition, question de clôture, plus un script prêt à lire, le motif (réclamation, appel manqué, réservation ou commande à confirmer, question) et la priorité. Rien n'est écrit ni envoyé : c'est une proposition, l'équipe rappelle elle-même. Soit call_id (un appel), soit date (tous les appels du jour, par défaut ceux qui ne sont pas encore traités, 20 au plus, les plus urgents d'abord).
predibot.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
call_id |
integer |
optionnel
|
|
date |
string |
optionnel
|
Tous les appels de ce jour (défaut : aujourd'hui si call_id absent) (AAAA-MM-JJ) |
include_handled |
boolean |
optionnel
|
Inclure les appels déjà traités (défaut false) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "generate_callback_pitch",
"arguments": {
"establishment_id": 1
}
}
}'
Ajoute une note de suivi signée sur un appel (« rappelé à 15 h, table confirmée »). Visible dans l'écran Appels.
predibot.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
call_id |
integer |
requis
|
|
body |
string |
requis
|
2000 caractères max |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_call_note",
"arguments": {
"establishment_id": 1,
"call_id": 1,
"body": "exemple"
}
}
}'
Marque un appel traité (rappel fait) ou le rouvre (handled:false). Qui et quand sont conservés.
predibot.dashboard.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
call_id |
integer |
requis
|
|
handled |
boolean |
optionnel
|
Défaut true |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mark_call_handled",
"arguments": {
"establishment_id": 1,
"call_id": 1
}
}
}'
Site web
19 outils
Liste les templates métiers du site (galerie du Studio).
website.pages.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_site_templates",
"arguments": {
"establishment_id": 1
}
}
}'
⚠ DESTRUCTIF : applique un template métier au site en SUPPRIMANT TOUTES les pages et sections existantes (y compris les pages activées depuis le catalogue et tout le texte rédigé), puis en recréant les pages du template, PUBLIÉES. Appelé sans confirm, l'outil renvoie le nombre exact de pages et de sections qui seront détruites : relisez-le au restaurateur, puis rappelez avec confirm:true. Pour changer seulement couleurs ou polices, utilisez set_site_theme (ne touche jamais aux pages).
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
slug |
string |
requis
|
|
confirm |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "apply_site_template",
"arguments": {
"establishment_id": 1,
"slug": "exemple"
}
}
}'
Modifie partiellement les design tokens du site SANS jamais toucher aux pages. Clés acceptées : colors.{primary, secondary, background, text, surface} (hex #RRGGBB ; primary_color… acceptés), fonts.{heading, body} (nom de police Google Fonts ; font_heading / font_body / font acceptés), radius (none|sm|md|lg|xl|full), spacing_scale (0.75 à 1.5), button_style (rounded|pill|square). Toute clé non appliquée est listée dans ignored_tokens avec sa raison. Crée le thème depuis les couleurs actuelles de la vitrine s'il n'existe pas.
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
tokens |
object |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_site_theme",
"arguments": {
"establishment_id": 1,
"tokens": {}
}
}
}'
Liste les pages du site (statut, navigation) + catalogue de pages activables.
website.pages.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_site_pages",
"arguments": {
"establishment_id": 1
}
}
}'
Active une page du catalogue (about, faq, allergens, gallery, jobs, beverages, private, producers, delivery, press, giftcards) — créée en brouillon.
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
type |
string |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_site_page",
"arguments": {
"establishment_id": 1,
"type": "exemple"
}
}
}'
Crée une page LIBRE du site (ex. « Brunch du dimanche », « Événements », « Carte des desserts »), en BROUILLON : relisez-la puis publiez-la avec toggle_site_page ou publish_site. show_in_nav : header (menu du haut, défaut), footer (pied de page) ou none (accessible par lien seulement). sections : [{type, props}] parmi les types listés par get_site_pages (section_types) — sans sections, la page reçoit un bloc texte à compléter. Pour une page du catalogue (FAQ, allergènes, recrutement…), préférez add_site_page.
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
title |
string |
requis
|
|
slug |
string |
optionnel
|
Adresse de la page (facultatif, déduite du titre) |
show_in_nav |
string — header | footer | none |
optionnel
|
|
sections |
array<object> |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_site_page",
"arguments": {
"establishment_id": 1,
"title": "exemple"
}
}
}'
Modifie une page existante : titre, adresse (new_slug), place dans le menu (show_in_nav header|footer|none — ex. remonter « Privatisation » du pied de page vers le menu du haut) et ordre (sort, 0 = en premier). Ne touche ni aux sections ni au statut de publication.
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
page_slug |
string |
requis
|
|
title |
string |
optionnel
|
|
new_slug |
string |
optionnel
|
|
show_in_nav |
string — header | footer | none |
optionnel
|
|
sort |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_site_page",
"arguments": {
"establishment_id": 1,
"page_slug": "exemple"
}
}
}'
Ajoute une section à une page (type parmi section_types de get_site_pages, props de départ, position 1 = en haut ; défaut : en bas). La carte (menu_grid) se remplit seule depuis la carte du restaurant, avec barre de catégories et recherche de plat.
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
page_slug |
string |
requis
|
|
type |
string |
requis
|
|
props |
object |
optionnel
|
|
position |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_site_section",
"arguments": {
"establishment_id": 1,
"page_slug": "exemple",
"type": "exemple"
}
}
}'
Retire une section d'une page (exige confirm:true ; sans lui, l'outil décrit la section qui partira). Une section verrouillée 🔒 dans le Studio est refusée.
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
section_id |
integer |
requis
|
|
confirm |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "remove_site_section",
"arguments": {
"establishment_id": 1,
"section_id": 1
}
}
}'
Publie ou dépublie une page du site.
website.pages.publish
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
page_slug |
string |
requis
|
|
publish |
boolean |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "toggle_site_page",
"arguments": {
"establishment_id": 1,
"page_slug": "exemple",
"publish": true
}
}
}'
Contenu d'une page (sections + props) pour la relire ou la modifier.
website.pages.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
page_slug |
string |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_page_content",
"arguments": {
"establishment_id": 1,
"page_slug": "exemple"
}
}
}'
Met à jour les props d'une section (fusion partielle, ex. {title, text}). Seules les propriétés que ce type de section affiche sont enregistrées ; les autres sont listées dans ignored_props avec leur raison (jamais ignorées en silence).
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
section_id |
integer |
requis
|
|
props |
object |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_section",
"arguments": {
"establishment_id": 1,
"section_id": 1,
"props": {}
}
}
}'
Met le site en ligne (exige confirm:true). Sans page_slugs : publie les pages en brouillon SAUF celles remises en brouillon volontairement (toggle_site_page publish:false ou Studio), listées dans kept_draft. Avec page_slugs : publie exactement ces pages-là.
website.pages.publish
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
confirm |
boolean |
requis
|
|
page_slugs |
array<string> |
optionnel
|
Pages à publier (facultatif) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "publish_site",
"arguments": {
"establishment_id": 1,
"confirm": true
}
}
}'
État du site : pages publiées/brouillon, URL publique, domaine.
website.pages.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_site_status",
"arguments": {
"establishment_id": 1
}
}
}'
Statut du domaine personnalisé (DNS/SSL).
website.domain.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_domain_status",
"arguments": {
"establishment_id": 1
}
}
}'
Ajoute ou met à jour une boisson (les mentions légales sont portées par la page, jamais par la donnée).
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
beverage_id |
integer |
optionnel
|
|
category |
string — blanc | rouge | rose | bulles | biere | soft | cafe | sake |
requis
|
|
name |
string |
requis
|
|
appellation |
string |
optionnel
|
|
is_aop_igp |
boolean |
optionnel
|
|
vintage |
integer |
optionnel
|
|
glass_price |
number |
optionnel
|
|
bottle_price |
number |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "upsert_beverage_item",
"arguments": {
"establishment_id": 1,
"category": "blanc",
"name": "exemple"
}
}
}'
Retire une boisson de la carte.
website.pages.edit
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
beverage_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "remove_beverage_item",
"arguments": {
"establishment_id": 1,
"beverage_id": 1
}
}
}'
Toutes les adresses PUBLIQUES du restaurant à mettre sur un visuel ou un support imprimé, avec le lien de l'image de leur QR code : site et pages, carte PDF, commande en ligne, réservation, roues cadeaux, sondages, programme de fidélité, cartes cadeaux, avis Google, menu de chaque table et paiement à table. Chaque ligne dit si elle est active (et sinon pourquoi, ex. « roue désactivée »), le module d'abonnement qu'elle demande, url (domaine du client si actif), url_stable (domaine principal — recommandée pour l'impression : elle survit à un changement de domaine) et qr_image_url (SVG téléchargeable sans connexion). Filtre facultatif par famille. Ne crée rien.
website.pages.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
famille |
string — commander | reserver | jouer | fidelite | avis | infos | payer |
optionnel
|
|
actifs_seulement |
boolean |
optionnel
|
Masquer ce qui ne fonctionne pas encore (défaut false) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_qr_destinations",
"arguments": {
"establishment_id": 1
}
}
}'
Génère le QR code d'une destination du restaurant (type + reference_id, voir get_qr_destinations) OU d'une adresse libre qui appartient au restaurant (url : une page de son site, une de ses tables, son domaine, son lien d'avis Google — toute autre adresse est refusée). Rend le SVG (texte, vectoriel, idéal pour l'impression) ou le PNG en base64, et le lien de l'image. Par défaut encode url_stable.
website.pages.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
type |
string — site | page | menu_pdf | commande_en_ligne | table | reservation | roue | sondage | programme_fidelite | carte_cadeau | avis_google | payer_a_table |
optionnel
|
|
reference_id |
integer |
optionnel
|
Obligatoire pour page, table, reservation, roue, sondage, payer_a_table |
url |
string |
optionnel
|
Ou : une adresse du restaurant |
format |
string — svg | png |
optionnel
|
défaut svg |
size |
integer |
optionnel
|
Côté en pixels, 128 à 2048 (défaut 512) |
encoder |
string — url_stable | url |
optionnel
|
Adresse encodée (défaut url_stable) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_qr_code",
"arguments": {
"establishment_id": 1
}
}
}'
Marketing, avis & recrutement
21 outils
Avis clients (site + Google) filtrables par statut/note.
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string |
optionnel
|
|
rating |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_reviews",
"arguments": {
"establishment_id": 1
}
}
}'
Répond à un avis (la réponse est enregistrée, publication Google manuelle).
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
review_id |
integer |
requis
|
|
body |
string |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "reply_review",
"arguments": {
"establishment_id": 1,
"review_id": 1,
"body": "exemple"
}
}
}'
Publie ou rejette un avis déposé sur le site.
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
review_id |
integer |
requis
|
|
action |
string — publish | reject |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "moderate_review",
"arguments": {
"establishment_id": 1,
"review_id": 1,
"action": "publish"
}
}
}'
Crée une offre d'emploi (salaire affiché recommandé) — en brouillon par défaut.
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
title |
string |
requis
|
|
contract |
string — CDI | CDD | apprentissage | extra | saisonnier |
requis
|
|
description |
string |
requis
|
|
salary_min |
number |
optionnel
|
|
salary_max |
number |
optionnel
|
|
status |
string — draft | published |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_job_offer",
"arguments": {
"establishment_id": 1,
"title": "exemple",
"contract": "CDI",
"description": "exemple"
}
}
}'
Met à jour ou ferme une offre (status: draft|published|closed).
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
offer_id |
integer |
requis
|
|
title |
string |
optionnel
|
|
description |
string |
optionnel
|
|
status |
string — draft | published | closed |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_job_offer",
"arguments": {
"establishment_id": 1,
"offer_id": 1
}
}
}'
Candidatures reçues (JAMAIS de CV via MCP — coordonnées + statut).
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string — new | contacted | rejected | hired |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_job_applications",
"arguments": {
"establishment_id": 1
}
}
}'
Change le statut d'une candidature.
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
application_id |
integer |
requis
|
|
status |
string — new | contacted | rejected | hired |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_application_status",
"arguments": {
"establishment_id": 1,
"application_id": 1,
"status": "new"
}
}
}'
Leads capturés par le site (contact, roue, privatisation…).
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
source |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_site_leads",
"arguments": {
"establishment_id": 1
}
}
}'
Demandes de privatisation/groupes avec statut.
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string — new | quoted | won | lost |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_private_event_requests",
"arguments": {
"establishment_id": 1
}
}
}'
Avance une demande de privatisation (new|quoted|won|lost).
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
request_id |
integer |
requis
|
|
status |
string — new | quoted | won | lost |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_event_request_status",
"arguments": {
"establishment_id": 1,
"request_id": 1,
"status": "new"
}
}
}'
Campagnes marketing (statut, canal, segment, stats d'envoi).
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string — draft | scheduled | sending | sent | cancelled |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_campaigns",
"arguments": {
"establishment_id": 1
}
}
}'
Segments RFM de la base clients (compteurs + pourquoi) — cible des campagnes.
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_rfm_segments",
"arguments": {
"establishment_id": 1
}
}
}'
Crée une campagne en BROUILLON (email|sms|whatsapp|vocal ; segment RFM ; {prenom} {code} {lien} dans le message). Ne l'envoie PAS : utiliser launch_campaign.
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
name |
string |
requis
|
|
channel |
string — email | sms | whatsapp | vocal |
requis
|
|
segment |
string — tous | champions | fideles | prometteurs | a_risque | perdus | nouveaux |
requis
|
|
message_template |
string |
requis
|
|
offer_label |
string |
optionnel
|
|
promo_code |
string |
optionnel
|
|
link_url |
string |
optionnel
|
|
scheduled_at |
string |
optionnel
|
Y-m-d H:i pour planifier (sinon brouillon) |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_campaign",
"arguments": {
"establishment_id": 1,
"name": "exemple",
"channel": "email",
"segment": "tous",
"message_template": "exemple"
}
}
}'
Lance une campagne (envoi RÉEL multicanal — exige confirm:true après avoir résumé la cible et le récap conformité au restaurateur).
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
campaign_id |
integer |
requis
|
|
confirm |
boolean |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "launch_campaign",
"arguments": {
"establishment_id": 1,
"campaign_id": 1,
"confirm": true
}
}
}'
ROI d'une campagne : envoyés, clics, retours en commande, CA attribué 7 j, exclusions de conformité.
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
campaign_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_campaign_stats",
"arguments": {
"establishment_id": 1,
"campaign_id": 1
}
}
}'
Agent IA marketing : 2-4 propositions de campagnes chiffrées depuis les données réelles (RFM, jours creux, marges, marronniers).
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "propose_campaigns",
"arguments": {
"establishment_id": 1
}
}
}'
Templates WhatsApp (statut Meta : draft/pending/approved/rejected). Un template approuvé est requis pour écrire à un client hors de la fenêtre 24 h.
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string — draft | pending | approved | rejected |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_whatsapp_templates",
"arguments": {
"establishment_id": 1
}
}
}'
Crée un template WhatsApp (brouillon). Corps avec variables {{1}} {{2}}… numérotées sans trou ; variables = libellés ordonnés (prenom, offre…). Ne le soumet PAS : utiliser submit_whatsapp_template.
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
name |
string |
requis
|
minuscules + underscores |
body |
string |
requis
|
|
variables |
array<string> |
optionnel
|
|
category |
string — MARKETING | UTILITY |
optionnel
|
|
language |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_whatsapp_template",
"arguments": {
"establishment_id": 1,
"name": "exemple",
"body": "exemple"
}
}
}'
Soumet un template à l'approbation Meta (24-48 h — exige confirm:true, le template devient non modifiable).
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
template_id |
integer |
requis
|
|
confirm |
boolean |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "submit_whatsapp_template",
"arguments": {
"establishment_id": 1,
"template_id": 1,
"confirm": true
}
}
}'
Agenda marketing d'un mois : marronniers, événements locaux saisis, jour creux détecté, campagnes planifiées/envoyées.
leads.leads.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
year |
integer |
requis
|
|
month |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_marketing_calendar",
"arguments": {
"establishment_id": 1,
"year": 1,
"month": 1
}
}
}'
Ajoute un événement local à l'agenda marketing (match, marché, fête de quartier…) pour préparer une campagne dessus.
leads.leads.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
date |
string |
requis
|
YYYY-MM-DD |
label |
string |
requis
|
|
brief |
string |
optionnel
|
Idée de campagne associée. Optionnel. |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_marketing_event",
"arguments": {
"establishment_id": 1,
"date": "exemple",
"label": "exemple"
}
}
}'
Fidélité, jeux & sondages
14 outils
Configuration du programme de fidélité (modes, multiplicateurs, règles).
loyalty.program.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_loyalty_program",
"arguments": {
"establishment_id": 1
}
}
}'
Met à jour le programme (active, earn_mode, earn_rate, validité…).
loyalty.program.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
active |
boolean |
optionnel
|
|
earn_mode |
string — per_euro | per_visit | hybrid |
optionnel
|
|
earn_rate |
number |
optionnel
|
|
visit_points |
integer |
optionnel
|
|
points_validity_months |
integer |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_loyalty_program",
"arguments": {
"establishment_id": 1
}
}
}'
Catalogue des récompenses échangeables (points, stock).
loyalty.program.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_loyalty_rewards",
"arguments": {
"establishment_id": 1
}
}
}'
Ajoute ou met à jour une récompense (product = plat réel à 0 €).
loyalty.program.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
reward_id |
integer |
optionnel
|
|
kind |
string — product | amount | perk |
requis
|
|
plat_id |
integer |
optionnel
|
|
label |
string |
requis
|
|
points_cost |
integer |
requis
|
|
amount |
number |
optionnel
|
|
stock |
integer |
optionnel
|
|
active |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "upsert_loyalty_reward",
"arguments": {
"establishment_id": 1,
"kind": "product",
"label": "exemple",
"points_cost": 1
}
}
}'
Compte fidélité d'un client par email (solde, prochaine récompense).
loyalty.program.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
email |
string |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_loyalty_account",
"arguments": {
"establishment_id": 1,
"email": "exemple"
}
}
}'
Geste commercial : crédite des points à un client (plafonné ±1000, jamais de solde négatif, motif obligatoire, journalisé).
loyalty.program.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
email |
string |
requis
|
|
points |
integer |
requis
|
|
motif |
string |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "adjust_points",
"arguments": {
"establishment_id": 1,
"email": "exemple",
"points": 1,
"motif": "exemple"
}
}
}'
Bons fidélité émis (actifs/utilisés/expirés).
loyalty.program.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
status |
string |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_redemptions",
"arguments": {
"establishment_id": 1
}
}
}'
Valide un bon fidélité présenté en salle (usage unique).
loyalty.program.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
code |
string |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "validate_redemption",
"arguments": {
"establishment_id": 1,
"code": "exemple"
}
}
}'
Roues cadeaux (statut, lancers, leads).
loyalty.program.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_wheel_games",
"arguments": {
"establishment_id": 1
}
}
}'
Statistiques d'une roue (lancers, lots gagnés, leads captés).
loyalty.program.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
wheel_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_wheel_stats",
"arguments": {
"establishment_id": 1,
"wheel_id": 1
}
}
}'
Sondages (déclencheur, réponses).
loyalty.program.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_surveys",
"arguments": {
"establishment_id": 1
}
}
}'
Crée une roue cadeaux (2 à 12 segments), CRÉÉE INACTIVE par défaut (active:true pour la mettre en jeu tout de suite). Chaque segment : {type: Points | Cadeaux | Perdu, label (nom du lot), probability (en %, la somme doit faire 100), points (si Points), plat_id (Cadeaux = plat offert) OU amount (Cadeaux = bon d'achat en €), stock (facultatif)}. Les segments Points créditent le programme de fidélité du restaurant, qui doit exister et être actif. Renvoie les probabilités réellement appliquées.
loyalty.program.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
title |
string |
requis
|
|
segments |
array<object> |
requis
|
|
entry_action |
string — none | review | survey | follow | lead |
optionnel
|
Action demandée avant de jouer (défaut none) |
cooldown_days |
integer |
optionnel
|
Jours entre deux parties d'un même joueur (défaut 7) |
starts_at |
string |
optionnel
|
|
ends_at |
string |
optionnel
|
|
active |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_wheel_game",
"arguments": {
"establishment_id": 1,
"title": "exemple",
"segments": [
{}
]
}
}
}'
Crée un sondage, INACTIF par défaut. questions : [{type: rating | choice | multi | text | nps, label, options (pour choice/multi), required}] (1 à 12). trigger : post_order | post_resa | standalone | wheel (défaut standalone). reward_points > 0 exige un programme de fidélité actif.
loyalty.program.manage
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
title |
string |
requis
|
|
questions |
array<object> |
requis
|
|
trigger |
string — post_order | post_resa | standalone | wheel |
optionnel
|
|
reward_points |
integer |
optionnel
|
|
active |
boolean |
optionnel
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_survey",
"arguments": {
"establishment_id": 1,
"title": "exemple",
"questions": [
{}
]
}
}
}'
Résultats agrégés d'un sondage (moyennes, NPS, répartitions).
loyalty.program.view
| Paramètre | Type | | Description |
establishment_id |
integer |
requis
|
ID de l'établissement |
survey_id |
integer |
requis
|
|
Exemple cURL
curl -X POST https://foodeatup.com/api/mcp \
-H "Authorization: Bearer VOTRE_JETON" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_survey_results",
"arguments": {
"establishment_id": 1,
"survey_id": 1
}
}
}'