CarMax MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CarMax MCP ServerSearch for 2021 Toyota Camry under $30k in 90210"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@striderlabs/mcp-carmax
MCP server connector for CarMax — the used car marketplace. Automates CarMax flows via Playwright + Browserbase.
Tools
Tool | Description |
| Search CarMax inventory by make, model, year, price, and ZIP code |
| Get full details (specs, features, photos, Carfax) for a specific vehicle |
| Schedule a test drive appointment at CarMax |
| Get an instant offer for selling your car by VIN or license plate |
Related MCP server: MCP Playwright Server
Requirements
Node.js ≥ 18
Browserbase account with a CDP URL
Setup
Environment Variables
export BROWSERBASE_CDP_URL="wss://connect.browserbase.com?apiKey=YOUR_KEY"Usage with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"carmax": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-carmax"],
"env": {
"BROWSERBASE_CDP_URL": "wss://connect.browserbase.com?apiKey=YOUR_KEY"
}
}
}
}Tool Details
search_inventory
Search for vehicles by various filters:
search_inventory({
zip: "90210",
make: "Toyota",
model: "Camry",
year_min: 2019,
year_max: 2023,
price_max: 30000,
limit: 10
})get_vehicle_details
Get detailed info for a specific vehicle (stock number from search results):
get_vehicle_details({ stock_number: "25123456" })Returns: title, price, mileage, VIN, location, specs, features, photo URLs, Carfax info.
schedule_test_drive
Schedule a test drive appointment:
schedule_test_drive({
stock_number: "25123456",
first_name: "Jane",
last_name: "Smith",
email: "jane@example.com",
phone: "5551234567",
preferred_date: "Saturday",
preferred_time: "afternoon"
})get_instant_offer
Get a cash offer for your car:
// By VIN
get_instant_offer({ vin: "1HGCM82633A123456", mileage: 85000, zip: "90210" })
// By license plate
get_instant_offer({ license_plate: "ABC1234", state: "CA", mileage: 85000 })How It Works
This connector uses Playwright over a Browserbase remote browser session (via CDP) to automate CarMax's website. No unofficial APIs — all data comes directly from CarMax.com.
License
MIT — Strider Labs
Available Tools
4 toolsget_instant_offerA
Get an instant cash offer from CarMax for selling your car. Provide VIN or license plate + state. Returns estimated offer range and next steps.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | Vehicle Identification Number (17 characters) | |
| zip | No | ZIP code for the offer (affects offer amount) | |
| state | No | 2-letter US state code for the license plate (e.g., 'CA', 'TX') | |
| mileage | No | Current odometer reading in miles | |
| license_plate | No | License plate number (used if VIN not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the tool is a read-only operation ('Get'), returns an 'estimated offer range and next steps', and requires certain inputs. However, it does not explain potential side effects, whether actual offers are binding, or the role of zip/mileage. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, then input requirements, then output. Every sentence adds value, with no unnecessary words or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no annotations, and no output schema, the description could do more. It explains the VIN/license plate requirement but leaves ambiguity: the schema marks all params as optional, yet the description implies mandatory inputs. It also doesn't describe the role of zip/mileage, though these are in the schema. Overall, reasonably complete but with notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions, giving a baseline of 3. The description adds meaning by explaining the relationship between VIN and license plate ('VIN or license plate + state'), clarifying the alternative input methods beyond the schema. This adds value to parameter usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose with a specific verb and resource: 'Get an instant cash offer from CarMax for selling your car.' It also distinguishes itself from sibling tools like search_inventory and schedule_test_drive by focusing on the selling/offer scenario, not buying or scheduling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage guidance: 'Provide VIN or license plate + state' and states what the tool returns. While it doesn't explicitly compare to alternatives, the purpose is distinct, and the prerequisite information is useful. It does not mention when not to use or list alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehicle_detailsA
Get full details for a specific CarMax vehicle by stock number or URL slug, including specs, features, photos, Carfax history, and store location.
| Name | Required | Description | Default |
|---|---|---|---|
| stock_number | Yes | CarMax stock number (8-digit number, e.g., '25123456'). Obtain from search_inventory results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It accurately describes the response contents, making it clear this is a read-only retrieval operation. However, it does not comment on side effects, error behavior, or limitations, and the mention of 'URL slug' is misleading since the schema only accepts stock_number. This partially undermines transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the tool's purpose and highlights key data categories. It omits unnecessary filler. The only flaw is the inclusion of the inaccurate 'or URL slug', which could have been omitted for greater precision, but overall it is appropriately concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description adequately covers the main use case by specifying the identifier and the expected response contents. It lacks details on error handling or the fact that URL slug is not a supported parameter, but for a straightforward get-by-id tool it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a thorough description of the stock_number parameter (with example and source), giving a baseline of 3. However, the description introduces an unsupported alternative, 'URL slug', which is not present in the input schema. This creates confusion about accepted inputs and adds misleading semantics, warranting a penalty to 2.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get full details for a specific CarMax vehicle' with a specific identifier ('stock number or URL slug') and lists the types of data returned (specs, features, photos, Carfax history, store location). This distinguishes it from sibling tools like search_inventory (searching) and schedule_test_drive (booking).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this when you have a specific vehicle identifier and need detailed information. However, it does not explicitly state when to use this tool versus alternatives (e.g., 'use search_inventory to find the stock number'), nor does it mention any exclusions. The guidance is implied rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_test_driveA
Schedule a test drive appointment at CarMax for a specific vehicle. Returns confirmation details or next steps.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Customer email address | ||
| phone | Yes | Customer phone number (10 digits, e.g., '5551234567') | |
| last_name | Yes | Customer last name | |
| first_name | Yes | Customer first name | |
| stock_number | Yes | CarMax stock number for the vehicle to test drive | |
| preferred_date | No | Preferred date for test drive (e.g., 'tomorrow', 'Saturday', '2024-03-15') | |
| preferred_time | No | Preferred time (e.g., 'morning', 'afternoon', '2:00 PM') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose the outcome ('confirmation details or next steps') but doesn't mention permissions, confirmation behavior, what happens if the slot is unavailable, or whether this is a firm booking or request.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, directly states purpose and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no annotations, and no output schema, the description gives only a high-level outcome. It lacks detail on handling conflicts, appointment confirmation mechanics, or what 'next steps' means, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter semantics beyond 'specific vehicle', leaving the schema to fully document each field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'schedule' identifies the action, resource 'test drive appointment at CarMax' is clear, and 'for a specific vehicle' scopes it. This distinguishes it from siblings like search_inventory and get_vehicle_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when booking a test drive but provides no explicit guidance on when to use this vs. searching inventory or getting vehicle details first, nor any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_inventoryA
Search CarMax inventory for used vehicles. Filter by make, model, year range, price range, and location (ZIP code). Returns a list of matching vehicles with stock numbers, prices, mileage, and links.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ZIP code to search near (e.g., '90210') | |
| make | No | Vehicle make/brand (e.g., 'Toyota', 'Ford', 'Honda') | |
| limit | No | Number of results to return (default: 10, max: 25) | |
| model | No | Vehicle model (e.g., 'Camry', 'F-150', 'Civic') | |
| year_max | No | Maximum model year (e.g., 2023) | |
| year_min | No | Minimum model year (e.g., 2018) | |
| price_max | No | Maximum price in dollars | |
| price_min | No | Minimum price in dollars |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool does (search) and the return payload (list of matching vehicles with stock numbers, prices, mileage, links), which effectively communicates a read-only search operation with no side effects. It does not disclose pagination, rate limits, or prerequisites, but for a search tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the core purpose, then list filters and return content. No redundant words or repetition of schema details. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 8 optional parameters and no output schema, the description is reasonably complete. It explains the resource, the filters, and the return fields. It doesn't cover edge cases like default behavior or sort order, but it provides enough context for an agent to invoke the tool correctly and understand the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 8 parameters with descriptions, and the tool description echoes most of them ('make, model, year range, price range, location'). However, the description does not add extra meaning beyond the schema—for instance, it doesn't clarify format nuances or defaults. With 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search CarMax inventory for used vehicles' with a specific verb and resource, and lists the available filter dimensions. This distinguishes it from sibling tools like get_vehicle_details, which focuses on details for a specific vehicle, and schedule_test_drive/get_instant_offer, which are unrelated actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool—when searching for used vehicles that match certain criteria—and provides a clear context. It does not explicitly mention when not to use it or name alternatives, but the sibling tools are sufficiently different that an agent can infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.0.0- First observed
get_instant_offer - First observed
get_vehicle_details - First observed
schedule_test_drive - First observed
search_inventory
TDQS
Each tool has a clear, distinct purpose: search_inventory finds vehicles, get_vehicle_details provides specifics on a single vehicle, schedule_test_drive books an appointment, and get_instant_offer handles selling a car. There is no overlap or ambiguity between them.
All tool names follow a consistent verb_noun pattern in snake_case: search_inventory, schedule_test_drive, get_instant_offer, get_vehicle_details. The naming is uniform and predictable.
With four tools, the server is well-scoped for a car marketplace use case. Each tool covers a distinct step in the buyer or seller journey, and none feel redundant or unnecessary.
The tool set covers the core lifecycle: search inventory, view details, schedule test drive, and get an offer for selling. Missing features like financing or purchase tools are gaps, but they are outside the immediate scope and do not break common workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Mint — AI-powered QA that runs your app in a real browser on every PR.
MCP server for AI access to Swagger by SmartBear.
MCP server for building and testing AI agents with multi-model experimentation and insights.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceA MCP server that provides browser automation tools, allowing users to navigate websites, take screenshots, click elements, fill forms, and execute JavaScript through Playwright.82-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI-powered browser automation, web scraping, and testing using Playwright across Chromium, Firefox, and WebKit. It allows users to perform actions like navigation, clicking, typing, and taking screenshots through natural language interfaces.15MIT
- AlicenseAqualityDmaintenanceAn MCP server that integrates with the Carvana marketplace to enable vehicle searching, financing estimation, and trade-in value assessments. It allows AI assistants to retrieve detailed vehicle information, history reports, and market insights directly from Carvana's inventory.10191MIT
- AlicenseAqualityDmaintenanceAn MCP server for LinkedIn automation that enables users to search for jobs, retrieve profile details, manage connections, and read or send messages. It leverages Playwright and Browserbase to interact with LinkedIn through an existing authenticated browser session.6151MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/markswendsen-code/mcp-carmax'
If you have feedback or need assistance with the MCP directory API, please join our Discord server