dm-drogerie-markt
Real-time product data, semantic search and more from dm-drogerie markt, Europe's leading drugstore.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"dm-drogerie-markt": {
"url": "https://mcp.dm.de/mcp"
}
}
}Remote endpoints
https://mcp.dm.de/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢findNearbyStores(location, min_results, store_open, storeServices_filter)
Findet dm-Märkte in der Nähe eines Ortes. Erfordert eine eindeutig identifizierbare Ortsangabe (Stadt, Stadtteil, PLZ, Straße mit Stadt oder vollständige Adresse mit Stadt). Bei Straßenname ohne Stadt oder mehrdeutigen Angaben das Tool NICHT aufrufen, sondern Rückfrage stellen. Tool genau einmal pro Anfrage aufrufen. Filter-Args (storeServices_filter, store_open=true) DÜRFEN in einem zweiten Call NICHT entfernt oder gelockert werden — sonst werden dem Kunden Märkte angezeigt, die seine Anforderungen nicht erfüllen (z.B. ein nicht-barrierefreier Markt bei Filter 'barrierefrei', ein geschlossener Markt bei store_open=true). Eine leere oder kurze Ergebnisliste ist die korrekte Antwort, wenn kein Markt das Kriterium erfüllt. Gibt TOON-formatierte Marktdaten zurück (storeId, Name, Adresse, Telefon, Koordinaten, Öffnungszeiten, Ausstattungsmerkmale, Distanz in km). Märkte aufsteigend nach distanceKm sortiert. Das Feld next7Days enthält die effektiven Öffnungszeiten der nächsten 7 Tage ab heute (Zeitzone Europe/Berlin) — inklusive Sonderschließungen (z.B. Feiertage) und Sonderöffnungszeiten (z.B. verkaufsoffener Sonntag), die die Standardzeiten überschreiben. Pro Tag 'Wochentag TT.MM. HH:MM-HH:MM' (mehrere Spannen mit '; ' getrennt) oder 'Wochentag TT.MM. geschlossen'; die Tage sind mit ' / ' getrennt, der erste Tag ist heute. Beispiel: 'Do 18.06. 09:00-20:00 / Fr 19.06. 08:00-20:00 / Sa 20.06. geschlossen'. Fragen zu einem konkreten Wochentag innerhalb der nächsten 7 Tage (z.B. 'Hat der Markt Samstag geöffnet?') aus diesem Feld beantworten. Tage darüber hinaus sind NICHT enthalten — dafür darauf hinweisen, dass nur die nächsten 7 Tage vorliegen. Das Feld amenities listet die offiziellen Bezeichnungen der Ausstattung und Services. Kunden fragen oft mit Marken-, Umgangs- oder Synonymnamen, die davon abweichen — diese auf die amenities abbilden, z.B. ist der 'Sapur' bzw. 'Sapur-Teppichreiniger' als 'Teppichreiniger ausleihen' gelistet. Ist ein passendes Merkmal vorhanden, die Frage bejahen; nur verneinen, wenn kein entsprechendes Merkmal in amenities steht.
Input Schema
{
"type": "object",
"properties": {
"location": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Eindeutige Ortsangabe. Ausreichend: 'Calw', 'Stuttgart Mitte', '76131' (PLZ), 'Bahnhofstraße 5 Karlsruhe'. NICHT ausreichend (Rückfrage stellen): 'Kurpfalzstraße' (Straße ohne Stadt)."
},
"min_results": {
"default": 5,
"description": "Minimale Anzahl zurückgegebener Märkte",
"type": "integer",
"minimum": 1,
"maximum": 20
},
"store_open": {
"default": false,
"description": "Nur aktuell geöffnete Märkte zurückgeben",
"type": "boolean"
},
"storeServices_filter": {
"description": "Filtert Märkte nach Ausstattungsmerkmal, z.B. 'Stillecke', 'Wickeltisch', 'Parkplätze', 'barrierefrei'. Einmal gesetzt, in Folge-Calls derselben Anfrage beibehalten.",
"type": "string",
"maxLength": 100
}
},
"required": [
"location"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢getProductDetails(gtins, dans)
Retrieve detailed product information for dm-drogeriemarkt products. USE WHEN: ingredients, nutrition facts, allergens, usage instructions, warnings, hazard info, product URLs/images INPUT: DANs (7 digits, preferred) and/or GTINs (8-14 digits) multiple products can be requested at once min 1 / max 50. Use search tool first if only product name is known. OUTPUT: TOON format (compact YAML-like). Fields: name, brand, description, ingredients, nutrition, allergens, usage, warnings, URLs, images. found=false for unresolved IDs. NOT FOR: prices, availability, stock, reviews, recommendations ERRORS: validation error if >50 or no identifiers
Input Schema
{
"type": "object",
"properties": {
"gtins": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "GTINs (8-14 digits)"
},
"dans": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "DANs (exactly 7 digits, preferred over GTIN)"
}
},
"required": [],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢renderProductTiles(gtins, dans)
Retrieve dm-drogeriemarkt products and render them as a visual card grid (product image, brand, name, link to the product page). USE WHEN: the user wants to see products, an overview of several products, or a picture/link instead of a text description INPUT: DANs (7 digits, preferred) and/or GTINs (8-14 digits) multiple products can be requested at once min 1 / max 50. Use search tool first if only product name is known. OUTPUT: card grid rendered by the host. found=false for unresolved IDs. NOT FOR: ingredients, nutrition facts, allergens, warnings - the cards do not show them, use getProductDetails for those. Not for prices, availability, stock, reviews, recommendations. ERRORS: validation error if >50 or no identifiers
Input Schema
{
"type": "object",
"properties": {
"gtins": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "GTINs (8-14 digits)"
},
"dans": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "DANs (exactly 7 digits, preferred over GTIN)"
}
},
"required": [],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢searchProducts(query)
Search for products available in the German dm-drogerie market (online and local stores). USE WHEN: searching dm-drogerie products by name, category, ingredient, property, or any natural language query (any language supported). Often answers questions about ingredients and properties directly. Covers: dm-drogerie markt brands, make-up, skincare, perfume, hair, health, nutrition, baby & child, household, home & living, photo, and pets. OUTPUT: Returns a maximum of 15 products. GTIN, DAN, brand, title, details, category, price, appLink (direct product URL), description, highlights/USPs, and extensive attributes including: - Dietary/Allergen: vegan, vegetarian, bio, glutenFree, lactoseFree, sugarFree, nutFree, soyFree - Cosmetic Ingredients: fragranceFree, alcoholFree, parabenFree, sulfateFree, preservativeFree, dyeFree, oilFree, siliconeFree, naturalCosmetics - Product Properties: waterproof, new, limitedEdition, sellout, onlineOnly, exclusiveDm, dmBrand, purchasable NOT FOR: nutritional information (calories, protein, carbs, fats), complete allergen lists, full ingredient details. For these, use 'getProductDetails' tool with the GTINs or DANs. LIMITATIONS: Only make claims based on EXPLICITLY stated product highlights/descriptions. Do NOT extrapolate or assume properties not mentioned in the results.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query for dm-drogerie products"
}
},
"required": [
"query"
]
}🟢getStoreAvailability(storeIds, dans)
Check whether one or more dm-drogeriemarkt products are available in one or more specific stores right now. USE WHEN: you need to know if one or more products can currently be bought in one or more particular physical stores. INPUT: one to five storeIds and one to ten DANs (dm product numbers). OUTPUT: for each requested DAN, whether it was found and a status per requested storeId - VERFUEGBAR (available, includes current stockLevel), NICHT_VERFUEGBAR (not available in this store right now), NUR_ONLINE (this product is not carried in ANY dm store, not just this one), PRODUKT_UNBEKANNT (DAN not found), or STORE_UNBEKANNT (storeId does not exist in our system). IMPORTANT: NUR_ONLINE means the product itself is never sold in physical dm stores - it will be the same result for every store. Do not check other or nearby stores for that product; tell the customer it is online-only right away. IMPORTANT: storeIds MUST come from the findNearbyStores tool - call it first to resolve the storeId(s) for a location. Never invent, guess, or otherwise make up a storeId yourself; a made-up storeId will come back as STORE_UNBEKANNT instead of a real availability answer. IMPORTANT: if a customer asks about availability for several products, pass ALL of their DANs (up to 10) into this single call. Never assume, infer, or extrapolate the availability of a product you have not included in a call and gotten a result for - not even from a similar or already-checked product, and not even for "usually available" items. When reporting back, state the result for every single product individually (e.g. one line per product) - never collapse multiple products into one summary statement such as "all of them are available". TIP: if a product's result is NUR_ONLINE, or it is NICHT_VERFUEGBAR and you already know from an earlier product lookup that it is available online, suggest buying it online instead and include a link to the product page if you have one. NOT FOR: click & collect / express pickup or same-day delivery eligibility (not covered by this tool), or repeatedly polling a store's stock over time. ERRORS: validation error if any DAN is invalid, dans is empty, more than 10 dans are given, storeIds is empty, or more than 5 storeIds are given.
Input Schema
{
"type": "object",
"properties": {
"storeIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Store IDs of the physical dm stores (1-5)"
},
"dans": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "DANs (dm product numbers) (1-10)"
}
},
"required": [
"storeIds",
"dans"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence