Guide

Score a car deal with an agent

To score a car deal with an agent, connect it to the DealScore MCP server at https://cardealscore.com/api/mcp with OAuth, then have it call score_deal with the asking price, the mileage, and a VIN or year, make, and model. Sign in once in the browser, and the agent can call score_deal whenever a user asks about a used-car price.

What you send

Three facts about the car. ZIP is optional. The tool does not fetch Facebook Marketplace or Craigslist URLs, so the agent reads those pages itself and sends the fields. Grades use dealer-market comps.

  • Asking price: what the seller wants today.
  • Mileage: odometer on that car.
  • ZIP: optional. Narrows comps to a local market. The default score is national.
  • Vehicle: year, make, and model (trim if you have it), or the 17-character VIN.

A 2020 Toyota Camry at $16,000 / 62k miles is enough. ZIP 78701 is optional local refine. A VIN is enough too. The fields score_deal returns are on is this car a good deal.

Connect MCP with OAuth

OAuth is the default connect path. Add the Streamable HTTP URL. The client opens a browser for the same email magic-link sign-in used at /login. Do not put a ds_… key in Cursor config. Per-client steps: Cursor, VS Code, Claude Code, Claude Desktop, Codex, and ChatGPT, and n8n. The hub is /agents. REST: /used-car-price-api.

.cursor/mcp.json
{
  "mcpServers": {
    "dealscore": {
      "url": "https://cardealscore.com/api/mcp"
    }
  }
}

That URL is https://cardealscore.com/api/mcp. After consent, call score_deal with the same payload as POST /api/score:

score_deal
{
  "year": 2020,
  "make": "Toyota",
  "model": "Camry",
  "asking_price": 16000,
  "mileage": 62000,
  "zip": "78701"
}

Response includes grade, delta_pct, expected price, brief, and risks. Thin or failed comps return coverage: cannot_score. Do not invent a Great deal when that happens. How the grades work.

API keys stay secondary

Keys are for curl, scripts, and MCP clients that cannot run a browser OAuth flow. Sign in at /login and mint a key at /keys. Send it as x-api-key or Authorization: Bearer.

Quick answers

Can score_deal read a Facebook Marketplace or Craigslist link?
No. The tool does not fetch those URLs. The agent reads the listing itself and sends the asking price, mileage, and vehicle fields.
What does score_deal return when comps are thin?
It returns coverage: cannot_score with no grade. The agent should say so and should not invent a grade.
Does the agent need an API key?
No, when the client supports OAuth. Keys are for curl, scripts, and MCP clients that cannot run a browser OAuth flow. Create one on /keys and send it as x-api-key or Authorization: Bearer.
What counts toward the Free meter?
Free includes 5 scored calls a month. Only results with coverage: scored count, and explain_grade and health are never metered.

What we don't do

  • No Facebook Marketplace or Craigslist URL fetch.
  • No silent mock fallback in production.
  • Only coverage: scored counts against the meter. explain_grade and health are never metered.

Endpoint details: API docs. Agent summary: llms.txt. Auth discovery: /auth.