mcpbeat

Cardog MCP Server

app.cardog/mcp
answering

Cardog is answering right now. Last checked 13 min ago. It exposes 5 tools. Last commit 21 Mar 2026.

VIN decode, Canadian listings, market quotes, TC+NHTSA recalls. Full API: https://cardog.app/docs.md

Uptime history 39 hours of history · worst hour 43%
39 hours agonow
50.0%
Uptime 24h
91 of 182 checks
5
Tools
read from the server
981 ms
Response time
average over 24h
1
Stars
last commit 21 Mar 2026

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 13 min ago.

run in your terminal
claude mcp add mcp --transport http https://mcp.cardog.io/mcp?api_key={api_key}
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.cardog.io/mcp?api_key={api_key}"
    }
  }
}
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://mcp.cardog.io/mcp?api_key={api_key}"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.cardog.io/mcp?api_key={api_key}"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.cardog.io/mcp?api_key={api_key}"
    }
  }
}

Available tools 5

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

identify
identify_vehicle
Decode a 17-character VIN into its full Cardog identity: canonical entity refs, the market grains (nano/squish), spec highlights, and links to adjacent resources. VIN ONLY — this tool never fuzzy-matches. If you hold free text ("2021 Civic", a make or model name), do NOT call this: call resolve_entity — free text enters the platform in exactly one tool. A non-VIN input returns a redirect hint, not a decode. A ref is `{domain}:{key}`, lowercase, with `/` separating composite key segments: "make:tesla", "model:mini/hardtop", "model-year:honda/cr-v/2026", "fuel-type:electric". (Exception: nano/squish keys are uppercase VIN charset — machine-derived, never typed from text.) The result's `refs` block (make/model/modelYear/fuelType/…) contains the join keys for every other tool; a null ref means "not derivable for this VIN", never "unknown ref". `squish` (WMI+VDS+year) is always derivable and is a valid market_quote instrument; `nano` is the fungible build grain for dedup/comparables. `specHighlights` is a best-effort skim of the canonical spec sheet (horsepower, economy, range, seating…) — the full sheet lives at GET /v2/specs/{refs.modelYear}. Errors are instructions: every failure returns {code, message, hint, suggestions} — follow `hint` for the next call; `suggestions` lists nearest valid refs for a bad ref. Unknown-but-well-formed refs are a 400 naming the ref, NEVER a silent fuzzy match. Next: check_recalls({ vin }) — outstanding recalls; market_quote({ ref: refs.modelYear ?? squish }); search_inventory({ models: [refs.model] }).
inventory
search_inventory
Search live Canadian vehicle listings — ref-native. One call returns listings + facets + the total count. Filters take entity REFS from resolve_entity / identify_vehicle, never free-text names: makes: ["make:mini"], models: ["model:mini/hardtop"], fuelTypes: ["fuel-type:electric"] — plus year/price/odometer ranges and canonical spec filters, e.g. spec: {"fuelEconomyCombined": {"min": 35}, "heatedSeatsFront": ["standard"]} (numeric attrs take {min,max}; equipment attrs take ["standard"|"optional"|"unavailable"]). A ref is `{domain}:{key}`, lowercase, with `/` separating composite key segments: "make:tesla", "model:mini/hardtop", "model-year:honda/cr-v/2026", "fuel-type:electric". (Exception: nano/squish keys are uppercase VIN charset — machine-derived, never typed from text.) Errors are instructions: every failure returns {code, message, hint, suggestions} — follow `hint` for the next call; `suggestions` lists nearest valid refs for a bad ref. Unknown-but-well-formed refs are a 400 naming the ref, NEVER a silent fuzzy match. A typo'd or unknown ref 400s with code "unknown_entity_refs" naming it, with nearest-ref suggestions — correct the ref (usually via resolve_entity) and retry. Facets in the result are (ref, name, count) buckets over the MATCHING set — they double as the valid filter vocabulary for your next, narrower call. Every listing row carries its refs (makeRef/modelRef/nano). Next: market_quote({ ref: "model-year:…" }) for pricing context; check_recalls({ vin }) per listing; GET /v2/listings/vin/{vin} for the full canonical spec.
market
market_quote
The live market card for one instrument: quote (live listing count, best/p25/median/p75 price, average days-on-market, 30-day price cuts), a daily-bar history summary, and a bounded sample of the live listings behind the numbers. `ref` must be an INSTRUMENT ref — one of two grains: - "model-year:{make}/{model}/{year}" (e.g. "model-year:honda/cr-v/2026") — lowercase, /-separated; get it from resolve_entity (domain "model-year") or identify_vehicle's refs.modelYear. - "squish:{9 uppercase VIN chars}" (e.g. "squish:5TDGSKFCS") — the exact-config grain; get it from identify_vehicle. (squish/nano keys are the ONLY uppercase refs; every other domain is lowercase.) No other ref domain quotes. Errors are instructions: every failure returns {code, message, hint, suggestions} — follow `hint` for the next call; `suggestions` lists nearest valid refs for a bad ref. Unknown-but-well-formed refs are a 400 naming the ref, NEVER a silent fuzzy match. Optional `window` picks the history span: 1w, 1m, 3m, 6m, ytd, 1y, 3y, 5y, 10y, all. Next: search_inventory with the model's refs to walk the full book; check_recalls({ ref }) on a model-year ref; GET /v2/tape/history/{ref} for every daily bar.
recalls
check_recalls
The authoritative "is this vehicle under recall?" check — Transport Canada + NHTSA recall campaigns, fused and ref-keyed. Compliance guide: https://cardog.app/docs/compliance. Pass EXACTLY ONE of: - `vin` (17 characters) — the per-vehicle recall check. In the result, `resolved: false` means the VIN is not bridged into the graph yet — distinct from "no recalls" (`resolved: true, total: 0`). - `ref` — an entity ref scoping campaigns: "make:honda", "model:honda/cr-v", or "model-year:honda/cr-v/2026". A ref is `{domain}:{key}`, lowercase, with `/` separating composite key segments: "make:tesla", "model:mini/hardtop", "model-year:honda/cr-v/2026", "fuel-type:electric". (Exception: nano/squish keys are uppercase VIN charset — machine-derived, never typed from text.) Get refs from resolve_entity or identify_vehicle — never construct them from guessed names. Each campaign carries: authority (tc/nhtsa) + campaign number, component, defect/consequence summaries, the corrective action, recall date, units affected, and `affects` — the affected model-years as refs. `asOf` (VIN checks) is when the recall data was last updated, citable. Errors are instructions: every failure returns {code, message, hint, suggestions} — follow `hint` for the next call; `suggestions` lists nearest valid refs for a bad ref. Unknown-but-well-formed refs are a 400 naming the ref, NEVER a silent fuzzy match. Next: identify_vehicle({ vin }) for the vehicle's full identity; market_quote({ ref: "model-year:…" }); GET /v2/recalls/{recall-ref} for one campaign; GET /v2/recalls/feed for the newest campaigns.
resolve
resolve_entity
Turn free text into canonical Cardog entity refs — THE text entry point for every other tool. A ref is `{domain}:{key}`, lowercase, with `/` separating composite key segments: "make:tesla", "model:mini/hardtop", "model-year:honda/cr-v/2026", "fuel-type:electric". (Exception: nano/squish keys are uppercase VIN charset — machine-derived, never typed from text.) Every other tool takes refs, never names. Call this FIRST whenever you hold text — "Civic", "2024 Model Y", a misspelling like "teslla" — then reuse the refs for the rest of the session. Returns candidates with confidence, best-first. `best` is the top candidate ONLY when it clears the confidence floor; otherwise it is null and YOU choose from `candidates` (or ask the user) — the API never guesses. Pass `domain` to constrain the search (use domain "model-year" when you need a market_quote instrument). Errors are instructions: every failure returns {code, message, hint, suggestions} — follow `hint` for the next call; `suggestions` lists nearest valid refs for a bad ref. Unknown-but-well-formed refs are a 400 naming the ref, NEVER a silent fuzzy match. Next steps (also echoed in each result's `next` block): search_inventory with make/model refs; market_quote with a model-year: ref; check_recalls with any make/model/model-year ref; dereference a ref (parents, children, counts) at GET /v2/entities/{ref}.

Endpoints

URLTransportStateLatencyChecked
https://mcp.cardog.io/mcp?api_key={api_key} streamable-http answering 941 ms 13 min ago
https://mcp.cardog.io/sse?api_key={api_key} sse answering 269 ms 13 min ago

Cardog — questions

Answers built from our own checks of this server.

What can Cardog do?
It exposes 5 tools, read directly from the server on our last check. Among them: check_recalls, identify_vehicle, market_quote, resolve_entity, search_inventory. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Cardog working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 182 checks got a reply (50.0%), average response time 981 ms. The bar chart above shows every period we have measured.
How do I connect Cardog?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Cardog need an API key?
No. Cardog completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 5 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Cardog?
It answers our handshake in 981 ms on average, which is faster than 5% of all working MCP servers we measure. That is on the slow side — worth knowing if the tool sits inside an interactive loop. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is Cardog open source?
Yes — 1 stars on GitHub. The source link is on this page, so you can read exactly what it does with your data before you connect it.