{"apiVersion":"v1","directorySlug":"knuspr-mcp-0ae78f0e3c","title":"Knuspr","description":null,"pageUrl":"https://www.mcpbundles.com/skills/knuspr-mcp-0ae78f0e3c","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.knuspr.de/mcp","hostedMcpUrl":null,"toolCount":59,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"de.knuspr/knuspr-mcp-0ae78f0e3c","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"get_announcements","description":"Retrieve active announcements for the user's region (delivery disruptions, weather warnings, technical issues, general notices). Returns a list of announcements with type (informative/positive/warning/negative), title, and content.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_announcements","displayName":"get_announcements","title":"get_announcements"},{"name":"get_products_composition_batch","description":"Retrieve composition, nutritional, and allergen data for products by ID. Covers ingredients, nutrition, and allergens.","inputSchema":{"type":"object","required":["product_ids"],"properties":{"context":{"type":"string"},"product_ids":{"type":"array","items":{"type":"integer"}}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_products_composition_batch","displayName":"get_products_composition_batch","title":"get_products_composition_batch"},{"name":"batch_search_products","description":"Search products by keyword, filters, or recommendations — up to 4 queries at once. Use for finding products, gifts, price comparisons, availability checks. Example queries: 'haben Sie Obst', 'günstigster Joghurt', 'empfiehl mir einen Wein', 'empfiehl mir einen Snack', 'Geschenk für Mama', 'teuerste', 'günstigste', 'Bio-Lebensmittel für Kinder', 'Angebote ohne Palmöl', 'Neuheiten', 'vegan'. IMPORTANT: `queries` is the ONLY top-level parameter. Each query object inside `queries` contains ALL searc","inputSchema":{"type":"object","required":["queries"],"properties":{"context":{"type":"string"},"queries":{"type":"array","items":{"type":"object","properties":{"filters":{"anyOf":[{"type":"array","items":{"type":"object","required":["filterSlug","valueSlug"],"properties":{"valueSlug":{"type":"string"},"filterSlug":{"type":"string"}}}},{"type":"null"}],"default":null},"keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"sort_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"company_scope":{"anyOf":[{"enum":["default","pharmacy"],"type":"string"},{"type":"null"}],"default":null},"include_fields":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"default":null},"include_allergens":{"type":"boolean","default":false},"include_nutritions":{"type":"boolean","default":false},"include_ingredients":{"type":"boolean","default":false}}}}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"batch_search_products","displayName":"batch_search_products","title":"batch_search_products"},{"name":"get_discounted_items","description":"Get currently discounted items: by default the user's favorite products on sale first, followed by general deals. Not a search for a specific product by name.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","default":0,"minimum":0},"sort":{"enum":["recommended","price-asc","price-desc","unit-price-asc"],"type":"string","default":"recommended"},"limit":{"type":"integer","default":14,"maximum":50,"minimum":1},"context":{"type":"string"},"sale_type":{"anyOf":[{"enum":["sales","week-sales","multipack","bundles","premium-sales","favorite-sales"],"type":"string"},{"type":"null"}],"default":null},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null},"list_categories":{"type":"boolean","default":false}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_discounted_items","displayName":"get_discounted_items","title":"get_discounted_items"},{"name":"get_product_details","description":"Fetch current details for multiple products at once by their IDs. Use after getting product IDs from order history, favorites, shopping lists, or recipe ingredients. Efficiently retrieves up-to-date pricing, availability, product info, and expected replenishment timing for products that are not currently available.","inputSchema":{"type":"object","required":["product_ids"],"properties":{"context":{"type":"string"},"product_ids":{"type":"array","items":{"type":"integer"}},"include_description":{"type":"boolean","default":true}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_product_details","displayName":"get_product_details","title":"get_product_details"},{"name":"get_cart","description":"View everything currently in the shopping cart with prices, quantities, and total cost. Use for reviewing before checkout, checking what's already added, calculating totals, or identifying savings from current promotions.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_cart","displayName":"get_cart","title":"get_cart"},{"name":"update_cart_item","description":"Change the quantity of a product already in the cart. Use when the user wants more or fewer of an already-added item, or to reduce amounts before checkout. A quantity of 0 removes the item from the cart.","inputSchema":{"type":"object","required":["product_id","quantity"],"properties":{"context":{"type":"string"},"quantity":{"type":"integer","minimum":0},"product_id":{"type":"integer"}}},"logicalName":"update_cart_item","displayName":"update_cart_item","title":"update_cart_item","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"remove_cart_item","description":"Take a specific product out of the cart entirely. Use when the user changes their mind about an individual item or wants to remove something specific before ordering. For removing ALL items at once, use clear_cart instead — do NOT call this repeatedly to empty a cart.","inputSchema":{"type":"object","required":["product_id"],"properties":{"context":{"type":"string"},"product_id":{"type":"integer"}}},"logicalName":"remove_cart_item","displayName":"remove_cart_item","title":"remove_cart_item","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"clear_cart","description":"Empty the entire cart at once, removing all items. Use only when the user explicitly wants to remove ALL items — phrases like 'remove everything', 'empty my cart', 'start over', or 'clear the whole cart'. Do NOT use for partial cleanup or ambiguous requests like 'clean up my cart a bit'. Cannot be undone. For removing a single specific item, use remove_cart_item instead.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"logicalName":"clear_cart","displayName":"clear_cart","title":"clear_cart","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"add_items_to_cart","description":"Add products to the shopping cart for later checkout. Items added here are NOT part of any existing order until the customer completes checkout (optionally as a suborder of an upcoming order — see `suborder` in get_checkout). Use after finding products through search, from favorites, recipe ingredients, or shopping lists. Accepts multiple items at once for efficiency. Always confirm: item was added to cart, not yet to an order.","inputSchema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["productId","quantity"],"properties":{"actionId":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null},"quantity":{"type":"number"},"productId":{"type":"integer"}}}},"context":{"type":"string"}}},"logicalName":"add_items_to_cart","displayName":"add_items_to_cart","title":"add_items_to_cart","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_user_addresses","description":"List saved delivery addresses for the user. Use when the user needs to select a delivery address during checkout, when discussing delivery options, or when the user wants to see their saved locations.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_user_addresses","displayName":"get_user_addresses","title":"get_user_addresses"},{"name":"select_delivery_address_checkout","description":"Sets a delivery address for the current cart/checkout. Accepts address_id from get_user_addresses or search_address. Returns is_delivered_to indicating whether the address is within the delivery zone. If is_delivered_to is false, the address is outside the delivery area — use request_delivery_expansion to register for notifications when delivery becomes available there.","inputSchema":{"type":"object","required":["address_id"],"properties":{"context":{"type":"string"},"address_id":{"type":"integer"}}},"logicalName":"select_delivery_address_checkout","displayName":"select_delivery_address_checkout","title":"select_delivery_address_checkout","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_address","description":"Searches for addresses by text query using autocomplete. Returns matching addresses with their IDs, display names, coordinates, and is_delivered_to indicating whether the address is within the delivery zone. If is_delivered_to is false, the address is outside the delivery area — use request_delivery_expansion to register for notifications. If true, use select_delivery_address_checkout to set it.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string"},"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_address","displayName":"search_address","title":"search_address"},{"name":"request_delivery_expansion","description":"Submits an address to the delivery expansion waiting list so the user is notified when delivery becomes available at that address. Requires address_id from search_address or get_user_addresses. Optionally records an email or phone number for the notification.","inputSchema":{"type":"object","required":["address_id"],"properties":{"email":{"type":"string","default":""},"context":{"type":"string"},"address_id":{"type":"integer"},"phone_number":{"type":"string","default":""}}},"logicalName":"request_delivery_expansion","displayName":"request_delivery_expansion","title":"request_delivery_expansion","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_user_info","description":"Retrieve user's account profile (name, email, address) and Xtra membership details: active status and dates, trial vs paid, membership/subscription type, and remaining limits (free express deliveries, orders exempt from the minimum order value), plus available credits/vouchers.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_user_info","displayName":"get_user_info","title":"get_user_info"},{"name":"fetch_orders","description":"Retrieve past/upcoming/cancelled orders with details (max 15 orders). When called without parameters, returns the 5 most recent orders, including ones not yet delivered. Parameter selection: TIME PERIODS ('last year', 'December') → use date_from + date_to (YYYY-MM-DD). RECENT COUNT ('last 3 orders') → use limit. SPECIFIC ORDER → use order_id. Set order_type to delivered/upcoming/both/cancelled ('cancelled' returns cancelled orders, which no other order_type includes; these carry basic info only","inputSchema":{"type":"object","properties":{"limit":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"default":null},"context":{"type":"string"},"date_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"order_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null},"date_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"order_type":{"anyOf":[{"enum":["delivered","upcoming","both","cancelled"],"type":"string"},{"type":"null"}],"default":null}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"fetch_orders","displayName":"fetch_orders","title":"fetch_orders"},{"name":"repeat_order","description":"Add all items from previous order to current cart. Use for repeat purchases. Needs order_id from order history.","inputSchema":{"type":"object","required":["order_id"],"properties":{"context":{"type":"string"},"order_id":{"type":"integer"}}},"logicalName":"repeat_order","displayName":"repeat_order","title":"repeat_order","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"analyze_spending","description":"Analyze user spending patterns. Returns total spend, order count, average order value, monthly breakdown, and trends. Use date_from/date_to for time periods (YYYY-MM-DD format).","inputSchema":{"type":"object","properties":{"context":{"type":"string"},"date_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"date_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"include_monthly_breakdown":{"type":"boolean","default":true}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"analyze_spending","displayName":"analyze_spending","title":"analyze_spending"},{"name":"get_typical_order","description":"Retrieves frequent items and builds an average order from user purchase history. When add_to_cart=true, adds a median-priced average users order to cart (SIDE EFFECT — do NOT call twice). When revert=true, removes those same quantities from the cart, deleting a cart line when the whole quantity is removed (SIDE EFFECT). ALWAYS use for user queries about their 'usual order' or item buying patterns.","inputSchema":{"type":"object","properties":{"revert":{"type":"boolean","default":false},"context":{"type":"string"},"add_to_cart":{"type":"boolean","default":false}}},"logicalName":"get_typical_order","displayName":"get_typical_order","title":"get_typical_order","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_order_courier_note","description":"Change the delivery note to the courier on an ALREADY PLACED upcoming order (e.g. a door code, floor, entrance, 'leave at reception'). Requires the order_id. REPLACES the note (max 250 characters); pass an empty string to clear. The order's current note is returned by fetch_orders. For an order still being created in checkout use update_courier_instructions_checkout.","inputSchema":{"type":"object","required":["order_id","note"],"properties":{"note":{"type":"string","maxLength":250},"context":{"type":"string"},"order_id":{"type":"integer"}}},"logicalName":"update_order_courier_note","displayName":"update_order_courier_note","title":"update_order_courier_note","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"reserve_timeslot","description":"Temporarily reserve a delivery timeslot while the user keeps shopping. Accepts the numeric slot ID and slot type from a timeslot listing entry whose reservationEnabled field is true. Do not call this for reservationEnabled false or EXPRESS slots. This is not a checkout tool: do not call get_checkout, payment, or packaging tools for this request, and do not offer checkout as a fallback unless the user asks. FAPI still validates whether the current cart can be delivered in the selected slot.","inputSchema":{"type":"object","required":["timeslot_id","slot_type"],"properties":{"context":{"type":"string"},"slot_type":{"enum":["ON_TIME","VIRTUAL"],"type":"string"},"timeslot_id":{"type":"integer"}}},"logicalName":"reserve_timeslot","displayName":"reserve_timeslot","title":"reserve_timeslot","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"unreserve_timeslot","description":"Cancel the user's active delivery-timeslot reservation, freeing the held slot. Takes no arguments and affects only the current user's reservation. This is not checkout and must not call get_checkout, payment, or packaging tools.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"logicalName":"unreserve_timeslot","displayName":"unreserve_timeslot","title":"unreserve_timeslot","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_all_user_favorites","description":"See all products the user has marked as favorites. Use for quick reordering of beloved products, understanding taste preferences, or suggesting similar items the user might enjoy. Returns only a lightweight list (name, price, availability) without further details. If you need a product's description, composition, or other details, call get_product_details.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_all_user_favorites","displayName":"get_all_user_favorites","title":"get_all_user_favorites"},{"name":"get_user_shopping_lists_preview","description":"See all user's saved shopping lists with names and item counts. Use as first step when working with shopping lists - shows what lists exist before viewing details or adding items.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_user_shopping_lists_preview","displayName":"get_user_shopping_lists_preview","title":"get_user_shopping_lists_preview"},{"name":"get_user_shopping_list_detail","description":"Get shopping list details with products, prices, and stock. Use after preview to see list contents.","inputSchema":{"type":"object","required":["shopping_list_id"],"properties":{"context":{"type":"string"},"shopping_list_id":{"type":"integer"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_user_shopping_list_detail","displayName":"get_user_shopping_list_detail","title":"get_user_shopping_list_detail"},{"name":"add_products_to_shopping_list","description":"Add one or more products to an existing shopping list — up to 15 at once (extra items are dropped and reported in `warning`). Pass all items in the `products` array, each with product_id and optional amount (default 1). Products that cannot be added are listed in `failed` and success is false when any item failed. Call directly when user says 'add [items]' in a shopping list context; don't confirm list vs cart.","inputSchema":{"type":"object","required":["list_id","products"],"properties":{"context":{"type":"string"},"list_id":{"type":"integer"},"products":{"type":"array","items":{"type":"object","required":["product_id"],"properties":{"amount":{"type":"integer","default":1,"exclusiveMinimum":0},"product_id":{"type":"integer","exclusiveMinimum":0}}}}}},"logicalName":"add_products_to_shopping_list","displayName":"add_products_to_shopping_list","title":"add_products_to_shopping_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"remove_products_from_shopping_list","description":"Remove one or more products from an existing shopping list — up to 15 at once (extra IDs are dropped and reported in `warning`). Pass all product IDs in the `product_ids` array. Use when user wants to delete specific items from their list.","inputSchema":{"type":"object","required":["list_id","product_ids"],"properties":{"context":{"type":"string"},"list_id":{"type":"integer","exclusiveMinimum":0},"product_ids":{"type":"array","items":{"type":"integer"}}}},"logicalName":"remove_products_from_shopping_list","displayName":"remove_products_from_shopping_list","title":"remove_products_from_shopping_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_shopping_list","description":"Delete an entire shopping list. Use when user wants to remove a list they no longer need.","inputSchema":{"type":"object","required":["list_id"],"properties":{"context":{"type":"string"},"list_id":{"type":"integer","exclusiveMinimum":0}}},"logicalName":"delete_shopping_list","displayName":"delete_shopping_list","title":"delete_shopping_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_shopping_list","description":"Start a new empty shopping list with a custom name. Use before adding products to the list when user wants to create a new list.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"context":{"type":"string"}}},"logicalName":"create_shopping_list","displayName":"create_shopping_list","title":"create_shopping_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_checkout","description":"Get complete checkout form data with all sections and validation status. Returns address, payment, timeslot, packaging, cart total, card-hold total (amount blocked on card for online payment, slightly higher than the basket estimate when weighted items are present), validation warnings, and (when an upcoming order exists) a `suborder` block describing whether the cart can be merged into it. Use to review checkout before finalizing.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_checkout","displayName":"get_checkout","title":"get_checkout"},{"name":"get_checkout_link","description":"If you want to finalize the checkout, please call this function to get a URL and display that URL to the user so he can complete his checkout","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_checkout_link","displayName":"get_checkout_link","title":"get_checkout_link"},{"name":"update_courier_instructions_checkout","description":"Update courier instructions for the current checkout: the delivery note to the courier (e.g. a door code, floor, entrance, 'leave at reception') and/or the call-on-arrival preference. This is the message the courier reads, NOT the printed delivery note/receipt preference. For an ALREADY PLACED order use update_order_courier_note.","inputSchema":{"type":"object","properties":{"note":{"anyOf":[{"type":"string","maxLength":230},{"type":"null"}],"default":null},"context":{"type":"string"},"call_on_arrival":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null}}},"logicalName":"update_courier_instructions_checkout","displayName":"update_courier_instructions_checkout","title":"update_courier_instructions_checkout","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"change_checkout_packaging","description":"Change packaging for checkout. Switch between PAPER_BAGS and REUSABLE_BAGS (eco-friendly, deposit refunded on return). Set before order submit.","inputSchema":{"type":"object","required":["selected_packaging"],"properties":{"context":{"type":"string"},"selected_packaging":{"enum":["PAPER_BAGS","REUSABLE_BAGS"],"type":"string"}}},"logicalName":"change_checkout_packaging","displayName":"change_checkout_packaging","title":"change_checkout_packaging","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_payment_method_checkout","description":"Update the courier payment method (CARD_ON_PLACE or CASH) and/or toggle applying account credits to the order (use_credits). At least one of the two parameters is required. Note: CASH is NOT available for DE and AT tenants. This sets courier payment only; it does not process online card payment.","inputSchema":{"type":"object","properties":{"context":{"type":"string"},"use_credits":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null},"selected_payment_method":{"anyOf":[{"enum":["CARD_ON_PLACE","CASH"],"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"update_payment_method_checkout","displayName":"update_payment_method_checkout","title":"update_payment_method_checkout","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"toggle_delivery_note_checkout","description":"Set the printed delivery note (receipt) preference for the current checkout to the given value. Requires a payment method to be already selected in checkout.","inputSchema":{"type":"object","required":["do_not_print_delivery_note"],"properties":{"context":{"type":"string"},"do_not_print_delivery_note":{"type":"boolean"}}},"logicalName":"toggle_delivery_note_checkout","displayName":"toggle_delivery_note_checkout","title":"toggle_delivery_note_checkout","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"set_checkout_as_suborder","description":"Toggle suborder mode for the current checkout. When enabled, the cart is merged into the customer's upcoming order and reuses its delivery slot, address, payment method, and packaging at no extra delivery fee. Eligibility is exposed in `get_checkout` under `suborder.available`.","inputSchema":{"type":"object","required":["is_suborder"],"properties":{"context":{"type":"string"},"is_suborder":{"type":"boolean"}}},"logicalName":"set_checkout_as_suborder","displayName":"set_checkout_as_suborder","title":"set_checkout_as_suborder","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_timeslots_checkout","description":"Get available delivery timeslots for a specific day. Returns time windows, prices, capacity, slot IDs/types, and reservationEnabled. Only pass a slot to reserve_timeslot when reservationEnabled is true; an available slot with reservationEnabled false can be selected during checkout but cannot be held before checkout. Express slots cannot be reserved. Full slots are returned with capacityPercent 'NO CAPACITY' and no slotId (they cannot be selected); premium-only slots are listed only for premium","inputSchema":{"type":"object","required":["timeslots_day"],"properties":{"context":{"type":"string"},"timeslots_day":{"enum":["0","1","2","3"],"type":"string"},"include_15min_slots":{"type":"boolean","default":false}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_timeslots_checkout","displayName":"get_timeslots_checkout","title":"get_timeslots_checkout"},{"name":"change_timeslot_checkout","description":"Change selected timeslot during checkout. Requires a timeslot_id from the delivery-timeslots listing. Match exact customer time request - whole-hour slots (10:00-11:00) differ from quarter-hour slots (10:00-10:15). Use when selecting a delivery time for a NEW order (it does not reschedule an existing upcoming order).","inputSchema":{"type":"object","required":["timeslot_id"],"properties":{"context":{"type":"string"},"timeslot_id":{"type":"string"}}},"logicalName":"change_timeslot_checkout","displayName":"change_timeslot_checkout","title":"change_timeslot_checkout","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_recipe_detail","description":"Get recipe cooking instructions, ingredient list, and optional product mapping. Use after search to see prep steps and shopping requirements. Example queries: 'wie lange kochen', 'passende Beilage'. Mapping shows matching products with prices.","inputSchema":{"type":"object","required":["recipe_id"],"properties":{"context":{"type":"string"},"recipe_id":{"type":"integer"},"include_meta":{"anyOf":[{"type":"array","items":{"enum":["image","author","link"],"type":"string"}},{"type":"null"}],"default":null},"include_brand":{"type":"boolean","default":false},"include_prices":{"enum":["basic","full"],"type":"string","default":"basic"},"include_product_mapping":{"type":"boolean","default":true}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_recipe_detail","displayName":"get_recipe_detail","title":"get_recipe_detail"},{"name":"search_recipes_by_vector_similarity","description":"Find recipes by ingredients, meal type, or dietary needs. Semantic search. Example queries: 'Rezept mit Brokkoli und Kartoffeln', 'Rezepte mit Schweinefleisch', 'was kann ich aus meiner letzten Bestellung kochen', 'ich habe Spinat im Kühlschrank', 'glutenfrei und laktosefrei', 'Leberdiät', 'Diabetiker', 'Vegetarier', 'Rezeptideen', 'einfaches Gericht', 'Rezepte für zwei Erwachsene'.","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","default":5},"query":{"type":"string"},"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_recipes_by_vector_similarity","displayName":"search_recipes_by_vector_similarity","title":"search_recipes_by_vector_similarity"},{"name":"create_scheduled_task","description":"Create a recurring scheduled task that runs on a cron schedule and delivers notifications. Use when the user asks to be reminded, notified, or alerted about anything on a recurring basis. Be specific about what to check and when to notify.","inputSchema":{"type":"object","required":["cron","prompt"],"properties":{"cron":{"type":"string"},"prompt":{"type":"string"},"context":{"type":"string"},"channels":{"type":"array","items":{"type":"string","const":"push"},"default":["push"]}}},"logicalName":"create_scheduled_task","displayName":"create_scheduled_task","title":"create_scheduled_task","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_user_scheduled_tasks","description":"List all active scheduled tasks for the current user. Use when the user asks about their reminders, scheduled notifications, or wants to see what recurring alerts they have set up. Also call this before creating a new task to check if a similar one already exists.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_user_scheduled_tasks","displayName":"get_user_scheduled_tasks","title":"get_user_scheduled_tasks"},{"name":"cancel_scheduled_task","description":"Cancel a scheduled task so the user stops receiving that notification. Use when the user says 'stop reminding me', 'cancel my notification', or 'I don't want that alert anymore'. Always call get_user_scheduled_tasks first to find the task_id to cancel. Confirm with the user which task to cancel if they have multiple active tasks.","inputSchema":{"type":"object","required":["task_id"],"properties":{"context":{"type":"string"},"task_id":{"type":"string"}}},"logicalName":"cancel_scheduled_task","displayName":"cancel_scheduled_task","title":"cancel_scheduled_task","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_faq_content","description":"Fetch FAQ content for user's region (auto-detected). Returns markdown. Use for questions about store policies, loyalty programs, terms. Pass category slug (general, xtra_general, warranty, returnable_bags, terms_general, etc).","inputSchema":{"type":"object","properties":{"context":{"type":"string"},"category":{"enum":["general","xtra_general","xtra_price","baby_club","christmas","barrier_free","referral","premium","returnable_bags","office_delivery","rohlik_point","gift_vouchers","mcp_server","farmers_cooperation","partnership","sustainability","flavor_heroes","terms_general","terms_baby_club","terms_returnable_bags","terms_referral","terms_xtra_challenge","terms_sgr","coupon_redemption","warranty","birthday_promo","small_producer_cooperation","teamup","knihobot","career"],"type":"string","default":"general"},"force_refresh":{"type":"boolean","default":false}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_faq_content","displayName":"get_faq_content","title":"get_faq_content"},{"name":"get_url_content","description":"Scrape URL content to markdown. Supports actions (click, wait, scroll) for dynamic pages. Defaults to user's region homepage if no URL. Use for homepage/FAQ/terms/blog/career pages. For job listings use https://career.rohlik.group/group/jobs. Not for product search — scraping search-result pages (e.g. /hledat, /suche, google.com) is slow and unreliable; use the specialised tool for this. Set include_images=true for image URLs (use ![desc](url) in markdown). Cached unless actions or include_image","inputSchema":{"type":"object","properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"actions":{"anyOf":[{"type":"array","items":{"anyOf":[{"type":"object","required":["type","selector"],"properties":{"type":{"type":"string","const":"click"},"selector":{"type":"string"}}},{"type":"object","required":["type","milliseconds"],"properties":{"type":{"type":"string","const":"wait"},"milliseconds":{"type":"integer","minimum":0}}},{"type":"object","required":["type"],"properties":{"type":{"type":"string","const":"scroll"},"selector":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"direction":{"anyOf":[{"enum":["up","down"],"type":"string"},{"type":"null"}],"default":null}}},{"type":"object","required":["type","text"],"properties":{"text":{"type":"string"},"type":{"type":"string","const":"write"}}},{"type":"object","required":["type","key"],"properties":{"key":{"type":"string"},"type":{"type":"string","const":"press"}}}]}},{"type":"null"}],"default":null},"context":{"type":"string"},"max_images":{"type":"integer","default":20,"maximum":100,"minimum":1},"include_html":{"type":"boolean","default":false},"force_refresh":{"type":"boolean","default":false},"include_links":{"type":"boolean","default":false},"include_images":{"type":"boolean","default":false}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_url_content","displayName":"get_url_content","title":"get_url_content"},{"name":"submit_claim","description":"Process warranty claims for missing, damaged, or poor quality items. Credits customer account automatically. Each item needs inventoryId, claimedPieces, and reason. Reasons: missing_item, bad_quality, damaged_item, grocery_substitution, bad_weight, pests, other. Expired or near-expiration products (bad_expiration_date) are rejected — escalate those claims to a human agent instead of resubmitting under another reason. A required English `commentary` describing the issue is attached to the order f","inputSchema":{"type":"object","required":["order_id","items","commentary"],"properties":{"items":{"type":"array","items":{"type":"object","required":["inventoryId","claimedPieces","reason"],"properties":{"reason":{"enum":["missing_item","bad_quality","damaged_item","grocery_substitution","bad_expiration_date","bad_weight","pests","other"],"type":"string"},"inventoryId":{"type":"integer"},"claimedPieces":{"type":"integer","minimum":1}}}},"context":{"type":"string"},"order_id":{"type":"integer"},"commentary":{"type":"string","minLength":1},"gave_up_credits":{"type":"boolean","default":false}}},"logicalName":"submit_claim","displayName":"submit_claim","title":"submit_claim","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"submit_credit_compensation","description":"Compensate customers for collateral damage when one damaged product affects others (e.g., spilled liquid ruining nearby items). NOT for the damaged item itself (use submit_claim for that). Each product needs inventoryId and productName and must still be claimable in the warranty system (same eligibility checks as submit_claim). Severity: Low (minor stain), Medium (partially ruined), High (completely destroyed). Default: Medium.","inputSchema":{"type":"object","required":["order_id","products"],"properties":{"context":{"type":"string"},"order_id":{"type":"integer"},"products":{"type":"array","items":{"type":"object","required":["inventoryId","productName"],"properties":{"inventoryId":{"type":"integer"},"productName":{"type":"string"}}}},"severity":{"enum":["Low","Medium","High"],"type":"string","default":"Medium"}}},"logicalName":"submit_credit_compensation","displayName":"submit_credit_compensation","title":"submit_credit_compensation","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_user_reusable_bags_info","description":"Check customer's reusable bag count (how many they have at their address). Use for bag count issues (e.g. 'courier didn't scan my bags'). Returns bag tracking counts and deposit info. For deposit refund/money back requests, use cc workflow prompt tool with returnable bags workflow.","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_user_reusable_bags_info","displayName":"get_user_reusable_bags_info","title":"get_user_reusable_bags_info"},{"name":"adjust_user_reusable_bags","description":"Correct reusable bag count when tracking is inaccurate. Ask the customer their bag count before calling this — do not infer or assume. Only adjusts bag count — does not trigger deposit refund. For deposit refunds, consult get_customer_care_workflow_prompt with workflow_name='returnable_bags_issue'.","inputSchema":{"type":"object","required":["number_of_reusable_bags"],"properties":{"context":{"type":"string"},"reason_type":{"anyOf":[{"enum":["NOT_LOGGED_IN","PAPER_BAGS","DELIVERY_POINT","OTHER_REASON"],"type":"string"},{"type":"null"}],"default":null},"number_of_reusable_bags":{"type":"integer","maximum":25,"minimum":0}}},"logicalName":"adjust_user_reusable_bags","displayName":"adjust_user_reusable_bags","title":"adjust_user_reusable_bags","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_bag_delivery_history","description":"Get per-order reusable bag delivery history — which bags were delivered or returned for each order. Returns a list of bag-balance movements with orderId, count changes (atHomeDelta), running total (atHomeAfter), and event type (ARRIVED_TO_CUSTOMER, RETURNED_BY_CUSTOMER, EXITING_WAREHOUSE, etc.). Use when the customer asks which bags came with a specific order or wants to understand their bag movement history. For the current global bag balance, use get_user_reusable_bags_info instead.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":20,"maximum":50,"minimum":1},"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_bag_delivery_history","displayName":"get_bag_delivery_history","title":"get_bag_delivery_history"},{"name":"get_customer_support_contact_info","description":"Provide customers with ways to reach human support. Returns phone_number, email, whatsapp_link (CZ only), operational_hours, and is_currently_open indicating whether support is open right now. The channel the customer is currently using is omitted (phone_number on voice, whatsapp_link on WhatsApp).","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_customer_support_contact_info","displayName":"get_customer_support_contact_info","title":"get_customer_support_contact_info"},{"name":"cancel_order","description":"Cancels a confirmed upcoming delivery order (NOT the shopping cart). Cancel upcoming order (before picking starts). DESTRUCTIVE action.\nFor CHAT and VOICE channels: requires two-step confirmation flow:\n1. INQUIRY ('Can I cancel?') → call with customer_confirmed=false → returns cancellation terms/conditions\n2. CONFIRMED ('Yes, cancel it') → call with customer_confirmed=true → executes cancellation\nNEVER set customer_confirmed=true without prior explicit user confirmation.\nFor EMAIL channel there","inputSchema":{"type":"object","required":["order_id"],"properties":{"context":{"type":"string"},"order_id":{"type":"integer"},"customer_confirmed":{"type":"boolean","default":false},"cancellation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"readd_items_to_cart":{"type":"boolean","default":true}}},"logicalName":"cancel_order","displayName":"cancel_order","title":"cancel_order","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"remove_order_items","description":"Removes items from a confirmed upcoming delivery order (NOT from the shopping cart). Batch remove or reduce quantities of multiple items from an upcoming order (before picking starts). DESTRUCTIVE - requires two-step confirmation flow:\n1. INQUIRY → call with customer_confirmed=false → returns item details and terms for review.\n2. CONFIRMED → call with customer_confirmed=true → executes removals sequentially with progress updates\nNEVER set customer_confirmed=true without prior explicit user confi","inputSchema":{"type":"object","required":["order_id","items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["orderFieldId","updatedAmount"],"properties":{"orderFieldId":{"type":"integer"},"updatedAmount":{"type":"number","minimum":0}}}},"context":{"type":"string"},"order_id":{"type":"integer"},"customer_confirmed":{"type":"boolean","default":false}}},"logicalName":"remove_order_items","displayName":"remove_order_items","title":"remove_order_items","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"add_karma_rating","description":"Submit a courier karma rating to the Dataport API. Valence is derived from the rating: 4-5 is praise and 1-3 is a complaint. Optional is_praise and is_complaint flags, when provided, must agree with the rating. An order can be rated once per 30 days; a repeat call returns success with duplicate=True and creates no new rating.","inputSchema":{"type":"object","required":["order_id","rating","comment"],"properties":{"rating":{"type":"integer","maximum":5,"minimum":1},"comment":{"type":"string"},"context":{"type":"string"},"order_id":{"type":"integer"},"is_praise":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null},"is_complaint":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null}}},"logicalName":"add_karma_rating","displayName":"add_karma_rating","title":"add_karma_rating","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_customer_returnables","description":"Check the current customer's returnable bottle/crate situation (NOT eco-bags). Returns all available returnable types (with cargoId, name, description, hintText, unitPrice, maxCount), what has already been credited for the user's latest delivered order, AND how many correction calls remain (corrections_used / corrections_remaining). If corrections_remaining == 0, do NOT call credit_customer_returnables — escalate to a human agent instead. Also returns order_too_old (true if the order was deliver","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_customer_returnables","displayName":"get_customer_returnables","title":"get_customer_returnables"},{"name":"get_customer_returnables_declaration","description":"Check if the customer has pre-filled (declared) how many returnables they are returning for their latest delivered order. Returns whether a declaration exists and the declared quantities per returnable type. Package declarations (bottles, crates) exist only in markets whose app offers them; elsewhere the response carries eco-bag declarations only and packages_declaration_supported is false. Declared quantities are what the customer entered before the delivery, so they may not cover items handed","inputSchema":{"type":"object","properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_customer_returnables_declaration","displayName":"get_customer_returnables_declaration","title":"get_customer_returnables_declaration"},{"name":"credit_customer_returnables","description":"Credit returnable bottles/crates to the current customer's order (NOT eco-bags). Each package needs a cargoId (from get_customer_returnables) and a count. IMPORTANT: 'count' is the desired final total of credited pieces for that type — it replaces the current value, it is not additive. If order_id is omitted the latest delivered order is used automatically. REQUIRES EXPLICIT CUSTOMER CONFIRMATION: before calling this tool, state the exact returnable types and final counts to the customer and get","inputSchema":{"type":"object","required":["packages"],"properties":{"context":{"type":"string"},"order_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null},"packages":{"type":"array","items":{"type":"object","required":["cargoId","count"],"properties":{"count":{"type":"integer","minimum":1},"cargoId":{"type":"integer"}}}}}},"logicalName":"credit_customer_returnables","displayName":"credit_customer_returnables","title":"credit_customer_returnables","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"submit_product_wish","description":"Submit a product wish from a customer who is missing a product in the Rohlik/Knuspr range. Posts the suggestion to the Rohlik product suggestions system for product-team visibility.","inputSchema":{"type":"object","required":["product_name"],"properties":{"comment":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"default":null},"context":{"type":"string"},"product_name":{"type":"string","maxLength":500,"minLength":1},"consent_given":{"type":"boolean","default":false}}},"logicalName":"submit_product_wish","displayName":"submit_product_wish","title":"submit_product_wish","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_more_tools","description":"Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.","inputSchema":{"type":"object","required":["context"],"properties":{"context":{"type":"string"}}},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_more_tools","displayName":"get_more_tools","title":"get_more_tools"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Knuspr&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3Aua251c3ByLmRlL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Knuspr%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.knuspr.de%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Knuspr%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.knuspr.de%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Knuspr&connectorUrl=https%3A%2F%2Fmcp.knuspr.de%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Knuspr\" --url \"https://mcp.knuspr.de/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/knuspr-mcp-0ae78f0e3c","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/knuspr-mcp-0ae78f0e3c/tools/{tool}","mcpServerUrl":"https://mcp.knuspr.de/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/knuspr-mcp-0ae78f0e3c?live=1"}