Connect

Connect DealScore to Claude Desktop

DealScore is a remote MCP server at https://cardealscore.com/api/mcp. Claude Desktop can reach it as a custom connector you add in the app, or through the mcp-remote bridge in claude_desktop_config.json. Either way Claude gets the score_deal tool, which grades a used car's asking price against live US dealer listings.

Option 1: add a custom connector

  1. Open Customize > Connectors in Claude Desktop (some versions label it Settings > Connectors).
  2. Click Add custom connector.
  3. Name it DealScore and paste https://cardealscore.com/api/mcp as the server URL.
  4. Leave the OAuth client ID and secret empty. DealScore accepts Claude's published client identity and dynamic client registration, so there is nothing to register first. If your dialog asks how people sign in, choose Sign in when needed or Sign in now. No sign-in leaves score_deal at 401, and Claude will not open a Connect card. If it asks about the OAuth client, choose Use Claude's published identity.
  5. Click Add.

Custom connector URL

https://cardealscore.com/api/mcp

With Sign in when needed, the first time Claude calls score_deal a Connect card appears in the chat. Sign in with the email link DealScore sends, approve access, and Claude retries the call. The Claude Free plan allows one custom connector. On Team and Enterprise plans an Owner adds the connector under Organization settings > Connectors, and each member connects with their own DealScore account.

Claude reaches custom connectors from Anthropic's servers, so the connector works the same on any network.

Option 2: claude_desktop_config.json with mcp-remote

claude_desktop_config.json starts local servers by command and has no entry for a remote URL. mcp-remote is a small Node bridge that runs with npx and forwards to the remote server, so you need Node.js installed. Open the file from Settings > Developer > Edit Config. On macOS it is ~/Library/Application Support/Claude/claude_desktop_config.json, and on Windows it is %APPDATA%\Claude\claude_desktop_config.json.

With OAuth

claude_desktop_config.json, OAuth

{
  "mcpServers": {
    "dealscore": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://cardealscore.com/api/mcp"]
    }
  }
}

Quit Claude Desktop fully and reopen it. The first score_deal call opens your browser for the DealScore email sign-in.

With an API key

claude_desktop_config.json, API key

{
  "mcpServers": {
    "dealscore": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://cardealscore.com/api/mcp",
        "--header",
        "x-api-key:${DEALSCORE_API_KEY}"
      ],
      "env": {
        "DEALSCORE_API_KEY": "YOUR_DEALSCORE_API_KEY"
      }
    }
  }
}

Create a key on /keys and put it in env. Write the header with no space after the colon, because Claude Desktop on Windows does not escape spaces inside args. Keys are for setups that can't open a browser. OAuth is the default.

A real call from this setup

We ran the API-key config above against production on October 8, 2026 and asked score_deal about a 2021 Toyota RAV4 XLE listed at $27,500 with 38,000 miles. Here is the request and the response DealScore returned, unedited:

score_deal arguments

{
  "year": 2021,
  "make": "Toyota",
  "model": "RAV4",
  "trim": "XLE",
  "asking_price": 27500,
  "mileage": 38000
}

score_deal response

{
  "grade": "Good",
  "score": 100,
  "expected_price": 28569,
  "expected_price_low": 17200,
  "expected_price_high": 36390,
  "delta_pct": -0.0374,
  "comps_summary": "16 active US dealer listings (23,000–53,000 mi band).",
  "brief": "Asking $27,500 for a 2021 Toyota RAV4 XLE with 38,000 miles grades Good: -3.7% below an expected $28,569 ($17,200–$36,390). 16 active US dealer listings (23,000–53,000 mi band). Estimate reflects US national comps. Live market comps with 16 comps.",
  "risks": [
    "Regional pricing varies; verify comps in the listing's local market."
  ],
  "confidence": 0.92,
  "coverage": "scored",
  "rubric_version": "score_v1",
  "data_source": "live",
  "vehicle": {
    "year": 2021,
    "make": "Toyota",
    "model": "RAV4",
    "trim": "XLE"
  },
  "comps_count": 16
}

The ask is 3.7% under the expected $28,569, which falls in the Good band (3% to 10% under). The score is 100 because score_v1 computes clamp(100 - delta_pct × 200, 0, 100), so any ask below the expected price clamps to 100. With no ZIP, the 16 comps are US national dealer listings. Listings change every day, so the same call returns different numbers later. How grades work: /guides/how-deal-grades-work.

What Claude can call

score_deal grades a deal. Send asking_price and mileage, plus a VIN or year, make, and model. trim and zip are optional. explain_grade maps a delta_pct to a grade without fetching comps. health reports coverage and limits. Free includes 5 scored calls a month and Builder is $19/mo (founding price) for 1,000 scored calls a month. Only coverage: scored counts, and explain_grade and health are never metered. Plans: /pricing. Argument details: /docs/api. Test arguments in the browser first: /try.

If DealScore doesn't show up

  • After editing claude_desktop_config.json, quit Claude Desktop fully. Closing the window leaves the app running.
  • Check the file is valid JSON. A trailing comma is the usual mistake.
  • npx has to be on the PATH Claude Desktop sees. Run npx -v in a terminal to check.
  • A result with coverage: cannot_score and grade null means the comps were too thin to grade. The connection worked.

Other clients (Cursor, Claude Code, Codex, ChatGPT): /agents.

Sources: Custom connectors, Connector authentication, Remote MCP servers, mcp-remote.