picnic-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PICNIC_COUNTRY | Yes | Your Picnic country code: nl, de, be or fr. Used to select the correct Picnic API storefront. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_productsB | Search the Picnic catalogue. Returns id, name, price in cents, unit size and unit price. |
| find_ingredientsA | Find the best Picnic product for each ingredient of a recipe or shopping list, by a preference. Per item it searches, keeps products whose name contains every query word, and ranks them. Preferences: 'cheapest' (lowest total cost for the amount, so a 250 g pack beats a 1 kg pack when 200 g is needed), 'best_value' (lowest price per kg or litre), 'organic' (only Bio products, cheapest first), 'conventional', 'smallest_pack', 'largest_pack'. Give amount like '300 g', '0.5 l' or '3' (pieces) to get the packs to buy, the total cost and the leftover. Organic is recognised from the product name (Bio, Bioland, Demeter, Naturland). Set preference per item to mix, for example organic vegetables and cheapest pasta. exclude drops products whose name contains a word, such as 'mix' or 'stifte'. Returns best and a few alternatives per item and does not touch the cart: confirm the choices, then call add_to_cart with packs as count. |
| start_loginA | Open a sign-in page for Picnic in the user's browser. The page runs on the user's own computer (127.0.0.1, one-time address, expires after 5 minutes), asks for e-mail, password and the code Picnic sends by SMS or e-mail, and stores the session token in the system credential store. The password never reaches Claude. Use it when another tool reports that no session is stored. |
| get_cartA | Show the current cart with item counts and the total price in cents. |
| add_to_cartB | Add a product to the cart. Does not place an order. |
| remove_from_cartC | Remove a quantity of a product from the cart. |
| clear_cartA | Remove every item from the cart. |
| search_recipesA | Search Picnic's own recipes and the user's recipes. Returns id, name, duration and labels such as 'Vegan'. |
| get_recipeA | Show a recipe: name, description, preparation steps, ingredients with the Picnic product each maps to, amounts, and nutrition per portion (energy, fat, carbohydrates, sugar, protein, salt, fibre). Each ingredient has a kind: 'needed' (added to the cart by default), 'probably_at_home' (the app's 'Bestimmt noch zuhause' section, such as onions), 'pantry' (oil, salt, spices, also listed in own_ingredients) or 'alternative' (a variant of a needed ingredient). Only 'needed' ones are selected by default. |
| add_recipe_to_cartA | Add a recipe's needed ingredients to the cart, like the app's 'add all' button. Ingredients the user probably has at home, pantry items and alternatives are left out by default. Use include_ingredient_ids (from get_recipe) to add ones the user lacks, and skip_ingredient_ids to leave out needed ones the user already has. Does not place an order. |
| remove_recipe_from_cartC | Take a recipe's ingredients out of the cart again. |
| create_recipeA | Save a recipe of the user's own in the Picnic app ('Eigenes Rezept'), so its ingredients can be added to the cart there in one tap. Find each ingredient with search_products first and pass its id. Quantity is the number of packages of that product. Does not touch the cart or place an order. |
| delete_recipeA | Delete a recipe the user created with create_recipe. Only for user-created recipes, never Picnic's own. |
| get_delivery_slotsA | List bookable delivery windows for the current cart, soonest first, with the time to order by. The tool only reads the slots, it does not book one. |
| get_order_historyA | List the user's recent completed deliveries, newest first, with order time, delivery window and total paid in cents. It does not list the products in each order. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
The tools split cleanly along resource lines (products, recipes, cart, account, delivery) with one action each. The only real overlap is search_products vs find_ingredients and add_to_cart vs add_recipe_to_cart, but the descriptions make the boundary explicit (single-item lookup vs multi-item ranked matching; single product vs all recipe ingredients).
Every tool follows the same snake_case verb_noun pattern (search_products, get_cart, add_recipe_to_cart, remove_from_cart, create_recipe, delete_recipe). The verb set is small and used predictably across every resource, so an agent can guess names it hasn't seen.
Fifteen tools sit at the top of the well-scoped range, but each maps to a distinct step in the browse -> ingredient-match -> cart -> recipe -> slot workflow. Nothing looks redundant or padded; the four cart tools each cover a separate operation.
Coverage is strong: product search, ingredient matching, full cart manipulation, recipe create/read/delete plus add/remove ingredients from cart, and read-only slots and order history. Gaps are a missing update_recipe (create and delete exist but no edit) and no way to actually book a slot or place an order, though the repeated 'does not place an order' wording suggests that is a deliberate safety boundary.