Cardog

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

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
100%
Qualität der Benennung
88%
Risiko der Vergiftung
80%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin check_recalls

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,793Tokens (Tool-Definitionen)
~4.4 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.96% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.cardog.io/mcp?api_key={api_key}"
    }
  }
}

Remote-Endpunkte

https://mcp.cardog.io/mcp?api_key={api_key}streamable-http
https://mcp.cardog.io/sse?api_key={api_key}sse

Was es kann

Tool-Inventar

Tools (5)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢resolve_entity(query, domain, limit, context)

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}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Free text to resolve, e.g. \"2021 Civic\", \"teslla\", \"plug-in hybrid\""
    },
    "domain": {
      "type": "string",
      "description": "Constrain candidates to one domain: \"make\", \"model\", \"model-year\", \"body-style\", \"fuel-type\", \"drive-type\", \"transmission\", \"electrification-level\", \"vehicle-type\". Omit to search across domains."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Max candidates (default 5)"
    },
    "context": {
      "type": "string",
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\""
    }
  },
  "required": [
    "query",
    "context"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢identify_vehicle(vin, context)

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 spec sheet (horsepower, economy, range, seating…), each value with its unit; `specHighlightsTrimDependent` names the highlights that differ between trims of the model year. 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] }).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "vin": {
      "type": "string",
      "minLength": 1,
      "description": "The 17-character VIN. Free text is NOT accepted here — use resolve_entity for text."
    },
    "context": {
      "type": "string",
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\""
    }
  },
  "required": [
    "vin",
    "context"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_inventory(makes, models, bodyStyles, fuelTypes, driveTypes, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "makes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"make\" domain, e.g. [\"make:mini\"]"
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"model\" domain, e.g. [\"model:mini/hardtop\"]"
    },
    "bodyStyles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"body-style\" domain, e.g. [\"body-style:sport-utility-vehicle-suv\"]"
    },
    "fuelTypes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"fuel-type\" domain, e.g. [\"fuel-type:electric\"]"
    },
    "driveTypes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"drive-type\" domain, e.g. [\"drive-type:awd-all-wheel-drive\"]"
    },
    "transmissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"transmission\" domain, e.g. [\"transmission:automatic\"]"
    },
    "electrificationLevels": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"electrification-level\" domain, e.g. [\"electrification-level:bev-battery-electric-vehicle\"]"
    },
    "vehicleTypes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"vehicle-type\" domain, e.g. [\"vehicle-type:passenger-car\"]"
    },
    "nanos": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity refs in the \"nano\" domain, e.g. [\"nano:5TDGSKFCRS\"]"
    },
    "year": {
      "type": "object",
      "properties": {
        "min": {
          "type": "number"
        },
        "max": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "description": "Model year range"
    },
    "price": {
      "type": "object",
      "properties": {
        "min": {
          "type": "number"
        },
        "max": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "description": "Price (CAD) range"
    },
    "odometer": {
      "type": "object",
      "properties": {
        "min": {
          "type": "number"
        },
        "max": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "description": "Odometer (km) range"
    },
    "spec": {
      "type": "object",
      "additionalProperties": {},
      "description": "Canonical spec filters keyed by SpecAttributeId: numeric → {\"min\",\"max\"}, equipment → [\"standard\"|\"optional\"|\"unavailable\"]. Example: {\"fuelEconomyCombined\": {\"min\": 35}, \"heatedSeatsFront\": [\"standard\"]}. Bare scalars are invalid — \"standard\" must be [\"standard\"]; a wrong-shaped value errors with code \"invalid_spec_filter\". Unknown keys 400 with code \"unknown_spec_attributes\"."
    },
    "sort": {
      "type": "object",
      "properties": {
        "field": {
          "type": "string",
          "enum": [
            "price",
            "year",
            "odometer",
            "createdAt",
            "score"
          ]
        },
        "direction": {
          "type": "string",
          "enum": [
            "asc",
            "desc"
          ]
        }
      },
      "additionalProperties": false
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number (default 1)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Rows per page (default 10, max 50)"
    },
    "context": {
      "type": "string",
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\""
    }
  },
  "required": [
    "context"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢market_quote(ref, window, context)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "minLength": 1,
      "description": "Instrument ref: \"model-year:honda/cr-v/2026\" or \"squish:5TDGSKFCS\". Free text never quotes — resolve_entity first."
    },
    "window": {
      "type": "string",
      "enum": [
        "1w",
        "1m",
        "3m",
        "6m",
        "ytd",
        "1y",
        "3y",
        "5y",
        "10y",
        "all"
      ],
      "description": "History window (server default when omitted)"
    },
    "context": {
      "type": "string",
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\""
    }
  },
  "required": [
    "ref",
    "context"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_recalls(vin, ref, limit, context)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "vin": {
      "type": "string",
      "description": "17-character VIN — the per-vehicle recall check. Exclusive with `ref`."
    },
    "ref": {
      "type": "string",
      "description": "Entity ref scope: \"make:honda\", \"model:honda/cr-v\", or \"model-year:honda/cr-v/2026\". Exclusive with `vin`."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max campaigns for a ref-scoped query (default 25, max 100)"
    },
    "context": {
      "type": "string",
      "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\""
    }
  },
  "required": [
    "context"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Empfohlene Prompts

search_research
Search for information about [topic] using Cardog
Erwartete Tools: search_inventory
find_specific
Find [specific item] using Cardog
Erwartete Tools: search_inventory

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet5 Tools
verifiziertVersion nicht aufgezeichnet5 Tools
verifiziertVersion nicht aufgezeichnet5 Tools
verifiziertVersion nicht aufgezeichnet5 Tools