# de.dm.mcp/dm-drogerie-markt

> Real-time product data, semantic search and more from dm-drogerie markt, Europe's leading drugstore.

- name: de.dm.mcp/dm-drogerie-markt
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 69/100 flags: no-repository
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/de.dm.mcp%2Fdm-drogerie-markt
- tools: https://api.protogrid.dev/v1/servers/de.dm.mcp%2Fdm-drogerie-markt/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "dm-drogerie-markt": {
      "type": "http",
      "url": "https://mcp.dm.de/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 45
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-100% -stale-187d -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 3 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,524 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 2,524 tokens to load them all
- tool set hash: b162c9c60ee140fbfcfce65041a662d1
- badge: [![protogrid quality](https://protogrid.dev/badge/de.dm.mcp/dm-drogerie-markt.svg)](https://protogrid.dev/servers/de.dm.mcp/dm-drogerie-markt)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.dm.de/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (5)

- `findNearbyStores`: 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.
- `getProductDetails`: 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

- `getStoreAvailability`: 
            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.
            
- `renderProductTiles`: 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

- `searchProducts`: 
		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.
		
