MCP server for Carrefour grocery shopping — search products, manage cart, find stores
Server has 7 tools with complete input schemas and descriptions. Naming follows verb_noun convention (search_products, get_product_details, add_to_cart). Descriptions are present and contextual (avg ~100 chars), meeting baseline minimums. However, output schemas are undocumented, tools return TextContent or JSON without specifying field structure, forcing LLMs to parse unstructured responses. Parameters lack validation constraints (e.g., max_results accepts 1-30 but no minItems/maxItems in schema). Error handling is minimal, no recovery guidance or actionable error messages. Cart operations (add_to_cart, remove_from_cart) lack idempotency documentation and confirmation patterns for destructive writes. Missing tool annotations (readOnlyHint, destructiveHint) that would clarify safety semantics.
Ajouter un ou plusieurs produits au panier de courses.
Trouver les magasins et drives Carrefour proches d'un code postal.
Obtenir les détails d'un produit Carrefour (nutrition, ingrédients, prix exact). Utiliser l'URL du produit obtenue via search_products.
Obtenir les promotions Carrefour en cours pour une catégorie de produits.
Retirer un produit du panier.
Rechercher des produits dans le catalogue Carrefour Drive. Retourne les noms, prix, marques et liens vers les produits.
Voir le contenu actuel du panier de courses avec le total.
Output schemas undocumented. Tools return TextContent or raw JSON without specifying field structure (e.g., search_products returns product objects with 'name', 'price', 'ean', 'url', 'is_bio', 'is_promo', 'promo_detail' but this is not declared in tool definition). LLMs cannot plan downstream calls or extract fields reliably.
Destructive operations lack safety patterns. add_to_cart and remove_from_cart modify state but have no confirmation step, dry-run option, or idempotency guarantee. No tool annotations (destructiveHint) to signal write semantics to clients.
Error handling provides no recovery guidance. Code returns bare 'Aucun produit trouvé' or 'Produit introuvable' without suggesting next steps (e.g., 'Try a different search term' or 'Call search_products first'). No error categorization (retryable vs fatal).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Parameter constraints not enforced in schema. max_results accepts 1-30 per description but schema lacks minItems/maxItems. sort_by enum is present but other enums (store_type) lack validation. No regex patterns or length limits for string inputs.
view_cart has empty inputSchema (no properties). Description is generic ('Voir le contenu actuel du panier'). No indication of what fields are returned (items, total, item_count, etc.).