watch.diy – DIY Store Finder
Server Details
Product availability and prices at German DIY stores (OBI, Bauhaus, toom, Hornbach…) by postcode
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
find_product answers 'which product is this / what does it cost online' while where_to_buy_nearby answers 'which nearby store has it' — two clearly separate questions with an explicit hand-off (use an EAN from find_product). The descriptions even cross-reference each other to steer selection, leaving no realistic path to picking the wrong tool.
Both names are lowercase snake_case and self-descriptive, but the conventions differ: find_product is a clean verb_noun, whereas where_to_buy_nearby is an interrogative phrase rather than a verb_noun action. It reads fine and is not confusing, just not a uniform pattern.
Only two tools exist, which is thin even for a narrow domain; there is no way to browse categories, look up a retailer, or resolve a product without a name/EAN/MPN. The two tools are individually well-scoped, but the surface feels minimal rather than deliberately tight.
The two core workflows — online product/price lookup and local store availability — are both fully covered, including error, quota and staleness semantics (priceAsOf, partial, unknown status). Minor gaps remain: no category or retailer discovery, no reverse lookup from a store, and no way to broaden a no-match search beyond retrying with a different identifier.
Available Tools
2 toolsfind_productFind a product and its prices per chainARead-onlyIdempotentInspect
Searches watch.diy's index of DIY and garden products at German retailers (OBI, Bauhaus, toom, Hornbach, hagebau, Globus and more) by product name, EAN or manufacturer part number (MPN), and returns up to limit (1-5, default 3) products, best match first. Per product: name, brand, its EANs and per retailer the retailer's product name, its product page url and price with priceAsOf (when the price was read; a price older than 35 days is returned as null with priceNote). Only products the retailers sell themselves and still list online; store availability is not part of this answer: use where_to_buy_nearby with an EAN from here and a German postcode. Also returns match (ean, identifier, hybrid or text: how the query was answered) and a notice. When nothing matches, products is empty and message says what the index covers. Limits: public lookups are limited per client. Errors: invalid_request (names the field and the reason), quota_exceeded (with the minutes until it can be tried again), public_unavailable.
Inputs: query (required), limit. Returns: match, notice, message, products
where_to_buy_nearbyCheck availability at stores near a postcodeARead-onlyInspect
Checks the availability of 1-3 products (EANs) at every OBI, Bauhaus, toom, Hornbach, hagebau and Globus store within radiusKm (1-30, default 10) of a German postal code, based on the retailers' pages. Returns per product and retailer: status (read; not_listed_in_our_data = watch.diy knows no listing of this product at that retailer, which may still sell it; no_store_in_radius), the retailer's product name, its product page url, price with priceAsOf (a price older than 35 days is returned as null with priceNote), and stores [{name, city, zip, km, state, updated}]. Store state is one of available, not_available, not_sold_in_store, unknown: available (the retailer's page shows it as available at that store), not_available (the retailer's page shows it as not available at that store; it does not mean the store never carries it), not_sold_in_store (the retailer does not sell it in that store), unknown (no information for that store). updated is "recently" (within the last 24 hours) or a date (YYYY-MM-DD). Also returns partial (true when there is no information for some stores), location {plz, radiusKm} and a notice. Can take a few seconds. Limits: public lookups are limited per client and per day. Errors: invalid_request (names the field and the reason, e.g. an unknown postal code), quota_exceeded (with the minutes until it can be tried again), public_unavailable.
Inputs: plz (required), products (required), radiusKm. Returns: notice, partial, location, products
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Price comparison for Germany and Austria. Read-only, no account. Shop links carry a commission.
Product catalogues, prices and stock from online stores and supermarkets.
German supermarket deals and regular prices (Aldi, Lidl, Kaufland, Penny...): where it's cheapest.
Live prices, offers and sellers by EAN/GTIN from Amazon, idealo, Google Shopping and 13 more.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables searching products, retrieving product details, listing stores, checking stock availability, and comparing prices across Czech DIY retailers.5MIT
- AlicenseBqualityBmaintenanceEnables AI assistants to search the toom.de DIY shop, manage a basket per market, check real stock, find markets and articles nearby, compare products, verify whether items fit a car or doorway, and plan pickup routes. It only reads and prepares data — checkout, payment, and article inquiries remain with the user on toom.de.22AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceMCP server that lets an LLM search and compare prices across four German hardware-store retailers (Hornbach, BAUHAUS, Globus, OBI), with store pickup availability for local branches.MIT

idealo MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).25MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.