chrono24-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Verbose fetch logging to stderr. | false |
| HEADLESS | No | Set false to run a visible browser (useful when a challenge needs manual completion once). | true |
| MAX_BATCH | No | Cap for get_watches. | 10 |
| CURRENCY_ID | No | Fallback for the reported currency field. The actual price currency is geo-assigned by Chrono24 and detected from responses. | USD |
| PROFILE_DIR | No | Browser profile holding the Cloudflare clearance cookie. | ~/.cache/chrono24-mcp/profile |
| BLOCK_ASSETS | No | Skip downloading images/fonts/media for lower bandwidth (challenge resources always load). | false |
| CHROME_CHANNEL | No | Prefer installed Google Chrome; set false to force bundled Chromium. | true |
| REQUEST_DELAY_MS | No | Min spacing between Chrono24 requests. Raise it if you ever see challenges. | 3500 |
| CHRONO24_BASE_URL | No | Upstream base URL. | https://www.chrono24.com |
| DETAIL_CACHE_TTL_S | No | Detail cache TTL. | 1800 |
| SEARCH_CACHE_TTL_S | No | Search cache TTL. | 180 |
| CHALLENGE_TIMEOUT_MS | No | How long to wait for a Cloudflare challenge to clear. | 45000 |
| TAXONOMY_CACHE_TTL_S | No | Brand/model taxonomy cache TTL (also persisted to disk inside the profile dir). | 86400 |
| JSON_REQUEST_DELAY_MS | No | Spacing for lightweight same-origin JSON API calls (dealer ratings). Page scrapes keep REQUEST_DELAY_MS. | 1500 |
| NAVIGATION_TIMEOUT_MS | No | Playwright navigation timeout per request. | 45000 |
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 | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_listingsA | Search Chrono24 watch listings. Returns up to 60 cards per page with id, url, title, price, location, seller type and thumbnail - enough to shortlist without fetching details. Free-text queries match fuzzily; for a precise model scope pass manufacturerIds + models (from find_models) or referenceNumber. |
| get_watchA | Get full details for one Chrono24 listing by id: reference, specs (movement, case, caliber), box/papers, dealer info, all photos and the canonical URL. |
| get_watchesA | Get full details for a shortlist of up to 10 Chrono24 listing ids. Runs politely and sequentially; uncached ids take ~4s each. |
| list_brandsA | List Chrono24 watch brands with their numeric ids (550+). Use an id with search_listings' manufacturerIds, or a name with find_models. |
| find_modelsA | List a brand's model catalog (model name, slug and numeric model id). Pair the model id with search_listings' models param and the brand id with manufacturerIds for precise searches. |
| list_filtersA | List Chrono24 search facet filters with their allowed values (case material, bracelet material, gender, watch category, country, listing age, ...). Use values with search_listings' facets param. |
| get_price_statsA | Price statistics for a watch across Chrono24: min, percentiles (p10/p25/median/p75/p90), max and sample size. Default 'cheapest' mode is one polite request (lower-tail biased when >60 match); sample:'spread' adds up to 2 requests and interpolates percentiles across the full price range. |
| get_dealer_listingsA | List a dealer's current inventory by their customerId (from get_watch's sellerIds). Same card shape as search_listings. |
| get_dealer_ratingsA | Fetch a dealer's customer reviews by their dealerId (from get_watch's sellerIds - NOT the customerId). Includes per-review rating, text, dealer reply and paging totals; filter with stars (1-5). |
| get_dealer_rating_summaryA | Star histogram and weighted average rating for a dealer, reconstructed from per-star review counts. 5 lightweight requests (~8s uncached, then cached 30 min) - use it to vet an unfamiliar dealer before recommending a purchase. For several dealers, prefer get_dealer_rating_summaries. |
| get_dealer_rating_summariesA | Star histograms and average ratings for up to 5 dealers in one call (~8s per uncached dealer, cached 30 min). Vet all shortlisted sellers at once; per-dealer failures don't break the batch. |
| find_dealsA | Find listings priced below market for a watch scope: computes full-range price stats (up to 3 polite requests), then returns the cheapest listings at or below the market p25 with their percentage below median. The one-call answer to 'find me a good deal on X'. Free-text scopes match fuzzily (a 'Black Bay 58 GMT' query can match plain Black Bay 58s) - prefer manufacturerIds + models or referenceNumber for precision. |
| search_allA | Aggregate multiple result pages into one deduplicated list (60 listings per page, one polite ~4s request per uncached page, capped at 5 pages). Use for exhaustive scans; prefer search_listings for quick looks. |
| value_collectionA | Appraise up to 10 watches in one call: per-item market price stats (one polite request each) plus portfolio totals (sum of medians/p25/p75). Give each item a reference number or query, optionally condition/year. |
| save_searchA | Save a named search scope and seed it with the current listings, so check_saved_searches later reports only NEW listings. Persists across restarts. One polite request to seed. |
| list_saved_searchesA | List all saved searches with their scopes and last-checked times. No network requests. |
| check_saved_searchesA | Re-run saved searches and report only listings that appeared since the last check. One polite request per search - ideal for a scheduled agent. Pass name to check a single search. |
| delete_saved_searchA | Remove a saved search by name. No network requests. |
| server_statusA | Diagnostics: browser state, cache and disk-cache freshness, politeness settings. No network requests - useful when calls feel slow or stuck. |
| get_model_guideA | Chrono24's editorial buying guide for a model: history, 'how much does it cost', investment notes and the per-reference approximate price table (e.g. Submariner 6538 'James Bond' ~148,000 USD). One polite request, cached 24h. |
| get_watch_photosA | Fetch a listing's photos as inline images so their condition and authenticity cues can be inspected visually. Large ~28KB each. Fast CDN fetches (no politeness delay needed). |
| watch_listingA | Track a specific listing for price changes and sold/removed status; check_watched_listings reports what changed. Persists across restarts. One polite request to seed. |
| unwatch_listingA | Stop tracking a listing. No network requests. |
| check_watched_listingsA | Re-check every watched listing and report price changes and sold/removed status. One polite request per listing not in the 30-min detail cache - ideal for a scheduled agent. |
| health_checkA | Live canary: two polite requests (one search, one detail) asserting the parsing invariants that matter. Run after Chrono24 markup changes are suspected, or on a schedule. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| appraise_watch | Estimate fair market value for a watch (reference, model or description) |
| vet_dealer | Assess whether a Chrono24 seller is trustworthy before buying |
| find_deal | Find and vet the best-value listing for a watch, end to end |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 25 tools
The dealer rating tools (get_dealer_ratings, get_dealer_rating_summary, get_dealer_rating_summaries) are very easy to mix up, and get_watch/get_watches/get_watch_photos plus search_listings/search_all create near-duplicate entry points. Although the descriptions are detailed, an agent selecting by name/purpose would frequently have to disambiguate near-synonyms.
Almost every tool follows a clear verb_noun snake_case pattern such as search_listings, get_watch, list_brands, save_search, and delete_saved_search. Minor exceptions like health_check, server_status, and value_collection are noun phrases, but they do not disrupt the overall predictability.
25 tools sits at the upper edge of the 'heavy' band and includes several plural/batch variants like get_watches, get_dealer_rating_summaries, and search_all that add surface area. The broad domain of search, dealer vetting, pricing, saved searches, and tracking mostly justifies the count, but a few could be consolidated.
The tool set covers the full research workflow: find listings, inspect details and photos, vet dealers, get price statistics and deals, appraise collections, save searches, track listings, and diagnose server health. There are no major dead ends for a Chrono24 research/buying agent, and even editorial model guides and caching diagnostics are included.