OpenDealer MCP Server
REMOTE · MCP.OPENDEALER.APP · SCANNED SEP 20
Automotive inventory search for AI assistants: vehicles, dealers, deals, and market data.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability79
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 6067 tokens (~151/item across 40 items; 27 tools + 13 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage91
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 70% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 27 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 29 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
How do I install the OpenDealer MCP Server server?
OpenDealer MCP Server is a hosted endpoint at https://mcp.opendealer.app/rpc, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.opendealer.app
claude mcp add --transport http app-opendealer-mcp 'https://mcp.opendealer.app/rpc'
{
"mcpServers": {
"app-opendealer-mcp": {
"url": "https://mcp.opendealer.app/rpc"
}
}
} {
"servers": {
"app-opendealer-mcp": {
"type": "http",
"url": "https://mcp.opendealer.app/rpc"
}
}
} [mcp_servers.app-opendealer-mcp] url = "https://mcp.opendealer.app/rpc"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"app-opendealer-mcp": {
"type": "remote",
"url": "https://mcp.opendealer.app/rpc",
"enabled": true
}
}
} openclaw mcp add app-opendealer-mcp --url 'https://mcp.opendealer.app/rpc' --transport streamable-http
mcp_servers:
app-opendealer-mcp:
url: "https://mcp.opendealer.app/rpc" {
"McpServers": {
"app-opendealer-mcp": {
"Transport": "http",
"Url": "https://mcp.opendealer.app/rpc"
}
}
} assistant mcp add app-opendealer-mcp -t streamable-http -u 'https://mcp.opendealer.app/rpc'
{
"mcpServers": {
"app-opendealer-mcp": {
"type": "http",
"url": "https://mcp.opendealer.app/rpc"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 29 Aug 26 +1
- Stability: fail → pass ▲ security
- 27 Aug 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “filter_vehicles” rewrote its description, which is the text the model reads security
- Tool “get_similar_vehicles” rewrote its description, which is the text the model reads security
- Tool “search_vehicles” rewrote its description, which is the text the model reads security
- “search_vehicles” reworded the description of “useLlmSearchPath” cosmetic
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 86.
- 23 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 76 to 79.
- 18 Aug 26 0
- Resource “Dealer Inventory Carousel” now points somewhere else: ui://opendealer/dealer-profile@b6fb80b9 → ui://opendealer/dealer-profile@5d34b585 security
- Resource “Vehicle Results Carousel” now points somewhere else: ui://opendealer/vehicle-search@bc8dd85f → ui://opendealer/vehicle-search@b7cf0b21 security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “compare_vehicles” rewrote its description, which is the text the model reads security
- Tool “dealer_inventory” rewrote its description, which is the text the model reads security
- Tool “filter_vehicles” rewrote its description, which is the text the model reads security
- Tool “get_similar_vehicles” rewrote its description, which is the text the model reads security
- Tool “get_vehicle” rewrote its description, which is the text the model reads security
- Tool “search_vehicles” rewrote its description, which is the text the model reads security
- 15 Aug 26 0
- Resource “Deal Score Widget” now points somewhere else: ui://opendealer/deal-score@f65e4128 → ui://opendealer/deal-score@c86aaaa2 security
- Resource “Dealer Inventory Carousel” now points somewhere else: ui://opendealer/dealer-profile@5d668905 → ui://opendealer/dealer-profile@b6fb80b9 security
- Resource “Vehicle Results Carousel” now points somewhere else: ui://opendealer/vehicle-search@808f536d → ui://opendealer/vehicle-search@bc8dd85f security
- 14 Aug 26 0
- Resource “Deal Score Widget” now points somewhere else: ui://opendealer/deal-score@a4a068f5 → ui://opendealer/deal-score@f65e4128 security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://mcp.opendealer.app/rpc
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=opendealer.app | CN=WE1,O=Google Trust Services,C=US | 31 Jul 2026 | 29 Oct 2026 | ECDSA 256 | ECDSA-SHA256 | c3d09bda7f1136a40eb4ae3b9da03d8c |
| SANs: opendealer.app, *.opendealer.app | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.opendealer.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| opendealer.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data: https:;object-src 'none';script-src 'self' 'unsafe-inline' https://unpkg.com;script-src-attr 'none';style-src 'self' 'unsafe-inline' https://unpkg.com;upgrade-insecure-requests;connect-src 'self' https: |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | no-referrer |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.opendealer.app/rpc | Verified | 200 | |
| http (plaintext) | http://mcp.opendealer.app/rpc | HTTPS enforced | 301 | https://mcp.opendealer.app/rpc |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
check_recalls Check NHTSA Recalls ~140
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.
| Name | Type | Req | Description |
|---|---|---|---|
| vin | string | yes | 17-character Vehicle Identification Number |
| Name | Type | Req | Description |
|---|---|---|---|
| count | number | – | – |
| recalls | array | – | – |
| vin | string | – | – |
No examples provided.
compare_market Compare Market Segments ~68
Compare pricing across market segments. Provide modelcodes[] or make (optionally with model).
| Name | Type | Req | Description |
|---|---|---|---|
| make | string | – | – |
| model | string | – | – |
| modelcodes | array | – | – |
| type | string | – | Vehicle type (New or Used) |
| year | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
compare_models Compare Vehicle Models ~189
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.
| Name | Type | Req | Description |
|---|---|---|---|
| models | array | yes | Composite make-model slugs to compare (e.g., ["honda-civic", "toyota-corolla"]) |
| year | integer | – | Model year (defaults to the latest year with reference data) |
| Name | Type | Req | Description |
|---|---|---|---|
| dimensions | array | – | – |
| models | array | – | – |
No examples provided.
compare_vehicles Compare Vehicles ~139
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.
| Name | Type | Req | Description |
|---|---|---|---|
| vins | array | yes | List of VINs to compare (2-5 vehicles) |
| Name | Type | Req | Description |
|---|---|---|---|
| comparison | object | – | – |
| vehicles | array | – | – |
No examples provided.
dealer_inventory Browse Dealer Inventory ~383
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body_type | string | – | Vehicle body style |
| certified | boolean | – | Filter for CPO vehicles |
| condition | string | – | Vehicle condition |
| dealerId | string | yes | Dealer identifier (UUID or slug like "rsm-honda") |
| drivetrain | string | – | Drivetrain configuration |
| fuel_type | string | – | Fuel type |
| limit | integer | – | Maximum number of results to return (1-100, default: 25) |
| make | string | – | Vehicle make |
| mileage_max | integer | – | Maximum mileage |
| model | string | – | Vehicle model |
| offset | integer | – | Number of results to skip for pagination |
| price_max | integer | – | Maximum price in USD |
| price_min | integer | – | Minimum price in USD |
| sort | string | – | Sort order |
| transmission | string | – | Transmission type |
| trim | string | – | Trim level |
| view | string | – | Response detail: standard (features/gallery, default), llm (compact), minimal |
| year_max | integer | – | Maximum model year |
| year_min | integer | – | Minimum model year |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | – | – |
| results | array | – | – |
| total | number | – | – |
| totalResults | number | – | – |
| vehicles | array | – | – |
No examples provided.
dealers_near Find Nearby Dealers ~214
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)
| Name | Type | Req | Description |
|---|---|---|---|
| city | string | – | City name |
| county | string | – | County name |
| lat | number | – | Latitude coordinate |
| limit | integer | – | Maximum number of dealers to return (1-200, default: 50) |
| lng | number | – | Longitude coordinate |
| offset | integer | – | Number of results to skip for pagination |
| radius | integer | – | Search radius in miles (1-250, default: 50) |
| state | string | – | 2-letter US state code (e.g., CA, TX) |
| zip | string | – | 5-digit US ZIP code (e.g., 92688) |
| Name | Type | Req | Description |
|---|---|---|---|
| dealers | array | – | – |
| items | array | – | – |
| total | number | – | – |
No examples provided.
filter_vehicles Filter Vehicles (Structured) ~501
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body_type | string | – | Vehicle body style |
| certified | boolean | – | – |
| city | string | – | – |
| color | string | – | – |
| condition | string | – | Vehicle condition |
| drivetrain | string | – | Drivetrain configuration |
| fuel_type | string | – | Fuel type |
| limit | integer | – | Maximum number of results to return (1-100, default: 25) |
| make | string | – | Vehicle make (resolve via list_research_makes if unsure) |
| mileage_max | integer | – | – |
| model | string | – | Vehicle model (resolve via list_research_models if unsure) |
| offset | integer | – | Number of results to skip for pagination |
| price_max | integer | – | – |
| price_min | integer | – | – |
| radius | integer | – | Search radius in miles (1-250, default: 50) |
| sort | string | – | Sort order for results |
| state | string | – | 2-letter US state code (e.g., CA, TX) |
| transmission | string | – | Transmission type |
| trim | string | – | – |
| year_max | integer | – | – |
| year_min | integer | – | – |
| zip | string | – | 5-digit US ZIP code (e.g., 92688) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | – | – |
| results | array | – | – |
| total | number | – | – |
| totalResults | number | – | – |
| vehicles | array | – | – |
No examples provided.
get_deal_score Get Deal Score ~123
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.
| Name | Type | Req | Description |
|---|---|---|---|
| vin | string | yes | 17-character Vehicle Identification Number |
| Name | Type | Req | Description |
|---|---|---|---|
| dealScore | object | – | – |
| priceHistory | array | – | – |
| vin | string | – | – |
No examples provided.
get_dealer Get Dealership Details ~156
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dealerId | string | yes | Dealer identifier: UUID or slug (e.g., "rsm-honda"). Prefer the slug from dealers_near or search results. |
| Name | Type | Req | Description |
|---|---|---|---|
| aggregateRating | object | – | – |
| inventory | object | – | – |
| name | string | – | – |
| openingHours | – | – | – |
| slug | string | – | – |
| telephone | string | – | – |
| urls | object | – | – |
No examples provided.
get_market_overview Get Market Overview ~76
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
| Name | Type | Req | Description |
|---|---|---|---|
| make | string | – | Filter by vehicle make |
| type | string | – | Filter by vehicle type |
Structured output declared, but exposes no named fields.
No examples provided.
get_market_segment Get Market Segment Data ~132
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
| Name | Type | Req | Description |
|---|---|---|---|
| certified | boolean | – | Filter for certified vehicles |
| modelcode | string | yes | Model code identifier (unique per make/model/year combination) |
| type | string | – | Vehicle type |
| year | integer | – | Model year |
Structured output declared, but exposes no named fields.
No examples provided.
get_market_trends Get Market Price Trends ~81
Price trends over time for a market segment (modelcode). Returns timeline of median/avg prices and days-on-lot.
| Name | Type | Req | Description |
|---|---|---|---|
| certified | boolean | – | – |
| days | integer | – | – |
| modelcode | string | yes | Market segment modelcode |
| type | string | – | Vehicle type (New or Used) |
| year | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_market_velocity Get Market Velocity ~57
How quickly vehicles sell by segment (fastest/slowest days on lot). Optional make/type filters.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| make | string | – | – |
| type | string | – | Vehicle type (New or Used) |
Structured output declared, but exposes no named fields.
No examples provided.
get_safety_rating Get NHTSA Safety Rating ~212
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.
| Name | Type | Req | Description |
|---|---|---|---|
| make | string | yes | Vehicle make (e.g., "Toyota", "Honda") |
| model | string | yes | Vehicle model (e.g., "RAV4", "Civic") |
| year | integer | yes | Model year (e.g., 2023) |
| Name | Type | Req | Description |
|---|---|---|---|
| available | boolean | yes | – |
| make | string | – | – |
| message | string | – | – |
| model | string | – | – |
| safety | – | yes | – |
| sourceUrl | string | – | – |
| year | number | – | – |
No examples provided.
get_similar_vehicles Get Similar Vehicles ~142
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| vin | string | yes | 17-character Vehicle Identification Number |
Structured output declared, but exposes no named fields.
No examples provided.
get_suggested_rates Get Suggested Finance Rates ~70
National average suggested auto loan APRs (not a credit offer). Optional filters: condition (new/used), term_months (36–84), credit_tier.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | – | – |
| credit_tier | string | – | – |
| term_months | number | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_vehicle Get Vehicle Details ~237
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.
| Name | Type | Req | Description |
|---|---|---|---|
| view | string | – | Response format: llm (optimized for AI), standard (full details), minimal (compact) |
| vin | string | yes | 17-character Vehicle Identification Number |
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | Canonical opendealer.shop VDP URL. Cite this to shoppers; never detailsUrl, /llm/*, or /v1/llm/* as the human listing URL. |
| vehicleIdentificationNumber | string | – | – |
| vin | string | – | 17-character VIN. Part of the cite object with url. |
No examples provided.
get_vehicle_history Get Vehicle Price History ~168
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.
| Name | Type | Req | Description |
|---|---|---|---|
| vin | string | yes | 17-character Vehicle Identification Number |
| Name | Type | Req | Description |
|---|---|---|---|
| badges | array | – | – |
| priceHistory | array | – | – |
| status | string | – | – |
| summary | object | – | – |
| vin | string | yes | – |
No examples provided.
get_vehicle_rankings Get Vehicle Rankings ~149
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Ranking category slug (e.g., "best-suvs"). Omit to list all available categories. |
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | – | – |
| category | string | – | – |
| rankings | array | – | – |
| url | string | – | – |
No examples provided.
list_facets List Inventory Facets ~121
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.
| Name | Type | Req | Description |
|---|---|---|---|
| certified | boolean | – | – |
| condition | string | – | Vehicle condition |
| make | string | – | – |
| near | string | – | Location string (ZIP or city, state) for geo-scoped facets |
| radius | integer | – | Search radius in miles (1-250, default: 50) |
Structured output declared, but exposes no named fields.
No examples provided.
list_market_segments List Market Segments ~78
Browse market segments with pricing statistics (modelcode, median price, sample size). Use to discover modelcodes for get_market_segment / get_market_trends.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| make | string | – | – |
| minSampleSize | integer | – | – |
| modelcode | string | – | – |
| page | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
list_research_makes List Research Makes ~63
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| q | string | – | Optional substring filter on make name/slug |
Structured output declared, but exposes no named fields.
No examples provided.
list_research_models List Research Models ~57
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.
| Name | Type | Req | Description |
|---|---|---|---|
| make | string | yes | Make name or slug (e.g. honda) |
Structured output declared, but exposes no named fields.
No examples provided.
research_model Research a Vehicle Model ~215
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.
| Name | Type | Req | Description |
|---|---|---|---|
| make | string | yes | Vehicle make slug or name (e.g., "honda", "mercedes-benz") |
| model | string | yes | Vehicle model slug or name (e.g., "civic", "e-class") |
| year | integer | – | Model year (defaults to the latest year with reference data) |
| Name | Type | Req | Description |
|---|---|---|---|
| make | object | – | – |
| model | object | – | – |
| safety | – | – | – |
| url | string | – | – |
| year | number | – | – |
No examples provided.
search_vehicles Search Vehicles ~861
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body_type | string | – | Vehicle body style |
| certified | boolean | – | Filter for Certified Pre-Owned vehicles only |
| city | string | – | City name |
| color | string | – | Exterior color (e.g., black, white). Resolved to color families, so "black" matches "Crystal Black Pearl". |
| condition | string | – | Vehicle condition |
| county | string | – | County name |
| drivetrain | string | – | Drivetrain configuration |
| fuel_type | string | – | Fuel type |
| lat | number | – | Latitude coordinate |
| limit | integer | – | Maximum number of results to return (1-100, default: 25) |
| lng | number | – | Longitude coordinate |
| make | string | – | Vehicle make (e.g., Honda, Toyota, Tesla) |
| mileage_max | integer | – | Maximum mileage |
| mode | string | – | Search mode. Use hybrid for conceptual queries with little keyword overlap (e.g. "family hauler good in snow"). Hard caps still apply as filters. Falls back to keyword if semantic is unavailable. |
| model | string | – | Vehicle model (e.g., Civic, Camry, Model 3). Broad terms match all variants (Civic -> Civic Sedan/Si/Hatchback) unless narrowed by trim. |
| offset | integer | – | Number of results to skip for pagination |
| price_max | integer | – | Maximum price in USD |
| price_min | integer | – | Minimum price in USD |
| q | string | – | Free-text natural-language query. You can pass a whole sentence (e.g. "new black Honda Civic sedan under $45k within 150 miles of 92672"): price/mileage/year/condition and zip+radius are parsed out a… |
| radius | integer | – | Search radius in miles (1-250, default: 50) |
| semanticRatio | number | – | Semantic blend weight 0..1 when mode=hybrid (default 0.5). Higher = more conceptual matching. |
| sort | string | – | Sort order for results |
| state | string | – | 2-letter US state code (e.g., CA, TX) |
| transmission | string | – | Transmission type |
| trim | string | – | Trim level (e.g., EX, Limited, Performance) |
| useLlmSearchPath | boolean | – | Legacy. Do not set. Prefer filter_vehicles with labeled hard filters. |
| view | string | – | Response format: llm (optimized for AI), standard (full details), minimal (compact) |
| year_max | integer | – | Maximum model year |
| year_min | integer | – | Minimum model year |
| zip | string | – | 5-digit US ZIP code (e.g., 92688) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | – | – |
| results | array | – | – |
| total | number | – | – |
| totalResults | number | – | – |
| vehicles | array | – | – |
No examples provided.
ui_page_vehicle_results Page Vehicle Results (App) ~390
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body_type | string | – | Vehicle body style |
| certified | boolean | – | – |
| city | string | – | – |
| color | string | – | – |
| condition | string | – | Vehicle condition |
| county | string | – | – |
| drivetrain | string | – | Drivetrain configuration |
| fuel_type | string | – | Fuel type |
| lat | number | – | Latitude coordinate |
| limit | integer | – | Maximum number of results to return (1-100, default: 25) |
| lng | number | – | Longitude coordinate |
| make | string | – | – |
| mileage_max | integer | – | – |
| mode | string | – | – |
| model | string | – | – |
| offset | integer | – | Number of results to skip for pagination |
| price_max | integer | – | – |
| price_min | integer | – | – |
| q | string | – | – |
| radius | integer | – | Search radius in miles (1-250, default: 50) |
| semanticRatio | number | – | – |
| sort | string | – | Sort order for results |
| source | string | – | Which model-facing tool path to reuse for this page request |
| state | string | – | 2-letter US state code (e.g., CA, TX) |
| transmission | string | – | Transmission type |
| trim | string | – | – |
| useLlmSearchPath | boolean | – | – |
| view | string | – | Response format: llm (optimized for AI), standard (full details), minimal (compact) |
| year_max | integer | – | – |
| year_min | integer | – | – |
| zip | string | – | 5-digit US ZIP code (e.g., 92688) |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | – | – |
| results | array | – | – |
| total | number | – | – |
| totalResults | number | – | – |
| vehicles | array | – | – |
No examples provided.
ui_select_vehicle Select Vehicle (App) ~82
App-only: record a vehicle selection from the results widget. Not for model use — hosts filter via _meta.ui.visibility.
| Name | Type | Req | Description |
|---|---|---|---|
| make | string | – | – |
| model | string | – | – |
| name | string | – | – |
| url | string | – | – |
| vin | string | yes | 17-character Vehicle Identification Number |
| year | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| message | string | yes | – |
| selected | object | yes | – |
No examples provided.
What is the OpenDealer MCP Server server?
OpenDealer MCP Server is listed in the public MCP registry as app.opendealer/mcp. Automotive inventory search for AI assistants: vehicles, dealers, deals, and market data. This page covers its hosted endpoint (https://mcp.opendealer.app/rpc).
Is the OpenDealer MCP Server server safe to use?
OpenDealer MCP Server scores 88 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the OpenDealer MCP Server server expose?
OpenDealer MCP Server exposes 27 tools: search_vehicles, filter_vehicles, list_facets, list_research_makes, list_research_models, and 22 more. Their descriptions and schemas cost roughly 5,104 tokens of context every time the server is loaded.
Does the OpenDealer MCP Server server require authentication?
No. We connected to OpenDealer MCP Server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the OpenDealer MCP Server server still maintained?
OpenDealer MCP Server is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.