Live market lookups for your BDC and pricing desk, inside Claude and ChatGPT
Connect MarketCheck with a sign-in instead of a pasted key, allow only the tools each team needs, and know when the hosted MCP server or the REST API fits better.
MarketCheck5 min read
For operations leads, BDC and pricing managers, and whoever runs their tools
A BDC rep wants to know whether the car a shopper asked about is still listed across town. A pricing manager wants the comparable listings behind a number before changing a price. Neither writes code, and if the store uses Claude or ChatGPT, it is already open in a browser tab.
The MarketCheck connector puts market data tools inside those chat apps. People sign in with a MarketCheck account instead of pasting an API key, and each connection can call only the tools someone ticked on the consent screen.
In short. Add
https://developers.marketcheck.com/api/mcpas a custom connector in Claude or ChatGPT, sign in, tick the tools the job needs and pick the API key the connection runs on. Every connection can be edited or revoked later from API Keys, under AI Agents. For your own software, use the hosted MCP server or the REST API instead.
What your team can ask for
The connector offers these tools:
search_active_cars: what is for sale now. Dealer listings by default, and private-seller or auction listings on request.search_past_90_days: dealer listings that sold or expired in the last 90 days.predict_price_with_comparables: a predicted market price with the comparable listings behind it.get_car_history: where a VIN was listed before, with asking prices and days on market.decode_vin_neovin: the build from the VIN, with trim, engine, options, packages and MSRP.
get_server_info, which lets the chat app read the tool catalog, is always included. The catalog also has two UK tools, search_uk_active_cars and search_uk_recent_cars.
Every tool is a lookup: it reads MarketCheck data and returns it to the chat. The connector has no access to your DMS or CRM. Tool calls run on the same backend as the REST API and count against the same plan, so they appear in your usage dashboard with the rest of your calls.
Set it up in Claude or ChatGPT
In Claude, on the web or in Claude Desktop:
- Open your profile menu, then Customize, Connectors, Add custom connector.
- Name it
MarketCheck MCPsand pastehttps://developers.marketcheck.com/api/mcpas the URL. No API key goes in the URL. - Click Add. Claude opens a MarketCheck sign-in window. Sign in with your MarketCheck account.
- On the consent screen, tick the tools to allow, pick the API key the connection should use, and click Allow.
ChatGPT's custom connectors need a Plus or Business plan with Developer mode turned on. In Settings, open Apps & Connectors, turn on Developer mode under Advanced settings, then choose Add custom connector and use the same URL. The sign-in and consent steps match Claude's. Enable the connector in a conversation to use it.
- Person adds the connector
- MarketCheck sign-in
- Ticks tools, picks a key
- Allowed tools in the chat
Each connection then appears on its key in the AI Agents column of the portal's API Keys page. Open it to see each assistant and the date it was granted, edit which tools it may call, or revoke it. Changes take effect on the next call.
Scope each connection to the job
Give each team its own API key and name it after the team. The key's name shows on the consent screen, the team's connections sit together under that key, and their calls count against it. Then tick tools by job.
The BDC. A rep answering a shopper needs lookups: whether the car is still listed, what else is listed nearby, where it was listed before and what the VIN says about the build. Tick search_active_cars, get_car_history and decode_vin_neovin, and leave the pricing tools off.
- Shopper asks the rep
- Rep asks in Claude
- Listed now, nearby
- Rep answers the shopper
The pricing desk. A manager moving a price wants the evidence behind it. Tick predict_price_with_comparables, search_past_90_days and search_active_cars, plus get_car_history when a unit's earlier listings matter.
- Manager picks a unit
- Price + comparables
- Sold and expired nearby
- Manager sets the price
For both teams, write the store's ZIP and a standing rule ("always pass miles and ZIP to pricing tools") into the instructions people reuse. The gotchas below explain why.
Connector, hosted server or REST
| Route | Built for | Authentication |
|---|---|---|
Connector, https://developers.marketcheck.com/api/mcp |
People in Claude and ChatGPT | MarketCheck sign-in, per-tool consent |
Hosted MCP server, https://api.marketcheck.com/mcp?api_key=YOUR_API_KEY |
Agents and MCP clients you run | API key in the URL |
REST API, https://api.marketcheck.com/v2 |
Scheduled jobs and your own apps | api_key query parameter |
Use the connector whenever a person is asking the questions. Nobody copies a key into a chat app, and each connection carries its own consent, so revoking one assistant leaves the others working.
Use the hosted server for software you run, such as an agent on your own server. The key sits in the URL, so keep that URL in server-side configuration. For IDE agents that read MCP settings from a file, such as Claude Code and Cursor, the portal also offers a local proxy, @marketcheck/mcp-client, which reads the key from an environment variable.
Use REST when the same question comes back on a schedule. Your code decides the calls and caches the answers.
Unusual use: an analyst's weekly market read, written in Claude
Some reports are judgment pieces. An analyst reads the numbers and writes up what changed for the Monday pricing meeting. With the connector, a saved prompt pulls the same numbers each week and the analyst spends the time on the writing.
- Monday morning
- Analyst runs the saved prompt
- Active and sold stats
- Prices on watch-list units
- Analyst edits and sends
Weekly market read: used SUVs in <STATE>. Use the MarketCheck tools.
1. search_active_cars with facets "make,model", state <STATE>, car_type used,
body_type SUV, rows 1. Take the models with the most listings.
2. For each of those models: search_active_cars with stats "price,dom", rows 1.
3. For the same models: search_past_90_days with state <STATE>, sold true,
stats "price", rows 1. Then again with stats "dom" (one stats field per call).
4. For each unit on the watch list: predict_price_with_comparables with its
miles and ZIP <STORE_ZIP>.
5. Compare with last week's numbers below. Write one page: what moved, which
models are sitting longer, and the questions to raise at the pricing meeting.
Watch list: <VIN, miles>
Last week's numbers: <paste>When the read settles into a fixed set of numbers, move the pulling to REST and keep the writing in Claude. This job builds one row per model:
const BASE = 'https://api.marketcheck.com/v2'
async function get(path: string, params: Record<string, string | number>) {
const url = new URL(BASE + path)
url.searchParams.set('api_key', process.env.MARKETCHECK_API_KEY ?? '')
for (const [key, value] of Object.entries(params)) url.searchParams.set(key, String(value))
for (let attempt = 0; attempt < 3; attempt++) {
const res = await fetch(url)
if (res.ok) return res.json()
if (res.status !== 429) throw new Error(`${path} returned ${res.status}`)
// A spent monthly quota also returns 429, and waiting will not help
if (res.headers.get('Quota-Remaining') === '0') throw new Error('Monthly quota exhausted')
await new Promise(resolve => setTimeout(resolve, Number(res.headers.get('Retry-After') ?? 2) * 1000))
}
throw new Error(`${path} is still rate limited`)
}
export async function weeklyRow(state: string, make: string, model: string) {
const scope = { state, make, model, car_type: 'used', rows: 0 }
const active = await get('/search/car/active', { ...scope, stats: 'price,dom_active' })
// Past Inventory Search takes one stats field per request
const sold = await get('/search/car/recents', { ...scope, sold: 'true', stats: 'price' })
return {
model: `${make} ${model}`,
activeListings: active.num_found,
medianAsking: active.stats.price.median,
medianDaysActive: active.stats.dom_active.median,
soldListings: sold.num_found,
medianLastAsking: sold.stats.price.median
}
}With rows=0, a search returns counts and statistics with no listings. This is the documented sample for a stats-only Inventory Search call (cars similar to one F-150 VIN), trimmed:
{
"num_found": 6517,
"listings": [],
"stats": {
"dom_active": {
"count": 6517,
"median": 49.15,
"percentiles": { "25.0": 17.53, "50.0": 49.15, "75.0": 103.17 }
},
"dos_active": { "count": 6517, "median": 40.27 }
}
}Gotchas
- Usage runs on the key you pick. Every connection on a key spends calls on that key, against your plan, so pick the team's key on the consent screen.
- Pricing calls need miles and ZIP. The docs list defaults of 50,000 miles and ZIP 50501 for
predict_price_with_comparableswhen either is left out, so a vague question gets priced at the wrong mileage and location. - Ask for the value list first. The docs trace empty results to filter values that did not match, and recommend a facets call first to see the exact values, such as how a model or trim is spelled.
- Some fields are left out by default. To save tokens, the server strips dealer details, full build specs and extra photos unless the call asks for them with
include_dealer_object,include_build_objectorfetch_all_photos. - The IP allowlist applies here too. The account-level IP allowlist on API Keys also covers MCP traffic, so test the connector with one person before a rollout if you use it.
- A 429 means slow down. The docs advise backing off between calls. In a chat, wait a moment before asking again.
Who this is for
- Operations leads rolling out market lookups to BDC and pricing staff.
- The IT lead or vendor who manages the MarketCheck account and its keys.
- Analysts who write a recurring market read.
- Developers choosing between the connector, the hosted server and REST.
Start here
- Create a free account and a key for the first team. Start on the Free tier for development; plans are on the pricing page.
- Try the tools in the portal's MCP Playground, which runs on your API key with no setup.
- Add the connector in Claude or ChatGPT and allow one tool, such as
decode_vin_neovin, for a first test. - Check the AI Agents column on the key after the first week, and adjust each connection's tools.
The MCP page lists the tools and every connection path. The MCP server docs cover the tools, the hosted server and example workflows.