car-listing-check-mcp
Car Listing Check
Dealer vehicle listings often omit the information a buyer needs: exact specifications, known issues, service records, useful photos or a clear next step. This remote MCP server applies a consistent, inspectable checklist to content supplied by the user and returns a score and concrete fixes.
Status: live
Version 0.1.2 is live at https://mcp.aicarvideo.com/mcp (served through Netlify site mcp-aicar-proxy in front of the Cloudflare Worker) and published in the official MCP Registry as com.aicarvideo/car-listing-check.
Display name: Car Listing Check. Website: https://aicarvideo.com. Developer: AI Car Video (operated by Safak Tepecik, per https://aicarvideo.com/about). Legal identity and contacts are filled in submission/. Tool descriptions and results contain no brand promotion.
Related MCP server: LinkPulse
Tools
Tool | Inputs | Outputs |
| Nonblank | Score 0–100, grade A/B/C/D/F, checks with id/category/status/message/fix, up to five prioritised fixes, missing fields, detected language and scope |
| Optional | Core fields, additional fields, recommended photo order, title pattern, description structure, market guidance and scope |
fields supports make, model, variant, price, currency, first_registration (YYYY-MM), model_year, mileage, mileage_unit (km/mi), fuel_type, power_kw/power_hp, transmission, body_type, color, doors, seats, previous_owners, condition (new/used), accident_free, service_history, inspection_due, vin_provided (boolean only), consumption, co2, energy_efficiency, location, known_damage and contact_provided. Numeric values are nonnegative and bounded; the discoverable JSON Schemas in src/schema.ts document every parameter and example. Unknown arguments are rejected.
Provide structured fields even when values appear in prose: missing-field checks inspect the field object and do not reliably extract specifications from natural language. Zero mileage and false booleans are preserved. No clean-title, accident-free, warranty or equipment claims are invented. Feature tips mean “list it if fitted and verified”. English results recognise common English/German keywords; the returned language describes the input, while check messages remain English. Optional language: "de" or "en" overrides all detection. With language: "auto" (or omitted), market takes priority: de/DE/at/AT/ch/CH select German, us/uk select English. Otherwise, German stopwords, umlauts/ß and listing terms guide detection; shared terms such as Navi, Head-Up-Display, LED and km alone do not establish German. AT/CH return market: "generic" and generic guidance; DE returns market: "de". Existing lowercase markets remain supported.
Photo URLs are never fetched. URL count takes precedence over photo_count, including an empty array. Duplicate checks compare URL strings (normalised with fragments removed), not image pixels. Explicit photo_order takes precedence over obvious filename labels. No judgement of image quality, actual coverage or availability is possible. Recommended order: front 3/4, side, rear, front interior, dashboard, odometer, trunk, wheels/tyres, engine, damage where relevant. Count recommendation: at least 8 distinct photos, ideally 12–20. No portal minimum is claimed.
Scores use equal weighting: pass = 1, warn = 0.5, fail = 0, divided by the number of applicable checks and rounded to 100. A ≥90, B ≥75, C ≥60, D ≥40, F below 40. Fail fixes come before warn fixes, then checklist order. This is an editorial completeness score, not vehicle quality, valuation, compliance certification or a sales forecast. Title 30–80 and description 300–5,000 character windows are recommendations, not verified portal limits. See reference-path comments in src/logic.ts.
Based on Pkw-EnVKV Annex 4, German new-car guidance flags consumption, CO2 and energy-efficiency information under Pkw-EnVKV as a general publishing reminder. It does not determine applicable exceptions or validate values. Not legal advice. No website is fetched or scraped, no vehicle facts are verified, and no images, audio or videos are generated.
Example prompts and output
ChatGPT: “Check this dealer listing for the generic market: title ‘Volkswagen Golf 1.5 TSI Automatic’. I have four photos. Tell me the highest-priority fixes.”
Claude: “Review this listing I supply: title ‘Volkswagen Golf 1.5 TSI Automatic’, photo_count 4. Which core details and photos are missing?”
Both map to:
{"name":"check_car_listing","arguments":{"title":"Volkswagen Golf 1.5 TSI Automatic","photo_count":4}}Verified local output excerpt (complete response includes all checks):
{"score":61,"grade":"C","market":"generic","language":"en","top_fixes":[{"id":"core_data","priority":"high","fix":"Supply the missing fields from vehicle records; do not guess. Text may contain data that this structured-field check cannot recognise."}]}Checklist prompt: “Give me a UK used-car listing checklist with a recommended photo sequence.” No listing URL is needed.
Connect to the endpoint
The production endpoint above is live; these client configurations have not been evaluated end to end in assistant accounts. Local HTTP is usable by clients that permit localhost; hosted assistants normally need a publicly reachable HTTPS endpoint.
Claude: Settings → Connectors → Add custom connector → enter the remote URL https://mcp.aicarvideo.com/mcp. Labels and availability can vary by account. Claude Code:
claude mcp add --transport http car-listing-check https://mcp.aicarvideo.com/mcpChatGPT: enable Developer mode in the account/workspace settings, create a custom connector/app, enter the remote MCP URL, and select it in a conversation. Availability depends on account and administrator settings. See official connection documentation.
Codex, ~/.codex/config.toml:
[mcp_servers.car-listing-check]
url = "https://mcp.aicarvideo.com/mcp"Or codex mcp add car-listing-check --url https://mcp.aicarvideo.com/mcp. Syntax verified locally with codex mcp add --help; see official MCP setup examples. No API key or login is needed by this server.
Cursor, .cursor/mcp.json:
{"mcpServers":{"car-listing-check":{"url":"https://mcp.aicarvideo.com/mcp"}}}Local development
Use Node.js 22 or newer supported by the locked Wrangler release.
npm install
npm run dev
# In another terminal:
npm run typecheck
npm test
bash scripts/smoke.sh http://127.0.0.1:8788
npm run secret-scannpm run dev uses local Wrangler on 127.0.0.1:8788 without Cloudflare bindings or login. The smoke script defaults to port 8787 when no URL is provided, so pass 8788 explicitly for this project. Dependencies are local devDependencies; no runtime dependency or paid API is used. Do not deploy or submit without operator approval.
POST /mcp supports initialize, notifications/initialized, ping, tools/list and tools/call. Responses use application/json; notifications return HTTP 202 with no body. It is stateless: no sessions or auth. Negotiated versions: 2025-03-26, 2025-06-18 and 2025-11-25, default 2025-06-18 for unsupported initialize versions. Unknown protocol headers are rejected. GET /mcp returns 405; GET /health returns {"status":"ok"}; GET / explains the service. CORS allows any origin and the MCP headers. JSON-RPC response ids only correlate the client's own ids; no generated trace/request ids are added.
Body limit: 300,000 UTF-8 bytes; body read timeout: five seconds; arrays max 100; output bounded by a fixed checklist. Batches are rejected. A best-effort isolate-local IP limiter permits 120 POSTs/minute and holds at most 2,048 short-lived buckets. IPs stay in volatile memory for a one-minute counting window, are not logged or persisted, and disappear on lazy expiry cleanup or isolate recycling; idle isolates may retain expired buckets longer. This is not a global limit; edge protection needs operator configuration before public launch. URLs cannot trigger SSRF because there is no outbound fetch. A warm local benchmark exercises maximum-size listing text and 100 URLs; it is indicative wall time, not a guarantee of deployed Workers CPU usage. Measure production CPU before launch.
Privacy and operations
Inputs are processed in memory only and never stored by the application. Avoid private contact details, actual VINs, credentials and documents containing personal data. Tools need only listing text, town/region and VIN availability. Application logs record one anonymous line per tool call: {"evt":"tool_call","tool":"check_car_listing","ok":true,"ms":1}. Unknown tool names log as unknown, preventing arbitrary input from entering logs. No inputs or IPs enter logs. Cloudflare and the Netlify proxy process request contents and network metadata independently; operator settings and retention need review. IP bucket expiry is lazy: stale entries are removed on the next request with an IP, or on isolate recycling.
Optional Workers Analytics Engine support is guarded by if (env.ANALYTICS). To enable after operator approval, uncomment the dataset block in wrangler.toml and configure the dataset in the operator's account. Data points use blobs [tool, "true" or "false"] and doubles [milliseconds] only. Review provider limits before enabling. Console logging remains enabled. Set a retention policy before launch; no production retention or processor terms have been confirmed. Review aggregate tool selection weekly and configure an external uptime monitor for /health after deployment. No external monitoring is set up.
Drafts: Privacy, Terms, Support and security contact, Catalog metadata, Submission cases and golden prompts. Contact and postal details are filled from aicarvideo.com (privacy, terms, about).
server.json is prepared for com.aicarvideo/car-listing-check, using the 2025-12-11 registry schema. It is NOT published. Domain authentication (DNS TXT or the registry well-known route) and Safak's approval remain required; no key or challenge is created. Before catalog submission: confirm domain and URLs, publish approved legal/support documents, verify developer identity, review the prepared square icon and record the demonstration video, run the golden prompts in real ChatGPT/Claude accounts, confirm retention/hosting terms and monitor the live service. Neither assistant end-to-end evaluation nor catalog acceptance is claimed.
MIT license, copyright Safak Tepecik.
Available Tools
2 toolscheck_car_listingCheck Car ListingARead-onlyIdempotent
Use this when the user supplies a dealer vehicle listing and wants a best-practice score, missing data and prioritised fixes. Accepts at least a title (up to 300 characters) or description (up to 20,000), optional fields and up to 100 photo URL strings or a count. It does not fetch or scrape any website, verify vehicle facts or inspect images. Results are English; German and English keywords are recognised. Do not use for retrieving listings, valuations, vehicle inspections, media generation or legal advice. No images or videos are generated. No listing is stored or changed; operational call metrics are logged. Recommendations are not portal limits or legal advice.
Inputs: title, fields, market, language, +6 more. Returns: grade, scope, score, checks, +4 more
get_car_listing_checklistCar Listing ChecklistARead-onlyIdempotent
Use this when the user wants a static dealer vehicle-listing checklist for Germany, the US, the UK or a generic market, optionally for a new or used vehicle. Returns recommended fields, photo order, title pattern and description structure in English. It does not fetch or scrape any website or verify vehicle facts, and is not legal advice. No images or videos are generated. No listing is stored or changed; operational call metrics are logged. Do not use for checking live portal rules, retrieving ads, vehicle inspections or generating images or videos.
Inputs: market, vehicle_condition. Returns: scope, market, photo_shots, title_pattern, +6 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
The two tools target clearly different needs: check_car_listing evaluates a specific supplied listing and returns a score with fixes, while get_car_listing_checklist returns static market-specific guidance. Each description explicitly excludes the other's territory (no fetching, no inspecting) and states when not to use it, leaving little room for misselection.
Both names follow a clean verb_noun snake_case pattern (check_car_listing, get_car_listing_checklist) with a shared domain noun, making the action/object relationship obvious. No mixed conventions or vague verbs.
Two tools is thin even for a narrowly scoped listing checker; the checklist could plausibly be an argument of the check tool rather than a separate endpoint, and there is no batch or comparison capability. It is not egregiously over- or under-scoped, but it sits at the borderline of feeling sparse.
The core lifecycle of 'get guidance, then score a listing' is covered, including multi-market checklists and optional field/photo inputs. Minor gaps exist around batch checking of multiple listings or re-checking after edits, but agents can work around these by calling the tool repeatedly.
Maintenance
Related MCP Connectors
Check supplied vehicle listings for completeness and presentation, with a score and concrete fixes.
0-100 SEO score and issues to fix for every website in a dataset, CSV or Google Sheet.
Scores how well AI agents will use your API, 0-100, from its OpenAPI spec. Free and read-only.
Mechanic-grade used-car listing verdicts: risk score, failure points, repair costs, fair price.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceMCP server for website SEO + GEO analysis. Scan any URL to get scores across 5 categories (SEO, GEO, Performance, Security, Accessibility) with actionable fix recommendations. Enables AI coding assistants to audit websites and implement fixes autonomously.-
- FlicenseNot gradedqualityNot gradedmaintenanceURL reality check for AI agents — returns HTTP status, SHA-256 content hash, classification, readability score, title, and wayback-machine fallback when dead, cached 10 minutes at $0.001 per call.-
- AlicenseAqualityBmaintenanceAuto-Apply That Ends on an Interview. Job matches, applications submitted on the employer's own hiring system automatically or after your approval, employer-receipt tracking, a resume rewritten for each role, cover letters and interview prep. Hosted remote server over Streamable HTTP with OAuth 2.1.412,455 npm4MIT
- FlicenseNot gradedqualityBmaintenanceEnables agents to evaluate car deals by returning a deal grade, numeric score, market price comparison, comps summary, risks, and confidence from a VIN or vehicle attributes without scraping listings.-