MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Data access / search

MarketCheck API

MarketCheck automotive data: search US/UK listings, predict prices, decode VINs, market history.

Checks passed
14 / 22

1 failed · 7 not measured

Median response
1181 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
13

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
103
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 1057 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name Marketcheck API Server.

  • Pass
    Lists tools

    tools/list returned 13 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 1181 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 1293 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Pass
    Stable tool list

    No tool was removed and no required parameter was added in the last 30 days.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    522 of 634 parameters have a description (82%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Fail
    Website matches publisher

    The website host does not match the reverse-domain namespace.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-09-10T14:44:28.878254Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using MarketCheck API

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http marketcheck-api https://developers.marketcheck.com/api/mcp

Capabilities

Tools 13

decode_vin_neovin

Get vehicle specifications from NeoVIN decoder by VIN. Get the basic information on specifications for a car identified by a valid VIN from NeoVIN decoder. This provides detailed vehicle specifications including trim, engine, transmission, features, options and MSRP information.

Discovered
get_car_history

Get a car's online listing history by VIN. The history API returns online listing history for a car identified by its VIN. History listings are sorted in the descending order of the listing date / last seen date.

Discovered
get_server_info

Get information about the server. Returns: Server capabilities as a dict (serialized by the transport layer)

Discovered
get_sold_summary

Monthly sold-vehicle statistics for US franchise and independent dealers: how many sold, at what advertised prices, how fast, where, ranked however you ask. A "sale" is inferred (a listing left a dealer site and met MarketCheck's sold rules); prices are advertised asking prices, not transaction prices. History starts January 2021 and runs through the last complete month. No auction, private-party, UK or Canada data. Required: - inventory_type: new, used, certified, or all (all pools new and used into one row; add inventory_type to ranking_dimensions to split them). There is no default. Dates: - date_from / date_to: YYYY-MM-DD; date_from is the first day of a month, date_to the last day of a month (inclusive). Send both or neither; at most one year apart. Omit both for the last complete month. A same-month year-over-year comparison (e.g. July vs July) is more than a year, so make two calls. Geography (summary_by, default state): - summary_by=national for ONE ranking of the whole country. Use it for any "in America"/"nationally" question. Never add up per-state rankings: a make only appears in a state's rows when it makes that state's top_n, so the sum undercounts. - summary_by=state or city_state for rankings within each state or city. - state / city filters take comma-separated lists (OR). There is no ZIP or metro filter. Filters (comma-separated lists are OR; text matching is case-insensitive): - dealer_type: franchise, independent, or all. - dealership_group_name: exact group name(s), e.g. "Lithia Motors Inc.". Don't guess names: look them up with search_dealerships (field mc_dealership_group_name). An unknown name returns a 422. One name contains a comma ("Americas Car-mart, Inc."), so send it alone. - source: the website the sold listing was found on, e.g. carmax.com. For one dealer (rooftop), pass its inventory_url from search_dealerships / search_dealers. Finding a dealer or dealership group (use the dealer directory, never guess): - One dealer's sales: search_dealerships (or search_dealers) by name, city, state or zip, then call this tool with source=<inventory_url>. This also works for dealers that belong to no group, which is most sales. - A whole group's sales: take mc_dealership_group_name from search_dealerships and pass it as dealership_group_name. Only about 38% of sales carry a group, so ranking by dealership_group_name leaves the rest out. - Several rooftops at once: source takes a comma-separated list of inventory_urls. - make, model, trim, body_type, body_subtype, powertrain_type (Combustion, HEV, MHEV, BEV, PHEV, FCEV, EREV), drivetrain (4WD, FWD, RWD; there is no AWD), transmission (Automatic, CVT, Manual), base_exterior_color, base_interior_color, msrp_label, fuel_type_category (ice, ev, hybrid, unknown, other). - year: model year(s), e.g. 2024 or 2020,2022. year_range: inclusive, e.g. 2020-2024, 2020- or -2024. Use year or year_range, not both. - miles_range: inclusive odometer range, e.g. 0-60000, 60000-. Ranking: - ranking_dimensions: comma-separated fields to group and rank by (default make,model,body_type). Valid: year, make, model, trim, body_type, body_subtype, drivetrain, transmission, powertrain_type, fuel_type_category, base_exterior_color, base_interior_color, msrp_label, dealership_group_name, source, inventory_type; or none for a single market total. state is not a dimension: use summary_by. - ranking_measure (default sold_count): sold_count, price_over_msrp_percentage, price_over_mc_msrp_percentage, or a dotted statistic: price.mean, price.sum, price.p50 (median price), dom_active.mean (average days on market), dom_active.p50, dos_active.mean, miles.mean, msrp.mean, and others listed in the valid-values error. - ranking_order: desc (default) or asc. - top_n: rows kept per group (per month and geography), not per response. Default 10. - limit: total rows returned, 1 to 20000 (default 20000). Check `truncated` in the response: true means the limit cut rows. Measure filters remove whole groups after the statistics are computed, leaving the numbers in the remaining rows unchanged (the vehicle filters above act on vehicles, before statistics). Each takes a number with an optional >, <, >=, <= or = prefix, e.g. ">=30": - sold_count, price_over_msrp_percentage, price_over_mc_msrp_percentage. - min_sold_count: shorthand for sold_count >= n. - measure_filters: dotted statistics, e.g. {"price.mean": ">20000", "dom_active.mean": "<45"}. average_sale_price is now price.mean, total_sale_price is price.sum, average_days_on_market is dom_active.mean. - By default measure filters apply AFTER rank and top_n (ranks can read 1, 3, 7), so a floor with the default top_n of 10 often returns no rows. Either raise top_n (e.g. 100000) or set rank_after_filters=true to filter first. - Ascending rankings: ranking_order=asc alone returns thousands of ties at the minimum (everything that sold once). Pair it with a floor, e.g. ranking_measure=dom_active.mean, ranking_order=asc, min_sold_count=30, top_n=100000. Response: `data` rows carry month, the grouping fields, rank, sold_count and nested statistics (price, miles, dom_active, dos_active, msrp, mc_msrp with count, mean and percentiles) plus price_over_msrp_percentage. `result_count`, `truncated`, `warnings` and `applied` (the defaults and date window the API actually used) come back unchanged. The service scales to zero when idle: the first call after a quiet period can take about 9 seconds. Errors: a 422 names the offending parameter and how to fix it; correct the call and retry.

Discovered
predict_price_with_comparables

Predict car price along with comparable vehicles in the market. This provides predicted price, MSRP along with active set comparables to help understand market positioning and competitive pricing.

Discovered
search_active_cars

Search for cars in the United States and Canada market with comprehensive filters. This endpoint allows searching market vehicles that are up for sale in US and Canadian market right now. This endpoint serves only dealer listings. Carfax fields: `carfax_1_owner`, `carfax_clean_title` and other `carfax_*` values are incomplete in this dataset and are not supported as filters, facets or stats. They should not be used to describe ownership or title history. Filtering categorical fields (two steps). Field values in this API are not canonical English (e.g. fuel_type="Hybrid" is wrong; the actual value is "HEV" or "Electric / Unleaded"). Skipping step 1 leads to silent zero-result responses. STEP 1 — discover valid values: call this tool with only the `facets` parameter (and an optional location filter), rows=1, no other filters set. STEP 2 — filter for real: re-call with the exact strings returned in step 1. For instance, to filter cars by powertrain in New York: STEP 1 call: search_active_cars(facets="powertrain_type", rows=1, state="NY") -> returns {"powertrain_type": [{"item": "HEV", "count": 18058}, {"item": "PHEV", "count": 6004}, ...]} STEP 2 call: search_active_cars(powertrain_type="HEV,PHEV", state="NY") Fields that REQUIRE step 1 before being used as filters: powertrain_type, fuel_type, trim, body_type, drivetrain, transmission, make, model, exterior_color, interior_color. WRONG: search_active_cars(fuel_type="Hybrid") # silent zero-result CORRECT: search_active_cars(facets="fuel_type", rows=1) # discover valid values first then: search_active_cars(fuel_type="Electric / Unleaded") DEALER FILTERING: When any of dealer_id, source, mc_website_id, mc_dealer_id, mc_location_id, mc_rooftop_id, mc_dealership_group_id, mc_dealership_group_name, mc_sub_dealership_group_id, mc_sub_dealership_group_name, or mc_category are provided, this tool automatically routes to the Dealer Inventory Syndication API (GET /dealerships/inventory) instead of the standard inventory search API for optimized dealer-specific inventory retrieval. Use search_past_90_days for expired/sold dealer inventory analysis. STALENESS METRICS — dos_active vs dom_active (read before answering "how long has this car been for sale" questions): - dos_active (Days on Site): days this listing has been active at the CURRENT dealer. Answers "how long has THIS DEALER been trying to sell this car." DEFAULT: use dos_active for stale-inventory and "how long has it been listed" questions (e.g. finding dealers with stale inventory in an area). - dom_active (Days on Market): cumulative days the VEHICLE has been actively listed for sale across all dealers — it survives dealer-to-dealer transfers. Use only when the question is about the vehicle's total market exposure, e.g. evaluating a car at auction or in a dealer trade: a car showing dos_active=15 at the current store may show dom_active=60 because it has been passed around dealers for two months. This rule applies to choosing filter params (dos_active_range vs dom_active_range), sort_by values, and which field to read and report from listing results. When unsure which the user means, default to dos_active.

Discovered
search_dealers

Search the legacy MarketCheck dealer directory (one-website-per-dealer model). search_dealerships is recommended for new use cases. This endpoint is being phased out; use it only when you specifically need legacy `dealer_id`-style records or the `listing_count_range` inventory-size filter, which is not available on the dealerships endpoint. For get_sold_summary, a dealer's inventory_url here is its `source` value. This endpoint has no dealership-group field; use search_dealerships for group names. Geospatial: pass (latitude AND longitude) OR zip, plus radius (miles, max 7000). Pagination: rows default 10, max 50; start default 0; (start * rows) cannot exceed 10000.

Discovered
search_dealerships

Search the MarketCheck dealership directory (current, multi-rooftop, group-aware). Use this for "who/where is the dealer?" lookups. For inventory, use search_active_cars. Recommended over search_dealers unless legacy `dealer_id`-style results are needed. This is also the lookup for get_sold_summary (sold-vehicle statistics): - A dealer's (rooftop's) sales: pass its inventory_url as get_sold_summary `source`. Several rooftops: comma-separated inventory_urls. - A dealership group's sales: pass mc_dealership_group_name as get_sold_summary `dealership_group_name`. Filter here with mc_dealership_group_name to list a group's rooftops. Geospatial: pass (latitude AND longitude) OR zip, plus radius (miles, max 7000). mc_category values: Dealer, Retailer, Dealership Group, Aggregator, Marketing, Financing. Pagination: rows default 10, max 50; start default 0; (start * rows) cannot exceed 10000.

Discovered
search_oem_incentives

Search for OEM (manufacturer) incentive offers across all brands. Searches for rebates, financing deals, and lease specials with 50+ filter parameters. Use this when searching across multiple OEMs or doing broad searches.

Discovered
search_oem_incentives_by_zip

Search for incentives from a specific manufacturer in a location. Optimized for finding all available incentives from a specific OEM in a geographic area. Automatically converts ZIP to MSA code for regional relevance. Use this when you know both the manufacturer and location.

Discovered
search_past_90_days

Search for recent car inventory (EXPIRED/SOLD listings from last 90 days) with comprehensive filters following Marketcheck API structure. Scope: this endpoint serves only expired/sold listings from the last 90 days for US and CA (Canada) markets, not active listings. For currently active listings, use the search_active_cars tool instead. Carfax fields: `carfax_1_owner`, `carfax_clean_title` and other `carfax_*` values are incomplete in this dataset and are not supported as filters, facets or stats. They should not be used to describe ownership or title history. Tip: before filtering by specific field values (make, model, trim, body_type, fuel_type, etc.), use the 'facets' parameter to discover available values in the API. Field values may be represented differently than expected. For example: - Use facets="make,model,trim,body_type" to see all available options - This prevents filtering errors due to incorrect field value assumptions - Facets show actual data distribution and available filter options VIN vs Listing ID Disclaimer: - A single VIN can have multiple listings, each with a unique listing ID - Listing ID changes when there are changes in price or miles of the listing - When expired=false is set, it shows listings for VINs that are currently active in the market (not sold yet), but the specific listing is expired. The latest/current listing for that VIN is present in the active search API - This endpoint shows historical listing data (expired listing IDs) for market analysis, not current inventory This endpoint is designed for analytical use cases including: - Historical market analysis of sold vehicles - Sold vehicle pricing trends and patterns - Days on market analysis for expired listings - Dealer inventory turnover and sales analysis - Market intelligence from recently sold inventory Key use cases: - Analyze recent sales trends and pricing - Get sold/expired listings for market intelligence - Calculate average market prices from recent inventory - Track dealer inventory turnover patterns Due to performance reasons, this endpoint is more restrictive than active search: - Does not accept facets, stats and range_facets in a single call - Requires one of: city, state, zip, (latitude+longitude+radius), source, or dealer_id - For geo queries, radius cannot be greater than 100 miles - Charged at higher rates than active search endpoint STALENESS METRICS — dos_active vs dom_active (read before answering "how long was this car for sale" questions): - dos_active (Days on Site): days the listing was active at the CURRENT dealer. Answers "how long did THIS DEALER try to sell this car." DEFAULT: use dos_active for stale-inventory and "how long was it listed" questions. - dom_active (Days on Market): cumulative days the VEHICLE was actively listed across all dealers — it survives dealer-to-dealer transfers. Use only when the question is about the vehicle's total market exposure, e.g. evaluating a car at auction or in a dealer trade: a car showing dos_active=15 at the current store may show dom_active=60 because it was passed around dealers for two months. This rule applies to choosing filter params (dos_active_range vs dom_active_range), sort_by values, and which field to read and report from listing results. When unsure which the user means, default to dos_active.

Discovered
search_uk_active_cars

Search for active cars in the UK market. This tool searches for currently active car listings in the UK using the Marketcheck API. It supports comprehensive filtering by location, vehicle specifications, price, and more. Includes all parameters supported by the /search/car/uk/active endpoint. Carfax fields: `carfax_1_owner`, `carfax_clean_title` and other `carfax_*` values are incomplete in this dataset and are not supported as filters, facets or stats. They should not be used to describe ownership or title history. Tip: before filtering by specific field values (make, model, trim, body_type, fuel_type, etc.), use the 'facets' parameter to discover available values in the API. Field values may be represented differently than expected. For example: - Use facets="make,model,trim,body_type" to see all available options - This prevents filtering errors due to incorrect field value assumptions - Facets show actual data distribution and available filter options STALENESS METRICS — dos_active vs dom_active (read before answering "how long has this car been for sale" questions): - dos_active (Days on Site): days this listing has been active at the CURRENT dealer. Answers "how long has THIS DEALER been trying to sell this car." DEFAULT: use dos_active for stale-inventory and "how long has it been listed" questions. - dom_active (Days on Market): cumulative days the VEHICLE has been actively listed for sale across all dealers — it survives dealer-to-dealer transfers. Use only when the question is about the vehicle's total market exposure, e.g. evaluating a car at auction or in a dealer trade: a car showing dos_active=15 at the current store may show dom_active=60 because it has been passed around dealers for two months. This rule applies to choosing filter params (dos_active_range vs dom_active_range), sort_by values, and which field to read and report from listing results. When unsure which the user means, default to dos_active.

Discovered
search_uk_recent_cars

Search for recent/expired cars in the UK market (last 90 days). This tool searches recent inventory data for expired/sold listings only. It does not include active listings - use search_uk_active_cars for current inventory. Carfax fields: `carfax_1_owner`, `carfax_clean_title` and other `carfax_*` values are incomplete in this dataset and are not supported as filters, facets or stats. They should not be used to describe ownership or title history. Tip: before filtering by specific field values (make, model, trim, body_type, fuel_type, etc.), use the 'facets' parameter to discover available values in the API. Field values may be represented differently than expected. For example: - Use facets="make,model,trim,body_type" to see all available options - This prevents filtering errors due to incorrect field value assumptions - Facets show actual data distribution and available filter options STALENESS METRICS — dos_active vs dom_active (read before answering "how long was this car for sale" questions): - dos_active (Days on Site): days the listing was active at the CURRENT dealer. Answers "how long did THIS DEALER try to sell this car." DEFAULT: use dos_active for stale-inventory and "how long was it listed" questions. - dom_active (Days on Market): cumulative days the VEHICLE was actively listed across all dealers — it survives dealer-to-dealer transfers. Use only when the question is about the vehicle's total market exposure, e.g. evaluating a car at auction or in a dealer trade: a car showing dos_active=15 at the current store may show dom_active=60 because it was passed around dealers for two months. This rule applies to choosing filter params (dos_active_range vs dom_active_range), sort_by values, and which field to read and report from listing results. When unsure which the user means, default to dos_active.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected1057 ms13
Connected1305 ms13