CarEdge MCP Server: Tool Documentation

CarEdge (Auto Advocate, Inc.) is a US car-buying service. Its MCP server lets an AI assistant search cars for sale at US dealerships near the shopper's ZIP code, show one car's details, compare cars, price a car out the door for the shopper's location, check a dealer's CarEdge Dealer Transparency Index grade, decode a VIN, check recalls, estimate a trade-in's value and a monthly payment, and, only when the shopper asks, send the shopper's contact request to one CarEdge partner dealer.

United States only: US dealers and US ZIP codes. Prices and fees come from the dealer's own listing, and the dealer confirms the final price. Payment and trade-in figures are estimates, not offers. CarEdge does not sell cars, take payments or arrange financing.

For shoppers

Once CarEdge is connected, you can ask your assistant things like:

Partner dealers and other dealers. A search near your ZIP covers the cars of every dealer in CarEdge's marketplace listings, nearest first. A CarEdge partner dealer gives an itemized out-the-door quote and can be asked to contact you. At any other dealer you see the dealer's listed price, an out-the-door estimate from CarEdge and a link to the car on caredge.com; CarEdge cannot send that dealer your request. Each dealer also carries its grade from CarEdge's Dealer Transparency Index, which grades dealers on their fees, their add-ons and how closely the final price matches the listing.

To connect: in your assistant, add CarEdge as a connector (or custom connector) with the address below. Searching, car details, prices and the other research tools work with no sign-in. You are asked to sign in to CarEdge, or create an account, only when you ask a dealer to contact you. Saying "CarEdge" in your question helps your assistant pick it.

Your assistant never sends your details to a dealer while searching or pricing. When you ask a dealer to contact you, it asks for your name and how to reach you, shows you the dealer's own consent wording, and sends your request only after you agree. Requests from CarEdge's own review accounts go to a CarEdge inbox, never to a dealer.

Setup

Endpoint:

http://preprod-mcp.caredge.com/mcp

Transport: Streamable HTTP MCP, stateless, with JSON responses. Requests are HTTP POST. A GET or DELETE on the endpoint answers 405. Request bodies over 64 KB are refused.

Authentication: OAuth 2.1 authorization code flow with PKCE (S256). The client is a public client with no client secret; assistants register their own client with the authorization server.

ItemValue
Authorization serverhttps://clerk.caredge.com
Authorize URLhttps://clerk.caredge.com/oauth/authorize
Token URLhttps://clerk.caredge.com/oauth/token
Scopeinventory:read
Protected resource metadatahttp://preprod-mcp.caredge.com/.well-known/oauth-protected-resource

A call to lead_prepare or lead_submit without a valid token answers HTTP 401 with a WWW-Authenticate header that points to the protected resource metadata. The server accepts only OAuth access tokens from the authorization server above, signed RS256, unexpired, naming a user, and issued for the audience http://preprod-mcp.caredge.com/mcp. The authorization server also supports the refresh token grant.

How to connect

  1. Add the endpoint URL as a remote MCP server in the client.
  2. The client reads the protected resource metadata, finds the authorization server, and starts the authorization code flow with PKCE and the inventory:read scope.
  3. The user signs in with a CarEdge account at the authorization server (or creates one) and approves access.
  4. The client calls tools/list and then calls tools with the access token as a Bearer header.

Permissions

Tools for AI assistants

These are the 14 tools an AI assistant (Claude, ChatGPT and others) sees. Twelve only read. The two lead tools write, and only lead_submit sends anything to a dealer.

ToolWhat it doesClassificationSensitiveSide effects
stores_listDealerships near a ZIP, with distance, phone and transparency gradeReadNoNone
dealer_infoOne dealership: brands, stock, fees, how its quotes are built, gradeReadNoNone
inventory_searchCars for sale near a ZIP, with filtersReadNoNone
inventory_facetsCounts of what is in stock: makes, models, colors, price and year rangesReadNoNone
vehicle_getOne car by VINReadNoNone
vehicle_compareTwo to four cars side by sideReadNoNone
quote_out_the_doorOut-the-door price for the buyer's ZIP: itemized at a partner dealer, an estimate elsewhereReadNoKeeps the quote for 24 hours under a short quote_id, so a later lead records the figure the shopper saw. Changes nothing the shopper or dealer sees
lookup_dealer_transparencyA dealer's CarEdge Dealer Transparency Index grade (A to F) and fee figuresReadNoNone
decode_vinWhat car a VIN isReadNoNone (asks NHTSA's free VIN decoder)
check_vehicle_recallsNHTSA recall campaigns for a year, make and modelReadNoNone (asks NHTSA's free recalls service)
estimate_trade_inRough value of the shopper's own carReadNoNone (with a VIN and a signed-in user, asks Vehicle Databases, a paid service)
calculate_finance_paymentExample monthly loan payments for a priceReadNoNone
lead_prepareStep one of a contact request: shows the consent wording. Nothing is sentWriteNoCreates a single-use ticket that lasts 15 minutes and counts toward lead limits. Nothing is sent to a dealer
lead_submitStep two: sends the shopper's request to the dealerWriteYesSends the shopper's name and contact details to a real dealership. Idempotent per ticket. Marked destructive, so assistants ask before running it

Sign-in: the 12 read tools work with no sign-in; lead_prepare and lead_submit need a signed-in CarEdge user. Every call, on every tool, also writes an audit record (see Data handling). Dealer widgets and partner API keys have a wider set of tools, listed in Dealer widgets and partner keys.

Response format

Every tool returns the same envelope as structured content, with the same JSON repeated as a text block for clients that read only text:

{ "data": { }, "freshness": { }, "error": null }

stores_list

Purpose: Lists dealerships near the shopper's ZIP, nearest first, with phone, distance, consent wording and CarEdge's Dealer Transparency Index grade. For an AI assistant it lists every dealer in CarEdge's marketplace listings within the radius, partner or not. Use it when the shopper asks which dealers are near, which store is closest, or for a store's contact details.

Inputs

NameTypeRequiredNotes
near.zipstring, 5 digitsYes, if near is sentThe shopper's US ZIP code
near.radius_milesinteger, 1 to 250NoDefault 50 for an AI assistant (250 for a partner key). Stores further away are left out
near.offsetintegerNoAI assistants: the next_offset of the last answer, for the next page of dealers
makestringNoAI assistants: only dealers with this make in stock

Key outputs

Errors: too_broad (coverage spans the whole country and near was not sent), invalid_params.

Side effects: None.

{
  "data": {
    "rooftops": [
      {
        "slug": "jim-glover-chevrolet",
        "name": "Jim Glover Chevrolet",
        "city": "Owasso", "state": "OK", "zip": "74055",
        "phone": "(918) 555-1240",
        "participating": true,
        "distance_miles": 0.9,
        "disclosure_text": "By submitting you agree this dealership may contact you about this vehicle by email, phone or text at the details you provided.",
        "dti_grade": null, "dti_score": null
      }
    ],
    "sister_stores": []
  },
  "freshness": null,
  "error": null
}

dealer_info

Purpose: Describes one store: its contact details, the brands it sells new, how many new and used cars it has, its fees and how its quotes are built, and its Dealer Transparency Index grade. Opening hours are not held.

Inputs

rooftop_slug: one store, from stores_list. Optional when the user's coverage is one store.

Key outputs

A rooftop_slug of the form dealer-<id> from stores_list describes a dealer that is not a CarEdge partner, from its listings: participating: false, no fees, and its grade where one exists.

Errors: invalid_params (no rooftop_slug when the coverage has more than one store), out_of_scope (a store this user does not cover), inventory_unavailable (retryable).

Side effects: None.

Purpose: Finds cars for sale by make, model, year, price, body style, color, mileage, features, stock number and other filters. Returns one page of results at a time. For an AI assistant, a search with near and no rooftop_slug covers every dealer in CarEdge's marketplace listings within the radius, nearest first; without near it covers CarEdge's partner stores. A car at a dealer that is not a CarEdge partner comes back view-only: participating: false, no price_with_fees, a rooftop_slug of the form dealer-<id>, and a dealer object saying who sells it (name, city, state, ZIP, distance, listed price, the dealer's own page and the car's caredge.com page).

Inputs (all optional)

As an AI assistant sees them. A list takes up to 10 values unless noted, and any one value matches. A value outside a fixed list answers invalid_params, naming the field and the values it takes.

NameTypeNotes
nearobject{ "zip", "radius_miles" }: the shopper's ZIP and how far they will travel, 50 miles unless set, at most 250
statestringA US state, two-letter code or name. With near, a store must be in the state and within the radius
conditionlist of new, used, certifiedLeave out for new and used together. used includes certified
makelist of stringsExact makes, such as ["Chevrolet", "Ford"]
modellist of stringsModel names, such as ["F-150", "Silverado 1500"]. A name also finds the longer names listed for it
year_min, year_maxintegerModel year range
price_min, price_maxstring, dollarsSuch as "35000.00". price_max is a budget
miles_min, miles_maxinteger, 0 or moreA car with no mileage on file never matches a mileage bound
body_typelist of Truck, Van, SUV, Sedan, Minivan, Wagon, Coupe, Convertible, HatchbackTruck means a pickup
body_subtypelist of up to 5 stringsA pickup's cab: Crew, Extended, Regular or Extended Crew
bed_lengthlist of Short Bed, Regular Bed, Long BedPickup bed lengths
fuellist of Gasoline, Diesel, Electric, HybridGasoline covers every gas grade and flex fuel
powertrainlist of Gas, EV, Hybrid, PHEVEV includes extended-range and fuel-cell electric; PHEV is a plug-in hybrid
exterior_color, interior_colorlist of up to 5 base coloursWhite, Gray, Black, Blue, Red, Silver, Green, Beige, Brown, Orange, Gold, Yellow, Purple, Pink
exclude_colorslist of base coloursPaint colours to leave out, from the same list
featureslist of feature namesThe car must have all of them: heated-seats, cooled-seats, carplay-android-auto, leather-seats, sunroof, adaptive-cruise, blind-spot, remote-start, third-row, navigation, camera, lane-keep, wireless-charging, towing, head-up-display, premium-audio
trim, engine, drivetrain, transmissionlist of up to 5 stringsWords to match, such as ["AWD", "4WD"]. A car matches if it holds every word of any one value
dti_gradelist of A, B, C, D, FThe selling store's Dealer Transparency Index grade
one_owner, clean_titlebooleanTrue keeps only cars the history report shows that way
in_transitbooleanTrue keeps only cars on their way to the store; false only cars on the lot
days_on_market_min, days_on_market_maxintegerDays the car has been listed for sale
querystring, up to 200 charactersA few free words, such as "red". Words no car matches are dropped from the end
stock_nostringThe dealer's stock number, any case
rooftop_slug, storesstring; list of stringsOne store, or several, from stores_list or a car's rooftop_slug
sortrelevance, price_asc, price_desc, msrp_asc, msrp_desc, year_desc, year_asc, mileage_asc, mileage_desc, newest, days_on_market_asc, days_on_market_descDefault relevance. A car with no mileage or no days figure sorts last
limitinteger, 1 to 20Cars per page; a larger number is read as 20. Default is the dealer's setting, 10 unless changed
cursorstringnext_cursor from the previous page. Change nothing else when paging

When the stores span the whole country, the call must include at least one of query, make, near or state. A partner key sees the smaller schema of the dealer widget: single strings for make, model and body_type, five sort orders and up to 100 cars a page.

Key outputs

Errors: too_broad (no query, make or near on whole-country coverage, or the answer would be over 64 KB; ask again with a smaller limit), out_of_scope (rooftop_slug names a store this user does not cover), invalid_params, inventory_unavailable (retryable).

Side effects: None.

{
  "data": {
    "rows": [
      {
        "vin": "5GAERBKW8RJ102292",
        "rooftop_slug": "jim-glover-chevrolet",
        "source": "dealer_feed",
        "participating": true,
        "year": 2024, "make": "Buick", "model": "Enclave", "trim": "Essence",
        "condition": "used",
        "price": "27500.00",
        "price_with_fees": "28099.00",
        "miles": 48259,
        "in_transit": false
      }
    ],
    "total": 199,
    "next_cursor": "WyJyZWxldmFuY2UiLDIsIjk5YzQyYTY2ZGI0MzQ4OGIiXQ=="
  },
  "freshness": {
    "jim-glover-chevrolet": { "as_of": "2026-11-02T05:44:24Z", "status": "fresh", "source": "dealer_feed" }
  },
  "error": null
}

inventory_facets

Purpose: Counts what is in stock at the stores this user may see: how many cars, how many of each make, model, trim, body type, drivetrain, fuel and color, and the lowest and highest year, price and miles. It answers questions about the whole lot ("what trucks do you have?") from every matching car, not from one page of results.

Inputs (all optional)

One value each, not lists: condition (new, used or certified), query, make, model, body_type (a body style from the inventory_search list, such as SUV or Truck), rooftop_slug and near. When the stores span the whole country, the call must include at least one of query, make or near. The other inventory_search filters are not taken here.

Key outputs

Errors: invalid_params, too_broad (no query, make or near on whole-country coverage), out_of_scope, inventory_unavailable (retryable).

Side effects: None.

vehicle_get

Purpose: Returns everything CarEdge holds about one car, by VIN, including the store's consent wording for a later lead.

Inputs

NameTypeRequiredNotes
vinstring, 17 charactersYesLetters and digits, no I, O or Q
rooftop_slugstringNoWhich store's copy, when also_at named more than one

Key outputs

For an AI assistant, a VIN at any other dealer in CarEdge's marketplace listings answers view-only: participating: false, no price_with_fees, and a dealer object saying who sells it, as in inventory_search.

Errors: not_found (no car with that VIN where this user may look; this says nothing about whether the car exists elsewhere), inventory_unavailable (retryable), invalid_params.

Side effects: None.

{
  "data": {
    "vin": "5GAERBKW8RJ102292",
    "rooftop_name": "Jim Glover Chevrolet",
    "participating": true,
    "year": 2024, "make": "Buick", "model": "Enclave", "trim": "Essence",
    "price": "27500.00",
    "price_with_fees": "28099.00",
    "engine": "3.6L V6",
    "photo_count": 1,
    "also_at": [],
    "disclosure_text": null
  },
  "freshness": { "as_of": "2026-11-02T05:44:24Z", "status": "fresh", "source": "dealer_feed" },
  "error": null
}

vehicle_compare

Purpose: Puts two to four cars side by side, by VIN, and says what sets them apart: which fields differ, which features only one car lists, and which car is cheapest, lowest-mileage and newest.

Inputs

vins (required): a list of 2 to 4 different 17-character VINs.

Key outputs

Errors: invalid_params (fewer than 2 or more than 4 different VINs), not_found (fewer than two of the cars found), inventory_unavailable (retryable).

Side effects: None.

quote_out_the_door

Purpose: Prices one car for one buyer, line by line: the price, any discount, the dealer's fees and, where the store quotes them, sales tax, title and registration for the buyer's location.

Inputs

NameTypeRequiredNotes
vinstring, 17 charactersYes
buyer_locationobjectNo{ "zip" }, or { "state", "county" } when the shopper gives only a state. Sets the tax, title and registration
rooftop_slugstringNoWhich store's copy, when the VIN is listed at more than one
trade_allowancestring, dollarsNoDefault "0.00". Lowers the tax where the buyer's state credits a trade-in. Cannot be negative

Without buyer_location, the car is priced at the store's own location as an estimate (binding: false), and estimate_note says so.

Key outputs

Dealers that are not CarEdge partners (AI assistants). A car at a dealer that is not a CarEdge partner gets no dealer quote. The answer has participating: false and is_estimate: true: listing_price is the dealer's own advertised price; estimate is an out-the-door estimate for the buyer's ZIP (priced_for: "dealer_zip" when none was given), and each of its line_items says in source and detail where its figure came from; dti_grade, dti_score and dti_grade_reason are the dealer's grade where one exists; caredge_car_url and caredge_dealer_url are its caredge.com pages, null when they cannot be resolved. Such a car cannot be sent a lead.

Errors: not_found (no car with that VIN for this user), quote_unavailable (the store has no pricing arrangement with CarEdge, the car has no price, the store's fee schedule is missing, or there is no tax rate for the buyer's location), invalid_params (for example an unknown ZIP or a negative trade allowance).

Side effects: The signed quote (VIN, total, store, state, county, fee schedule version and expiry) is kept under the short quote_id for 24 hours plus 5 minutes, then discarded. It holds no name or contact details. Nothing is shown to or sent to the shopper or dealer.

{
  "data": {
    "vin": "5GAERBKW8RJ102292",
    "rooftop_name": "Jim Glover Chevrolet",
    "buyer_location": { "state": "OK", "county": "Tulsa", "zip": "74133" },
    "line_items": [
      { "label": "Vehicle Price", "amount": "27500.00", "kind": "price", "source": "listing" },
      { "label": "Admin & Processing Fee", "amount": "599.00", "kind": "fee", "source": "dealer_profile" },
      { "label": "Additional Discount", "amount": "-550.00", "kind": "discount", "source": "dealer_profile" }
    ],
    "total": "27549.00",
    "taxes_included": false,
    "binding": true,
    "estimate_note": null,
    "quote_id": "q_d38825v2g3",
    "expires_at": "2026-11-03T14:07:26.342761Z",
    "quote_sheet_url": "https://<quote sheet host>/public/quote-sheet?t=..."
  },
  "freshness": { "as_of": "2026-11-02T05:44:24Z", "status": "fresh", "source": "dealer_feed" },
  "error": null
}

lookup_dealer_transparency

Purpose: Tells the shopper how transparent a dealer is on price: its CarEdge Dealer Transparency Index grade (A to F) and score, built from real out-the-door quotes from that dealer, not from reviews. It does not check licences, reviews or complaints.

Inputs

NameTypeRequiredNotes
dealer_namestringYesThe dealer's name
statestringNoTells apart dealers with the same name
vinstring, 17 charactersNoThe grade is then for the store selling that car
vehicle_make, vehicle_modelstringNoThe car the shopper is looking at

Key outputs

An AI assistant is never shown individual past quotes from other shoppers, only the grade and the averages.

Errors: invalid_params, upstream_unavailable (the transparency data could not be read; retryable). A dealer with no grade is an answer with dealer: null, not an error.

Side effects: None.

decode_vin

Purpose: Says what car a VIN is, using NHTSA's free vPIC database. For a VIN the shopper pastes, not for a car picked from a search (that is vehicle_get).

Inputs

vin (required): a 17-character VIN.

Key outputs

Errors: invalid_params (not a valid VIN), not_found (NHTSA answered but could not decode the VIN), upstream_unavailable (NHTSA did not answer; retryable).

Side effects: None. The VIN is sent to NHTSA's public service.

check_vehicle_recalls

Purpose: Lists NHTSA's open safety recall campaigns for a year, make and model. Not a car's accident or title history.

Inputs

year, make, model (all required).

Key outputs

Errors: invalid_params, upstream_unavailable (NHTSA did not answer, so the check was not done; it never means the car has no recalls).

Side effects: None.

estimate_trade_in

Purpose: Gives a rough value for the car the shopper wants to trade in or sell. Not for a car a dealer is selling.

Inputs

NameTypeRequiredNotes
year, make, modelinteger, string, stringYesThe shopper's car
trim, mileage, conditionstring, integer, stringNoWithout trim and mileage the comparison covers every trim and mileage of the model
vinstring, 17 charactersNoDecoded first; the car it decodes as is the one valued (vin_decoded_as)

Key outputs

Errors: invalid_params, not_found (no comparable listing with a price for that year, make and model, so there is no figure).

Side effects: None.

calculate_finance_payment

Purpose: Works out an example monthly loan payment for a price. It needs a real price, from the shopper or a tool. It is not a loan offer, and CarEdge does not arrange financing.

Inputs

vehicle_price (required, dollars). Optional: the down payment, the trade-in value, the loan term (36, 48, 60, 72 or 84 months), the APR, the state (two-letter code, for a tax estimate) and whether the price already includes tax and fees.

Key outputs

Errors: invalid_params.

Side effects: None.

lead_prepare

Purpose: Step one of sending a shopper's contact request to a dealer. It picks the store, returns that store's own consent wording, and issues a ticket for lead_submit. Nothing is sent to the dealer. Call it only after the shopper has asked to be contacted and has given a first name and at least one of an email address or a phone number.

Inputs

NameTypeRequiredNotes
vinstring, 17 charactersYes
customer.first_namestring, up to 80 charactersYes, except on a conversation follow-up
customer.last_namestring, up to 80 charactersNo
customer.emailstring, up to 254 charactersOne of email or phone
customer.phonestring, up to 32 charactersOne of email or phone
channelslist of email, phone, smsYes, except on a conversation follow-upHow the shopper agreed to be contacted. Each channel needs the matching detail
buyer_zipstring, 5 digitsNoRoutes the lead to the nearest store holding the car
rooftop_slugstringNoPicks the store when more than one has the car
quote_idstringNoFrom quote_out_the_door, when the shopper saw a price
commentsstringNoUp to 500 characters. A conversation follow-up allows more, up to a limit the server sets
followup_typetrade_in or conversationNoSet when this lead adds to an earlier one
adds_toUUIDNoThe earlier lead_id a conversation follow-up adds to

Key outputs

Errors: invalid_params (no channel, no email or phone, a channel without its matching detail, an unknown ZIP, a quote_id that is expired or for another car or store, an invalid follow-up, or through an AI assistant, a call or text or a phone number at a store with no consent wording: ask for an email address and send channels: ["email"] only), not_found (no car with that VIN for this user), quote_unavailable (no store holding the car takes leads through CarEdge), rate_limited (retryable; see Rate limits), consent_required (a conversation follow-up whose store has added consent wording since the earlier lead).

Side effects: Creates a single-use ticket that expires after 15 minutes, and CarEdge keeps it until shortly after then. The ticket holds a SHA-256 fingerprint of the shopper's name and contact details, never the details themselves, plus the store, the car, the chosen channels, a fingerprint of the consent wording and the quoted figures when a quote_id was given. Each call counts toward the lead limits. If the shopper says no, nothing more happens and the ticket expires on its own. Nothing is sent to a dealer.

{
  "data": {
    "ticket": "t_<code>",
    "disclosure_text": "<the store's own consent wording>",
    "expires_at": "<15 minutes from now>",
    "rooftop_slug": "<store slug>",
    "rooftop_name": "<store name>",
    "distance_miles": 6.6,
    "routing_reason": "nearest_to_buyer"
  },
  "freshness": null,
  "error": null
}

lead_submit

Sensitive. This tool sends the shopper's name and contact details to a real dealership.

Purpose: Step two. Spends the ticket from lead_prepare, records the lead and emails it to that store's lead inbox. Call it only after the shopper has agreed to the disclosure_text that lead_prepare returned: a clear yes after seeing it, or giving their details after it was shown to them word for word.

Inputs

NameTypeRequiredNotes
ticketstringYesFrom lead_prepare
customerobjectYes, except on a conversation follow-upThe same shopper lead_prepare was called with. A changed name or contact detail is refused
disclosure_textstring, up to 4,000 charactersWhen lead_prepare returned wordingThe exact text lead_prepare returned
shopper_consentedbooleanYes for an AI assistant, on every lead except a conversation follow-up; for a partner key, when the store has wordingTrue only once the shopper has said yes. Without it an AI assistant's lead is refused with consent_required
channelslist of email, phone, smsNoMay name fewer channels than at prepare, never more. Leave out to keep them all
commentsstringNoUp to 500 characters, except on a conversation follow-up
adds_toUUIDNoAn earlier lead_id for this shopper and car that this lead adds to
trade_inobjectNoyear, make, model (required), plus trim, vin, mileage, appraisal (whole dollars), appraisal_source

Key outputs

Idempotency: A ticket makes one lead. Sending exactly the same call again returns the same lead_id with the lead's current status, and nothing is sent twice. A different request on a used ticket answers ticket_used.

Errors: ticket_expired (older than 15 minutes; call lead_prepare again and show the wording again), ticket_used, consent_required (consent missing, or the wording sent back differs from what the ticket was issued for), quote_unavailable, invalid_params (a ticket not issued to this user, changed customer details, or more channels than at prepare), rate_limited (the store has already taken its daily share of AI assistant leads; ask the shopper to call the store directly).

Side effects: Writes the lead and queues it for delivery in one step, then emails it to the store's lead inbox right away. Delivery problems are retried automatically, so the shopper never has to agree twice. See Data handling for exactly what is stored and sent.

{
  "data": {
    "lead_id": "<uuid>",
    "status": "accepted",
    "rooftop_slug": "<store slug>",
    "accepted_at": "<timestamp>",
    "already_sent": false
  },
  "freshness": null,
  "error": null
}

Status values for leads

StatusMeaning
acceptedThe lead is recorded and queued. The email to the dealer goes out straight afterwards
deliveredOur email provider accepted the lead email for the store's lead inbox
failedDelivery stopped after 10 attempts. The first retry is after 1 minute, and the wait doubles up to 1 hour between attempts

Other status fields on the read tools

Errors

These are the only error codes a tool returns in the envelope. Any tool can also answer invalid_params for arguments its schema rejects, rate_limited when a request limit is reached, and out_of_scope when the tool is not granted to the caller.

CodeMeaningRetryableWhat to do
invalid_paramsAn argument is missing, malformed or cannot be used. The message names the fieldNoFix the argument and call again
not_foundNo such car or store for this userNoTell the shopper it was not found here
out_of_scopeThe tool or the named store is not covered for this userNoUse a covered store
too_broadThe request needs a narrowing filter, or the answer would be over 64 KBNoAdd near, make or query, or a smaller limit
rate_limitedA request or lead limit was reachedYes, laterWait, or ask the shopper to call the store directly
quote_unavailableThe car can be described but not priced, or no store can take the leadNoDescribe the car without a price or lead
ticket_expiredThe lead ticket is older than 15 minutesNoCall lead_prepare again and show the wording again
ticket_usedThe ticket already made a lead and this request differsNoStart again with lead_prepare
consent_requiredThe shopper's agreement is missing or does not match the wordingNoShow the wording and get a clear yes
inventory_unavailableThe inventory data cannot be reached right now. It never means the car is goneYesRetry once
upstream_unavailableAn outside public source a research tool reads (NHTSA) did not answer. A recall check that fails never means the car has no recallsYesRetry once, then say the check could not be done

Rate limits

Data handling

Read tools (every tool except lead_prepare and lead_submit) take search filters, a VIN, a dealer name, a car's year, make and model, prices, and a ZIP code or a state and county. decode_vin and check_vehicle_recalls pass the VIN or the year, make and model to NHTSA's public services; estimate_trade_in, for a signed-in user who gives a VIN, passes it to Vehicle Databases. The server never asks for a street address or precise location. The ZIP sets the distance to a store and the tax on a quote. None of these tools takes a name, email address or phone number. CarEdge does not see the rest of the conversation, only the arguments the assistant sends to a tool.

Audit record on every call: the signed-in user's ID (for a caller that has not signed in, a hashed ID, not its raw IP address), the tool, the time, the result or error code, the response time, and a SHA-256 hash of the arguments. The argument values themselves are not stored in the audit record or written to logs.

lead_prepare takes the shopper's first name, optional last name, email address and/or phone number, the contact channels they agreed to, and optionally a ZIP, comments and a quote_id. It stores only a SHA-256 fingerprint of the name and contact details in the ticket record, never the details themselves. Nothing leaves CarEdge.

lead_submit takes the same shopper details, the consent wording and agreement, the channels, optional comments and an optional trade-in car (year, make, model, trim, VIN, mileage, appraisal and who appraised it). It then:

  1. Stores the lead: the shopper's name, email and phone encrypted at rest (AES-256-GCM), plus the channels, comments, trade-in details, the quoted figures from the quote_id (car, total, store, state and county), the status, the time, and the name of the AI assistant used.
  2. Emails the lead to that one store's lead inbox as an ADF (Auto-lead Data Format) XML document. The email contains the shopper's name, email and phone, the car and its asking price, the comments, the contact channels the shopper agreed to, any trade-in, the total CarEdge quoted (when the shopper saw a quote), and the name of the AI assistant used.

The dealer receives its own copy of the lead by email and handles it under its own privacy policy. A lead goes only to the one store the ticket names, and only after the consent check passes. Through an AI assistant every lead needs the shopper's yes; only a partner key may send a lead without one, and only at a store that asks for no consent wording.

Read the full CarEdge Privacy Policy and Terms of Use.

Disconnect and delete

To stop CarEdge, open your assistant's connector settings and disconnect or remove CarEdge. To delete your CarEdge data, use the privacy request form or email [email protected]. A dealer that already received your request keeps its own copy; ask that dealer directly to delete it.

Support

Email [email protected].

Dealer widgets and partner API keys

This section is for CarEdge's dealer website chat (the CarEdge widget) and other partners that connect with a CarEdge API key. It does not apply to AI assistants such as Claude or ChatGPT, which get the 14 tools above. A partner key can hold more tools, and some answer differently for a key than for an assistant.

Where each tool works

The server offers 33 tools, but a caller sees and can call only the tools its access lists.

CarEdge sign-in. No tool here reads anything stored in the shopper's own CarEdge account. In an AI app the shopper signs in with a CarEdge account only to contact a dealer; the tools never read that account's garage, deals or saved cars. A dealer's website chat needs no sign-in at all.

The CarEdge tools that work on a signed-in account are not on this server and are only in the CarEdge assistant on caredge.com: My Garage (the shopper's own cars and their values), saved cars, deals and the CarEdge AI Buying Agent's negotiations (offers, counter-offers, drafts, follow-ups), and the shopper's saved profile and past conversations.

Who callsHow it gets inWhich tools
AI apps (Claude, ChatGPT)The app's connector, signed in or not (see Permissions)The 14 tools in Tools for AI assistants.
A dealer's website chat (the CarEdge widget)A partner key per dealer, used by the CarEdge assistantThe tools on that dealer's key. Live dealer keys hold the six original tools. A new key gets those six unless more are named when it is issued.
The CarEdge widget, research toolsThe CarEdge assistant runs its own copy of these tools, and can run them here instead, one dealer at a timeWhen switched for a dealer: decode_vin, check_vehicle_recalls, analyze_bundle_deal, predict_otd_price. The rest keep running in the assistant, because there they adapt to the dealer's own site (hiding other dealers' details, the dealer's own payment terms).
Other partnersA partner keyThe tools named on that key.

Some tools also need an outside source to be connected before they answer; until then they answer upstream_unavailable:

Everything else answers from data this server already holds: the dealers' cars, CarEdge's marketplace listings, the Dealer Transparency Index, and NHTSA's free VIN and recall data.

Every tool on a partner key

ToolTitle shown to usersClassificationSensitiveSide effectsWhere it works
stores_listList the dealer's storesReadNoNoneAI assistants; dealer website chat; partner keys
dealer_infoDescribe one storeReadNoNoneAI assistants; partner keys, once CarEdge grants it
inventory_searchSearch cars for saleReadNoNoneAI assistants; dealer website chat; partner keys
inventory_facetsCount what is in stockReadNoNoneAI assistants; partner keys, once CarEdge grants it
vehicle_getGet one car by VINReadNoNoneAI assistants; dealer website chat; partner keys
vehicle_compareCompare cars side by sideReadNoNoneAI assistants; partner keys, once CarEdge grants it
quote_out_the_doorPrice a car out the doorReadNoKeeps the signed quote for 24 hours under a short quote_id, so a later lead records the figure the shopper saw. Changes nothing the shopper or dealer sees.AI assistants; dealer website chat; partner keys
decode_vinDecode a VINReadNoNone (asks NHTSA's free VIN decoder)AI assistants; partner keys, once CarEdge grants it; dealer website chat when that dealer is switched to this server
check_vehicle_recallsCheck recallsReadNoNone (asks NHTSA's free recalls API)AI assistants; partner keys, once CarEdge grants it; dealer website chat when that dealer is switched to this server
analyze_bundle_dealWork out a multi-car or trade dealReadNoNonePartner keys, once CarEdge grants it; dealer website chat when that dealer is switched to this server
calculate_finance_paymentEstimate a monthly paymentReadNoNoneAI assistants; partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
predict_otd_pricePredict a dealer's out-the-door priceReadNoNonePartner keys, once CarEdge grants it; dealer website chat when that dealer is switched to this server
lookup_dealer_transparencyLook up a dealer's transparency gradeReadNoNoneAI assistants; partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
get_vehicle_featuresList a vehicle's featuresReadNoNonePartner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
analyze_days_on_marketAnalyze days on marketReadNoNonePartner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
compare_dealer_pricesCompare prices at other dealersReadNoNone (asks zippopotam.us's free ZIP lookup)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
lookup_cost_to_ownLook up the total cost to own a vehicleReadNoNonePartner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
lookup_depreciation_curveLook up a vehicle's depreciation curveReadNoNonePartner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
get_market_valueLook up a vehicle's market valueReadNoNone (asks Vehicle Databases, a paid service)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
check_manufacturer_incentivesCheck manufacturer incentivesReadNoNone (asks MarketCheck, a paid service)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
search_communitySearch the CarEdge communityReadNoNone (searches the CarEdge community forum)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
get_vehicle_specsLook up a vehicle's specsReadNoNone (asks DataOne, a paid vehicle data service)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
lookup_vehicle_colorsLook up a vehicle's colorsReadNoNone (asks DataOne, a paid vehicle data service)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
lookup_price_historyLook up a listing's price historyReadNoNone (asks CarEdge's own price tracking)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
estimate_trade_inEstimate a trade-in's valueReadNoNone (asks Vehicle Databases, a paid service, when a VIN is given)AI assistants; partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
lookup_invoice_priceLook up MSRP and dealer invoiceReadNoNone (asks DataOne, a paid vehicle data service)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
analyze_dealAnalyze a dealReadNoNone (asks Vehicle Databases, DataOne and MarketCheck, paid services)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
market_insightsFull market picture for a VINReadNoNone (asks the same paid services as analyze_deal)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
research_vehicle_valueResearch a vehicle's fair market valueReadNoNone (asks Anthropic's Claude, a paid AI service)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
parse_vehicle_linkParse a vehicle listing linkReadNoNone (fetches the public page shared, and may ask MarketCheck, NHTSA and Anthropic's Claude)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
draft_negotiation_messageDraft a negotiation messageReadNoNone (asks Anthropic's Claude, a paid AI service)Partner keys, once CarEdge grants it (the website chat keeps the CarEdge assistant's own copy)
lead_preparePrepare a lead (nothing is sent)WriteNoCreates a single-use ticket that lasts 15 minutes and counts toward lead limits. Nothing is sent to a dealer.AI assistants; dealer website chat; partner keys
lead_submitSend a lead to the dealerWriteYesSends the shopper's name and contact details to a real dealership. Idempotent per ticket. Marked destructive, so assistants ask before running it.AI assistants; dealer website chat; partner keys

"Where it works" is where a tool can be used once it is granted; see Where each tool works for who grants what and which tools need an outside source connected first.

Every call, on every tool, also writes an audit record (see Data handling).

Research tools on partner keys

These four answer exactly as the CarEdge assistant's own tools of the same names do, so a dealer widget gets the same answer whichever server runs them. Their answers keep that shape: dollar amounts are plain numbers, and some answers carry notes for the assistant.

Two more read CarEdge's Dealer Transparency Index, built from verified out-the-door quotes:

Three more read CarEdge's marketplace listings, every dealer's, not only this one's:

Two more read CarEdge's cost-to-own and depreciation data, by make and model:

Three more ask outside services CarEdge pays for:

Two more ask DataOne, a vehicle data service:

Two more value a car or its price over time:

Three more put a price in context, from those services and CarEdge's listings:

Three more ask an AI model (Anthropic's Claude):

None of these tools takes a shopper's name, email address or phone number.