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
- Open Customize > Connectors in Claude Desktop (some versions label it Settings > Connectors).
- Click Add custom connector.
- Name it DealScore and paste
https://cardealscore.com/api/mcpas the server URL. - 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_dealat 401, and Claude will not open a Connect card. If it asks about the OAuth client, choose Use Claude's published identity. - 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 -vin a terminal to check. - A result with
coverage: cannot_scoreand 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.