Agent-ready APIREST + MCP

Deal grades your agents can call — not another CarGurus clone

DealScore compares an asking price to expected market value and returns a grade, brief, risks, and confidence. Built for programmatic use: REST endpoints and a Streamable HTTP MCP server at /api/mcp.

Try it live

Web form uses the dogfood route (rate-limited, no API key). Same scoring engine as the programmatic API.

Score a deal
Enter a VIN or year/make/model with asking price, mileage, and ZIP. No listing URLs — we score from structured inputs only.

For agents

Authenticate with x-api-key or Authorization: Bearer <key>. Keys are configured via DEALSCORE_API_KEYS (comma-separated).

REST — score a deal
Primary tool equivalent to MCP score_deal
curl -X POST https://dealscore-xi.vercel.app/api/score \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_KEY" \
  -d '{
    "year": 2020,
    "make": "Toyota",
    "model": "Camry",
    "asking_price": 16000,
    "mileage": 62000,
    "zip": "78701"
  }'
MCP — Cursor / Claude remote
Streamable HTTP at /api/mcp. Tools: score_deal, explain_grade, health.
{
  "mcpServers": {
    "dealscore": {
      "url": "https://dealscore-xi.vercel.app/api/mcp",
      "headers": {
        "x-api-key": "YOUR_KEY"
      }
    }
  }
}

Local dev: use http://localhost:3000/api/mcp. When DEALSCORE_API_KEYS is unset in development, programmatic routes are open without a key.

Honest limitations

  • No Facebook Marketplace or Craigslist URL paste/scraping — send structured vehicle + price inputs only.
  • Mock comps only when MARKETCHECK_API_KEY is absent. With the key set, upstream failures return coverage: cannot_score — never silent mock fallback.
  • No persistent MarketCheck cache — comps are fetched per request only (ToS compliance).
  • No Stripe billing, affiliates, testimonials, or PII collection in this MVP.
  • Fail-closed: returns coverage: cannot_score rather than inventing a Great deal.