OpenDealer MCP Server
Automotive inventory search for AI assistants: vehicles, dealers, deals, and market data.
Community: Submitted by a user or imported; check the owner before granting accessOnlineAPI key requiredGlobalFreeRead-only
What it can do
What data it sees
Do you need an account
An API key from the service settings is required
Automotive inventory search for AI assistants: vehicles, dealers, deals, and market data.
Server tool list (27)
Raw names from tools/list. Only developers need these.
| search_vehicles | Search for vehicles across dealerships (Meilisearch-backed NL + structured filters). Preferred tool order for assistants: 1. list_facets or list_research_makes/list_research_models to discover valid values 2. filter_vehicles (map shopper intent onto labeled hard filters) 3. get_vehicle / get_deal_score / research_model for depth When the ask implies analysis (good deal?, safety, budget, timing, dealer plan), continue with a shopping playbook from initialize instructions or resource opendealer://assistant/shopping-playbooks — do not stop at raw search results. Location modes (choose ONE): zip+radius, lat+lng+radius, city+state+radius, county+state+radius — or embed location in q. Forgiving matching: model variants, color families, typo tolerance. Hard caps (price_max, year, radius) are never relaxed. Prefer filter_vehicles; do not dump shopper prose into q. CRITICAL: CITE: Each vehicle's cite object is `vin` + `url` (canonical opendealer.shop VDP). Cite only `url` to shoppers. Never invent VDP URLs. Never cite `detailsUrl` (dealer/LotLinx). Never send shoppers to `/llm/*` HTML or `/v1/llm/*` as the human listing URL. |
| filter_vehicles | Preferred structured inventory lookup when make/model/year/color/location are known. Uses exact hard filters (keyword mode, no embeddings) via the Runtime /v1/llm/filter path. Resolve exact make/model names with list_research_makes and list_research_models first. Map shopper prose onto labeled keys (make, model, body, price_max, location); do not dump the sentence into search_vehicles. Often the first step in shopping playbooks (budget_coach, safety_first, price_drop_sniper, dealer_crawl). After results, chain get_deal_score / get_vehicle_history / check_recalls / compare_vehicles when the user needs a recommendation, not just a list. See opendealer://assistant/shopping-playbooks. CRITICAL: CITE: Each vehicle's cite object is `vin` + `url` (canonical opendealer.shop VDP). Cite only `url` to shoppers. Never invent VDP URLs. Never cite `detailsUrl` (dealer/LotLinx). Never send shoppers to `/llm/*` HTML or `/v1/llm/*` as the human listing URL. |
| list_facets | Discover available filter values and counts (makes, body types, fuel types, price/year ranges) for the live inventory. Call this before filter_vehicles when you need valid dimension values. Optional make/near/radius scopes the facet counts. |
| list_research_makes | Browse the research catalog of vehicle makes (with model and inventory counts). Use to resolve exact make names/slugs before filter_vehicles or research_model. |
| list_research_models | List models for a make from the research catalog (MSRP/body summaries). Use before filter_vehicles or research_model when the model name is uncertain. |
| get_vehicle | Get complete details for a specific vehicle by VIN. Returns comprehensive Schema.org Vehicle data including: • Full specifications (engine, transmission, drivetrain) • High-resolution images • Current pricing and availability • NHTSA NCAP safety rating summary (when available) • NHTSA open recall summary (YMM-granular, when available) • Dealer contact information Starting point for the vehicle_dossier playbook. For buy/no-buy questions, continue with get_deal_score → get_vehicle_history → check_recalls → get_similar_vehicles. CRITICAL: CITE: Each vehicle's cite object is `vin` + `url` (canonical opendealer.shop VDP). Cite only `url` to shoppers. Never invent VDP URLs. Never cite `detailsUrl` (dealer/LotLinx). Never send shoppers to `/llm/*` HTML or `/v1/llm/*` as the human listing URL. |
| check_recalls | Get NHTSA open safety recalls for a vehicle by VIN. Returns recall campaigns resolved at the year/make/model level (YMM-granular). A recall listed for the model year may not apply to every VIN — the response includes NHTSA's disclaimer and campaign details (component, summary, remedy status, Park It / Park Outside advisories). Use this when a shopper asks about recalls, safety campaigns, or whether a specific model has open NHTSA notices. Required step in vehicle_dossier and safety_first playbooks; always include the YMM-granularity disclaimer. |
| get_dealer | Get comprehensive information about a specific dealership. Returns Google-enriched dealer knowledge optimized for assistants: • Name, address, phone, website • Google rating, review count, hours, business status • Inventory count and OpenDealer profile links • Contact points for sales / customer service Use this when a shopper asks "tell me about X dealership" or needs hours/ratings for a known dealer. Prefer a slug from dealers_near or search results. CRITICAL: Only use URL fields from the response (website, urls.*). NEVER invent or construct URLs. |
| get_safety_rating | Get NHTSA 5-Star Safety Ratings for a year/make/model (no VIN required). Answers questions like "is a 2023 RAV4 safe for my family" with: • Overall and crash-test star ratings (when published) • Rollover rating / possibility • NHTSA-evaluated ADAS availability (ESC, FCW, LDW) Ratings are model-year granular from the NHTSA NCAP cache. If no confident rating exists, the tool reports that honestly rather than guessing. For VIN-specific listing details use get_vehicle; for open recalls use check_recalls. CRITICAL: Only use the 'sourceUrl' field from the response for NHTSA links. NEVER invent URLs. |
| get_vehicle_history | Get OpenDealer listing history for a VIN: price changes, days on lot, and status. Answers "has this VIN dropped in price" and days-on-lot narratives from retained snapshots (including vehicles that left a dealer feed). Returns: • Chronological price history with per-snapshot changes • Days on market / lot signals and badges (price_drop, long_on_lot) • Active vs no-longer-listed status when known Does not invent a deal score for sold vehicles — use get_deal_score for live market scoring. Essential for price_drop_sniper and vehicle_dossier playbooks when shoppers ask about reductions or negotiation leverage. CRITICAL: Only use URL fields from the response when present. NEVER invent URLs. |
| dealers_near | Find dealerships near a location. Location modes (choose ONE): • zip + radius (miles) • lat + lng + radius • city + state + radius • county + state + radius Returns dealer information including: • Name, address, phone, website • Distance from search location • Current inventory count • Business hours (when available) |
| dealer_inventory | Browse the complete inventory of a specific dealership. IMPORTANT: Use the exact dealer slug from a previous dealers_near or search_vehicles response. Do NOT guess dealer IDs. Useful when a user wants to see what a particular dealer has in stock. Supports all vehicle filters (make, model, price, etc.). CRITICAL: CITE: Each vehicle's cite object is `vin` + `url` (canonical opendealer.shop VDP). Cite only `url` to shoppers. Never invent VDP URLs. Never cite `detailsUrl` (dealer/LotLinx). Never send shoppers to `/llm/*` HTML or `/v1/llm/*` as the human listing URL. |
| compare_vehicles | Compare 2-5 vehicles side by side. Returns a structured comparison including specs, price context, and per-vehicle cite fields (vin + shop url). CRITICAL: CITE: Each vehicle's cite object is `vin` + `url` (canonical opendealer.shop VDP). Cite only `url` to shoppers. Never invent VDP URLs. Never cite `detailsUrl` (dealer/LotLinx). Never send shoppers to `/llm/*` HTML or `/v1/llm/*` as the human listing URL. |
| get_deal_score | Get AI-powered deal scoring and market insights for a vehicle. Returns comprehensive analysis including: • Deal score (1-100) with rating (Great, Good, Fair, Poor) • Price comparison vs market average • Days on lot analysis • Price history and trends • Similar vehicles in the market Core step in vehicle_dossier, budget_coach, price_drop_sniper, and dealer_crawl playbooks. Pair with get_vehicle_history and check_recalls for buy/no-buy answers. |
| get_market_overview | Get high-level automotive market statistics. Returns aggregated market data including: • Total vehicles and dealers in inventory • Average pricing by segment • Top makes by volume • Market velocity indicators • New vs Used breakdown |
| get_market_segment | Get detailed pricing and market data for a specific vehicle segment. Useful for understanding fair market value for a make/model/year combination. Returns pricing statistics including: • Average, median, min, max prices • Price percentiles (10th, 25th, 75th, 90th) • Average mileage and days on lot • Certified vs non-certified pricing difference |
| list_market_segments | Browse market segments with pricing statistics (modelcode, median price, sample size). Use to discover modelcodes for get_market_segment / get_market_trends. |
| get_market_trends | Price trends over time for a market segment (modelcode). Returns timeline of median/avg prices and days-on-lot. |
| get_market_velocity | How quickly vehicles sell by segment (fastest/slowest days on lot). Optional make/type filters. |
| compare_market | Compare pricing across market segments. Provide modelcodes[] or make (optionally with model). |
| get_suggested_rates | National average suggested auto loan APRs (not a credit offer). Optional filters: condition (new/used), term_months (36–84), credit_tier. |
| research_model | Get the full research payload for a vehicle model (not a specific listing). Returns manufacturer reference data joined with live market data: • All trims with MSRPs, engine/body specs, and EPA fuel economy • NHTSA 5-Star safety ratings and open recall count • Live inventory count and price range on OpenDealer Use this when a shopper asks "tell me about the Honda Civic", "what trims does the RAV4 come in", or "how much is a 2025 F-150". For a specific listed vehicle, use get_vehicle with a VIN instead. CRITICAL: Only use the 'url' field from the response for links. NEVER invent or construct URLs. |
| compare_models | Compare 2-4 vehicle models side by side (model-level, not specific listings). Provide composite make-model slugs like "honda-civic" or "toyota-corolla". Returns: • Winner-by-dimension deltas: price, fuel economy, horsepower, seating, towing, NHTSA safety, live median listing price • Full research payload for each model (trims, MSRPs, specs) Use this for "Civic vs Corolla" style questions. To compare specific listed vehicles by VIN, use compare_vehicles instead. CRITICAL: Only use the 'url' field from the response for links. NEVER invent or construct URLs. |
| get_vehicle_rankings | Get data-driven vehicle rankings (e.g., best SUVs, most fuel-efficient cars). Call without arguments to list all ranking categories. Pass a category slug (e.g., "best-suvs") for the full scored ranking. Rankings are computed from public data with a published methodology: NHTSA safety ratings, EPA fuel economy, manufacturer pricing, and live market availability. There is no paid placement; each entry includes its transparent score breakdown. CRITICAL: Only use the 'url' field from the response for links. NEVER invent or construct URLs. |
| get_similar_vehicles | Find similar on-lot vehicles for a VIN ("you may also like"). Same make/model keyword comps as the shop VDP rail (not semantic embeddings). CRITICAL: CITE: Each vehicle's cite object is `vin` + `url` (canonical opendealer.shop VDP). Cite only `url` to shoppers. Never invent VDP URLs. Never cite `detailsUrl` (dealer/LotLinx). Never send shoppers to `/llm/*` HTML or `/v1/llm/*` as the human listing URL. |
| ui_select_vehicle | App-only: record a vehicle selection from the results widget. Not for model use — hosts filter via _meta.ui.visibility. |
| ui_page_vehicle_results | App-only: paginate or refresh vehicle results using the same Runtime paths as filter_vehicles / search_vehicles (geo-correct). No widget remount — omit resourceUri. Not for model use. |