Before the Lot MCP
An MCP server for Before the Lot, a free car-buying planner that helps users lock trade-in values, down payments, and financing terms to negotiate out-the-door prices with dealerships.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://beforethelot.com/mcpWhat you can do with it
- Calculate out-the-door car prices
- Generate email templates to request dealer quotes
- Create one-page deal sheets for dealership visits
- Compare trade-in offers and financing terms
Source and maintenance
Protocol and capabilities
- Server
- Before the Lot 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 16 advertised
- Resources
- 24 advertised
- Resource templates
- 0 advertised
- Prompts
- 4 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
16 advertised
what_can_i_afford — What can I afford
Works out the budget ceiling from a monthly payment: the most that can be financed, the highest out-the-door price after the trade-in tax credit, that ceiling as dealers quote it (before the trade-in credit), and the vehicle price it leaves after the state's tax and typical fees. With a fair price from research, it also gives an opening offer and a walk line. Numbers only; nothing is stored.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"max_payment",
"apr",
"term_months",
"state"
],
"properties": {
"apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "Loan APR in percent (6.49 means 6.49%); a pre-approval rate if they have one"
},
"city": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "City or county in the state's rate table (23 states; state_rules says which), like Pittsburgh or Allegheny County: sets the combined rate from the state's own rate file. Where a city is in several counties (Chicago, Milwaukee), give county too. A place name only, never an address or ZIP"
},
"down": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Cash down payment"
},
"state": {
"enum": [
"AK",
"AL",
"AR",
"AZ",
"CA",
"CO",
"CT",
"DC",
"DE",
"FL",
"GA",
"HI",
"IA",
"ID",
"IL",
"IN",
"KS",
"KY",
"LA",
"MA",
"MD",
"ME",
"MI",
"MN",
"MO",
"MS",
"MT",
"NC",
"ND",
"NE",
"NH",
"NJ",
"NM",
"NV",
"NY",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VA",
"VT",
"WA",
"WI",
"WV",
"WY"
],
"type": "string",
"description": "Two-letter state code (DC included), like PA"
},
"county": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "County from the state's list (Pennsylvania, Nevada, Wisconsin; state_rules lists them), like Allegheny County: sets the combined rate. A county name only, never an address or ZIP"
},
"doc_fee": {
"type": "number",
"maximum": 5000,
"minimum": 0,
"description": "Expected doc fee; leave out to assume the state's cap, or a typical $450 where there is none"
},
"invoice": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Dealer invoice, for a new car, if known"
},
"tax_rate": {
"type": "number",
"maximum": 0.25,
"minimum": 0,
"description": "Combined sales tax rate as a decimal (0.08 for 8%); leave out to use the state's rate"
},
"condition": {
"enum": [
"new",
"used"
],
"type": "string",
"default": "new"
},
"title_reg": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Expected title and registration"
},
"fair_price": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "A fair vehicle price from research, before tax and fees"
},
"max_payment": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "The highest monthly payment the person is comfortable with"
},
"term_months": {
"type": "integer",
"maximum": 120,
"minimum": 6,
"description": "Loan term in months"
},
"trade_offer": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Best written trade-in offer, if any"
},
"trade_payoff": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "What is still owed on the trade-in"
}
}
}{
"title": "What can I afford",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}out_the_door — Out-the-door estimate
Itemizes an out-the-door estimate for a vehicle price: rebates, doc fee, add-ons, the state's sales tax (with its rules on rebates and caps), title and registration. Optionally adds a trade-in (and the tax it saves where the state credits it), a down payment and a loan for the payment. Compares the doc fee with the state's cap and the total with a walk line.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"price",
"state"
],
"properties": {
"apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "Loan APR in percent, for the payment"
},
"city": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "City or county in the state's rate table (23 states; state_rules says which), like Pittsburgh or Allegheny County: sets the combined rate from the state's own rate file. Where a city is in several counties (Chicago, Milwaukee), give county too. A place name only, never an address or ZIP"
},
"down": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Cash down payment"
},
"price": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Vehicle selling price before rebates, fees and tax"
},
"state": {
"enum": [
"AK",
"AL",
"AR",
"AZ",
"CA",
"CO",
"CT",
"DC",
"DE",
"FL",
"GA",
"HI",
"IA",
"ID",
"IL",
"IN",
"KS",
"KY",
"LA",
"MA",
"MD",
"ME",
"MI",
"MN",
"MO",
"MS",
"MT",
"NC",
"ND",
"NE",
"NH",
"NJ",
"NM",
"NV",
"NY",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VA",
"VT",
"WA",
"WI",
"WV",
"WY"
],
"type": "string",
"description": "Two-letter state code (DC included), like PA"
},
"county": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "County from the state's list (Pennsylvania, Nevada, Wisconsin; state_rules lists them), like Allegheny County: sets the combined rate. A county name only, never an address or ZIP"
},
"add_ons": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "What the dealer calls the add-on"
},
"amount": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Its price"
}
}
},
"default": [],
"maxItems": 12
},
"doc_fee": {
"type": "number",
"maximum": 5000,
"minimum": 0,
"description": "Doc fee; leave out to assume the state's cap, or a typical $450 where there is none"
},
"rebates": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Maker rebates taken off at signing"
},
"city_mpg": {
"anyOf": [
{
"type": "number",
"maximum": 200,
"minimum": 1
},
{
"type": "string",
"pattern": "^\\d+(\\.\\d+)?$"
}
],
"description": "Washington DC only: the vehicle's EPA city MPG, with its weight"
},
"electric": {
"anyOf": [
{
"type": "boolean"
},
{
"enum": [
"true",
"false"
],
"type": "string"
}
],
"description": "Washington DC only: a battery-electric vehicle (its own, lower column)"
},
"tax_rate": {
"type": "number",
"maximum": 0.25,
"minimum": 0,
"description": "Combined sales tax rate as a decimal; leave out to use the state's rate"
},
"condition": {
"enum": [
"new",
"used"
],
"type": "string",
"default": "new",
"description": "New or used: a state's tax can apply to new cars only (Oregon)"
},
"title_reg": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Title and registration; leave out for a typical $250"
},
"walk_line": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The walk line, out the door"
},
"other_fees": {
"type": "number",
"default": 0,
"maximum": 50000,
"minimum": 0,
"description": "Any other fees"
},
"term_months": {
"type": "integer",
"maximum": 120,
"minimum": 6,
"description": "Loan term in months, for the payment"
},
"trade_offer": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Best written trade-in offer"
},
"trade_payoff": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "What is still owed on the trade-in"
},
"buyer_in_chicago": {
"anyOf": [
{
"type": "boolean"
},
{
"enum": [
"true",
"false"
],
"type": "string"
}
],
"description": "Illinois only: the buyer's address is in the City of Chicago (the city and county given are the dealer's)"
},
"vehicle_weight_lbs": {
"anyOf": [
{
"type": "integer",
"maximum": 20000,
"minimum": 500
},
{
"type": "string",
"pattern": "^\\d+(\\.\\d+)?$"
}
],
"description": "Washington DC only: the vehicle's unladen weight in pounds (DC's excise rate goes by weight and city MPG)"
},
"buyer_in_cook_county": {
"anyOf": [
{
"type": "boolean"
},
{
"enum": [
"true",
"false"
],
"type": "string"
}
],
"description": "Illinois only: the buyer's address is in Cook County"
}
}
}{
"title": "Out-the-door estimate",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_quote — Check a dealer's quote
Reads a dealer's out-the-door quote, pasted as text (up to 8 KB) or given as line items, and checks it line by line: the out-the-door total, the doc fee against the state's cap (and capped service fees such as Ohio's $50 convenience fee), the tax line against the state's rate, finance-office add-ons with typical prices, the trade allowance against written trade-in offers, the trade equity and amount financed, and the walk line. Lines with an email address or phone number are removed before reading and never returned. Nothing is stored.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"state"
],
"properties": {
"text": {
"type": "string",
"maxLength": 8192,
"description": "The quote as pasted (an email or a buyer's order). Leave out to send lines instead."
},
"lines": {
"type": "object",
"required": [
"vehicle_price"
],
"properties": {
"dealer": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "The dealership's name (a business, never a person)"
},
"add_ons": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "What the dealer calls the add-on"
},
"amount": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Its price"
}
}
},
"default": [],
"maxItems": 12
},
"doc_fee": {
"type": "number",
"default": 0,
"maximum": 5000,
"minimum": 0,
"description": "Doc fee"
},
"rebates": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Rebates or discounts shown below the price"
},
"sales_tax": {
"type": "number",
"default": 0,
"maximum": 200000,
"minimum": 0,
"description": "The quote's sales tax line"
},
"title_reg": {
"type": "number",
"default": 0,
"maximum": 10000,
"minimum": 0,
"description": "Title, registration and other government fees"
},
"other_fees": {
"type": "number",
"default": 0,
"maximum": 50000,
"minimum": 0,
"description": "Any other fee"
},
"vehicle_price": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Selling price before rebates, fees and tax"
}
},
"description": "The quote as line items, instead of text"
},
"state": {
"enum": [
"AK",
"AL",
"AR",
"AZ",
"CA",
"CO",
"CT",
"DC",
"DE",
"FL",
"GA",
"HI",
"IA",
"ID",
"IL",
"IN",
"KS",
"KY",
"LA",
"MA",
"MD",
"ME",
"MI",
"MN",
"MO",
"MS",
"MT",
"NC",
"ND",
"NE",
"NH",
"NJ",
"NM",
"NV",
"NY",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VA",
"VT",
"WA",
"WI",
"WV",
"WY"
],
"type": "string",
"description": "Two-letter state code (DC included), like PA"
},
"tax_rate": {
"type": "number",
"maximum": 0.25,
"minimum": 0,
"description": "Combined sales tax rate as a decimal; leave out to use the state's rate"
},
"walk_line": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The walk line, out the door"
},
"trade_offers": {
"type": "array",
"items": {
"type": "object",
"required": [
"source",
"amount"
],
"properties": {
"amount": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The offer"
},
"source": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "Who made the offer: CarMax, Carvana, a dealer. Never a person."
},
"expires": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Its last day, yyyy-mm-dd"
}
}
},
"maxItems": 6,
"minItems": 1,
"description": "Written trade-in offers, to compare the best open one with the allowance"
},
"trade_allowance": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The trade-in allowance on the quote, when sending lines (read from text otherwise)"
},
"best_trade_offer": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The best written trade-in offer still open (CarMax, Carvana...), to compare with the allowance"
}
}
}{
"title": "Check a dealer's quote",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_quotes — Compare dealer quotes
Ranks two to ten itemized dealer quotes by out-the-door price, with each one's gap to the lowest and to the walk line, and (with a state) each doc fee against the state's cap.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"quotes"
],
"properties": {
"state": {
"enum": [
"AK",
"AL",
"AR",
"AZ",
"CA",
"CO",
"CT",
"DC",
"DE",
"FL",
"GA",
"HI",
"IA",
"ID",
"IL",
"IN",
"KS",
"KY",
"LA",
"MA",
"MD",
"ME",
"MI",
"MN",
"MO",
"MS",
"MT",
"NC",
"ND",
"NE",
"NH",
"NJ",
"NM",
"NV",
"NY",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VA",
"VT",
"WA",
"WI",
"WV",
"WY"
],
"type": "string",
"description": "Two-letter state code (DC included), like PA"
},
"quotes": {
"type": "array",
"items": {
"type": "object",
"required": [
"vehicle_price"
],
"properties": {
"dealer": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "The dealership's name (a business, never a person)"
},
"add_ons": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"amount"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "What the dealer calls the add-on"
},
"amount": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Its price"
}
}
},
"default": [],
"maxItems": 12
},
"doc_fee": {
"type": "number",
"default": 0,
"maximum": 5000,
"minimum": 0,
"description": "Doc fee"
},
"rebates": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Rebates or discounts shown below the price"
},
"sales_tax": {
"type": "number",
"default": 0,
"maximum": 200000,
"minimum": 0,
"description": "The quote's sales tax line"
},
"title_reg": {
"type": "number",
"default": 0,
"maximum": 10000,
"minimum": 0,
"description": "Title, registration and other government fees"
},
"other_fees": {
"type": "number",
"default": 0,
"maximum": 50000,
"minimum": 0,
"description": "Any other fee"
},
"vehicle_price": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Selling price before rebates, fees and tax"
}
}
},
"maxItems": 10,
"minItems": 2
},
"walk_line": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The walk line, out the door"
}
}
}{
"title": "Compare dealer quotes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}rebate_vs_apr — Cash rebate or special APR
Compares a maker's cash rebate taken with the person's own loan against the maker's special APR (with any cash that combines with it): each side's payment, interest and total, the difference, the own-loan rate where the two cost the same, and the sales tax a rebate saves in states that tax the price after it. Give the amount financed before the rebate, or a vehicle price to work it out.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"rebate",
"own_apr",
"promo_apr",
"term_months",
"state"
],
"properties": {
"city": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "City or county in the state's rate table (23 states; state_rules says which), like Pittsburgh or Allegheny County: sets the combined rate from the state's own rate file. Where a city is in several counties (Chicago, Milwaukee), give county too. A place name only, never an address or ZIP"
},
"down": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Cash down payment"
},
"state": {
"enum": [
"AK",
"AL",
"AR",
"AZ",
"CA",
"CO",
"CT",
"DC",
"DE",
"FL",
"GA",
"HI",
"IA",
"ID",
"IL",
"IN",
"KS",
"KY",
"LA",
"MA",
"MD",
"ME",
"MI",
"MN",
"MO",
"MS",
"MT",
"NC",
"ND",
"NE",
"NH",
"NJ",
"NM",
"NV",
"NY",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VA",
"VT",
"WA",
"WI",
"WV",
"WY"
],
"type": "string",
"description": "Two-letter state code (DC included), like PA"
},
"county": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "County from the state's list (Pennsylvania, Nevada, Wisconsin; state_rules lists them), like Allegheny County: sets the combined rate. A county name only, never an address or ZIP"
},
"rebate": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Cash rebate available with your own loan or cash"
},
"doc_fee": {
"type": "number",
"maximum": 5000,
"minimum": 0,
"description": "Doc fee; leave out to assume the state's cap, or a typical $450 where there is none"
},
"own_apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "Your own loan APR in percent (a pre-approval)"
},
"tax_rate": {
"type": "number",
"maximum": 0.25,
"minimum": 0
},
"promo_apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "The maker's special APR in percent"
},
"title_reg": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Title and registration"
},
"promo_cash": {
"type": "number",
"default": 0,
"maximum": 100000,
"minimum": 0,
"description": "Cash that combines with the special APR"
},
"term_months": {
"type": "integer",
"maximum": 120,
"minimum": 6,
"description": "Loan term in months"
},
"trade_offer": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Trade-in offer"
},
"trade_payoff": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Owed on the trade-in"
},
"vehicle_price": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Vehicle price, to work out the amount financed instead"
},
"promo_term_months": {
"type": "integer",
"maximum": 120,
"minimum": 6,
"description": "The special APR's longest term, if shorter"
},
"amount_financed_before_rebate": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Out-the-door price before the rebate, less down payment and trade equity"
}
}
}{
"title": "Cash rebate or special APR",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}loan_payment — Loan payment
The monthly payment, total interest and total paid on a car loan, with what a term over 60 months adds in interest compared with 60.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount",
"apr",
"term_months"
],
"properties": {
"apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "APR in percent"
},
"amount": {
"type": "number",
"maximum": 2000000,
"minimum": 0,
"description": "Amount financed"
},
"term_months": {
"type": "integer",
"maximum": 120,
"minimum": 6,
"description": "Term in months"
}
}
}{
"title": "Loan payment",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}lease_check — Check a lease
Works a lease quote from MSRP, selling price, residual and money factor (or the lease's APR): the depreciation and rent charges, the payment with tax (and a state lease tax on top where there is one, such as Pennsylvania's 3%; Alabama's 1.5% and West Virginia's 5% lease-payment rates in place of their sales rates; in states that tax a lease once at the start, such as Texas and Ohio, the payment carries no tax and the result says so), the money factor as an APR, and the total cost. With a loan APR and term, it also compares leasing with buying the same car over the lease's months (on a labelled depreciation assumption).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"msrp",
"selling_price",
"residual_percent",
"term_months",
"state"
],
"properties": {
"city": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "City or county in the state's rate table (23 states; state_rules says which), like Pittsburgh or Allegheny County: sets the combined rate from the state's own rate file. Where a city is in several counties (Chicago, Milwaukee), give county too. A place name only, never an address or ZIP"
},
"fees": {
"type": "number",
"default": 0,
"maximum": 20000,
"minimum": 0,
"description": "Acquisition and other fees rolled into the lease"
},
"msrp": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "MSRP (sticker price)"
},
"state": {
"enum": [
"AK",
"AL",
"AR",
"AZ",
"CA",
"CO",
"CT",
"DC",
"DE",
"FL",
"GA",
"HI",
"IA",
"ID",
"IL",
"IN",
"KS",
"KY",
"LA",
"MA",
"MD",
"ME",
"MI",
"MN",
"MO",
"MS",
"MT",
"NC",
"ND",
"NE",
"NH",
"NJ",
"NM",
"NV",
"NY",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VA",
"VT",
"WA",
"WI",
"WV",
"WY"
],
"type": "string",
"description": "Two-letter state code (DC included), like PA"
},
"county": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "County from the state's list (Pennsylvania, Nevada, Wisconsin; state_rules lists them), like Allegheny County: sets the combined rate. A county name only, never an address or ZIP"
},
"buy_apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "A loan APR, to compare with buying"
},
"doc_fee": {
"type": "number",
"maximum": 5000,
"minimum": 0,
"description": "Doc fee when buying, for the estimated out-the-door; leave out to assume the state's cap, or a typical $450 where there is none"
},
"buy_down": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Down payment when buying"
},
"tax_rate": {
"type": "number",
"maximum": 0.25,
"minimum": 0,
"description": "Combined sales tax rate as a decimal (state and local); leave out to use the state's rate. A state lease tax (Pennsylvania's 3%) is added on top either way; Alabama's and West Virginia's own lease-payment rates replace their state sales rate; where the state taxes a lease once at the start (Texas, Ohio), this is that tax's rate and the payments carry none"
},
"lease_apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "The lease's rate as an APR, instead of the money factor"
},
"term_months": {
"type": "integer",
"maximum": 60,
"minimum": 6,
"description": "Lease term in months"
},
"money_factor": {
"type": "number",
"maximum": 0.01,
"minimum": 0,
"description": "Money factor, e.g. 0.0025"
},
"selling_price": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The negotiated price the lease is built on"
},
"due_at_signing": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "Cash down, lease rebates and trade equity that lower the price"
},
"buy_term_months": {
"type": "integer",
"maximum": 120,
"minimum": 6,
"description": "Loan term, to compare with buying"
},
"disposition_fee": {
"type": "number",
"default": 0,
"maximum": 5000,
"minimum": 0,
"description": "Turn-in fee at the end"
},
"buy_out_the_door": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Out-the-door price when buying; leave out to estimate it"
},
"residual_percent": {
"type": "number",
"maximum": 95,
"minimum": 5,
"description": "Residual as a percent of MSRP (58 for 58%)"
}
}
}{
"title": "Check a lease",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}refinance_check — Check a refinance
Compares a car loan as it stands with a new loan at a quoted rate, by default over the same months left so a lower payment cannot hide a longer loan, with any fees counted: the new payment, the monthly difference and the total interest saved or added.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"balance",
"current_apr",
"current_payment",
"new_apr"
],
"properties": {
"fees": {
"type": "number",
"default": 0,
"maximum": 10000,
"minimum": 0,
"description": "Fees for the new loan"
},
"balance": {
"type": "number",
"maximum": 2000000,
"minimum": 0,
"description": "What is owed today"
},
"new_apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "The APR a lender quoted for the new loan"
},
"current_apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "Current APR in percent"
},
"current_payment": {
"type": "number",
"maximum": 50000,
"minimum": 0,
"description": "Current monthly payment"
},
"new_term_months": {
"type": "integer",
"maximum": 120,
"minimum": 6,
"description": "New term; leave out to keep the months left"
}
}
}{
"title": "Check a refinance",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}trade_in_position — Trade-in position
From written trade-in offers and the payoff: the best offer still open (the floor a dealer's trade number is compared with), the equity or negative equity, and, with a state and vehicle price, the sales tax the trade saves where the state credits it.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"offers"
],
"properties": {
"city": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "City or county in the state's rate table (23 states; state_rules says which), like Pittsburgh or Allegheny County: sets the combined rate from the state's own rate file. Where a city is in several counties (Chicago, Milwaukee), give county too. A place name only, never an address or ZIP"
},
"state": {
"enum": [
"AK",
"AL",
"AR",
"AZ",
"CA",
"CO",
"CT",
"DC",
"DE",
"FL",
"GA",
"HI",
"IA",
"ID",
"IL",
"IN",
"KS",
"KY",
"LA",
"MA",
"MD",
"ME",
"MI",
"MN",
"MO",
"MS",
"MT",
"NC",
"ND",
"NE",
"NH",
"NJ",
"NM",
"NV",
"NY",
"OH",
"OK",
"OR",
"PA",
"RI",
"SC",
"SD",
"TN",
"TX",
"UT",
"VA",
"VT",
"WA",
"WI",
"WV",
"WY"
],
"type": "string",
"description": "Two-letter state code (DC included), like PA"
},
"county": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "County from the state's list (Pennsylvania, Nevada, Wisconsin; state_rules lists them), like Allegheny County: sets the combined rate. A county name only, never an address or ZIP"
},
"offers": {
"type": "array",
"items": {
"type": "object",
"required": [
"source",
"amount"
],
"properties": {
"amount": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The offer"
},
"source": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 60,
"minLength": 1,
"description": "Who made the offer: CarMax, Carvana, a dealer. Never a person."
},
"expires": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Its last day, yyyy-mm-dd"
}
}
},
"maxItems": 6,
"minItems": 1
},
"payoff": {
"type": "number",
"default": 0,
"maximum": 1000000,
"minimum": 0,
"description": "What is still owed on the car"
},
"doc_fee": {
"type": "number",
"maximum": 5000,
"minimum": 0,
"description": "Doc fee; leave out to assume the state's cap, or a typical $450 where there is none"
},
"tax_rate": {
"type": "number",
"maximum": 0.25,
"minimum": 0,
"description": "Combined sales tax rate as a decimal, local tax included (0.07 for 7%); leave out to use the state's rate"
},
"vehicle_price": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The new vehicle price, for the tax the trade saves"
}
}
}{
"title": "Trade-in position",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}payoff_plan — Payoff plan
A payoff plan for a car loan, for paying it off early with an extra payment each month: the months and total interest at the regular payment, and with an extra amount toward principal each month (optionally for only the first so many months, or skipping some), with the months and interest the extra saves and the payoff month each way. Give the balance, the APR, and the months left or the regular payment. Lenders differ in how they apply extra payments, and some charge a prepayment penalty.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"balance",
"apr",
"extra_monthly"
],
"properties": {
"apr": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "The loan APR in percent"
},
"balance": {
"type": "number",
"maximum": 2000000,
"minimum": 0,
"description": "What is owed today"
},
"payment": {
"type": "number",
"maximum": 50000,
"minimum": 0,
"description": "The regular monthly payment; or give months_left instead"
},
"months_left": {
"type": "integer",
"maximum": 120,
"minimum": 1,
"description": "Payments left at the regular payment; or give payment instead"
},
"skip_months": {
"type": "array",
"items": {
"type": "integer",
"maximum": 1200,
"minimum": 1
},
"default": [],
"maxItems": 120,
"description": "Months (1 is the next payment) with nothing extra paid"
},
"extra_monthly": {
"type": "number",
"maximum": 50000,
"minimum": 0,
"description": "Extra paid toward principal each month"
},
"extra_for_months": {
"type": "integer",
"maximum": 1200,
"minimum": 0,
"description": "Pay the extra for only the first this-many months; leave out for every month"
}
}
}{
"title": "Payoff plan",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_method — Get the Before the Lot method
The Before the Lot method: an overview and its seven stages (what to collect, what each produces, which guides, tools and email templates apply, and when the stage is done). Pass a stage id for one stage.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"stage": {
"enum": [
"see-the-four-square",
"lock-three-squares",
"price-as-out-the-door",
"set-your-numbers",
"dealers-compete",
"at-the-desk",
"after-the-lot"
],
"type": "string",
"description": "One stage id; leave out for the whole method"
}
}
}{
"title": "Get the Before the Lot method",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}state_rules — State rules for buying a car
A state's rules on dealer doc fees, sales tax (state rate, local add-on range, cap), trade-in tax credit, how a maker's rebate is taxed, and cancellation rights where on file, each with its source, as-of date and confidence, plus the link to the state's page.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"state"
],
"properties": {
"state": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter state code, like PA"
}
}
}{
"title": "State rules for buying a car",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}dealer_email — Draft an email to a dealer or lender
Fills one of the six Before the Lot email templates (request a quote, make an offer, a competing quote, confirm the deal, decline, tell a lender) with the details given and returns the subject and body. Details are numbers and short labels; contact details are refused.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"request-quote",
"make-offer",
"competing-quote",
"confirm-deal",
"decline",
"lender-deal"
],
"type": "string",
"description": "Which email"
},
"details": {
"type": "object",
"default": {},
"properties": {
"car": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The car, like \"2024 Honda CR-V EX\""
},
"offer": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"dealer": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Dealer name"
},
"lender": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Lender name"
},
"used_car": {
"type": "boolean"
},
"decide_by": {
"type": "string",
"maxLength": 40,
"description": "A date or \"Friday\""
},
"walk_line": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The walk line, out the door. The templates never state it; an offer above it is not drafted"
},
"apr_percent": {
"type": "number",
"maximum": 40,
"minimum": 0
},
"term_months": {
"type": "integer",
"maximum": 120,
"minimum": 1
},
"down_payment": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"pre_approved": {
"type": "boolean"
},
"stock_or_vin": {
"type": "string",
"maxLength": 40
},
"trade_equity": {
"type": "number",
"maximum": 1000000,
"minimum": -1000000
},
"amount_to_finance": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"out_the_door_price": {
"type": "number",
"maximum": 1000000,
"minimum": 0
}
},
"additionalProperties": false
}
}
}{
"title": "Draft an email to a dealer or lender",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}offers_page — A maker's official offers page
Where a maker lists its own current offers (and a model's own page where one can be built), with whether the maker lists national offers at all.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"make"
],
"properties": {
"make": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Make, like Toyota"
},
"model": {
"type": "string",
"maxLength": 40,
"description": "Model, like Corolla Cross"
}
}
}{
"title": "A maker's official offers page",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}desk_script — A line to say at the dealership
The Before the Lot line for a moment at the desk. Pass a script id (monthly-payment, trade-first, down-payment, credit-check, numbers-changed, preinstalled-add-ons, initial-worksheet, decide-today, beat-my-rate, fi-product, only-a-month, paint-or-markup, below-invoice, trade-below-offer, leaving) or a short description of the situation.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"situation"
],
"properties": {
"situation": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "A script id or a short description, like \"they keep asking my monthly payment\""
}
}
}{
"title": "A line to say at the dealership",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}plan_link — A link to continue in the planner
Builds a Before the Lot planner link that opens with the numbers given already filled in. The plan travels in the link itself, so nothing is stored. Numbers and short labels only; names, phone numbers and emails are refused.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"plan"
],
"properties": {
"plan": {
"type": "object",
"properties": {
"car": {
"type": "object",
"properties": {
"make": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Make"
},
"trim": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Trim"
},
"year": {
"type": "integer",
"maximum": 2100,
"minimum": 1980
},
"model": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Model"
},
"condition": {
"enum": [
"new",
"used"
],
"type": "string"
},
"targetPrice": {
"anyOf": [
{
"type": "number",
"maximum": 10000000,
"minimum": 0
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"down": {
"type": "object",
"properties": {
"amount": {
"anyOf": [
{
"type": "number",
"maximum": 10000000,
"minimum": 0
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"price": {
"type": "object",
"properties": {
"state": {
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"quotes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"addOns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Add-on"
},
"amount": {
"type": "number",
"maximum": 10000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 20
},
"dealer": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Dealer"
},
"docFee": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"rebates": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"salesTax": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"titleReg": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"otherFees": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"receivedOn": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"vehiclePrice": {
"type": "number",
"maximum": 10000000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 10
},
"taxRate": {
"type": "number",
"maximum": 0.2,
"minimum": 0
},
"walkLine": {
"anyOf": [
{
"type": "number",
"maximum": 10000000,
"minimum": 0
},
{
"type": "null"
}
]
},
"fairPrice": {
"anyOf": [
{
"type": "number",
"maximum": 10000000,
"minimum": 0
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"trade": {
"type": "object",
"properties": {
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"source": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Where the offer came from"
},
"expires": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"maxItems": 10
},
"payoff": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"estimate": {
"anyOf": [
{
"type": "number",
"maximum": 10000000,
"minimum": 0
},
{
"type": "null"
}
]
},
"hasTrade": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": false
},
"budget": {
"type": "object",
"properties": {
"maxPayment": {
"type": "number",
"maximum": 10000000,
"minimum": 0
},
"termMonths": {
"type": "integer",
"maximum": 120,
"minimum": 1
}
},
"additionalProperties": false
},
"financing": {
"type": "object",
"properties": {
"lender": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Lender"
},
"maxAmount": {
"anyOf": [
{
"type": "number",
"maximum": 10000000,
"minimum": 0
},
{
"type": "null"
}
]
},
"aprPercent": {
"anyOf": [
{
"type": "number",
"maximum": 40,
"minimum": 0
},
{
"type": "null"
}
]
},
"termMonths": {
"anyOf": [
{
"type": "integer",
"maximum": 120,
"minimum": 1
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}
},
"description": "The parts of the plan to fill in",
"additionalProperties": false
}
}
}{
"title": "A link to continue in the planner",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
4 advertised
plan-car-purchase — Plan my car purchase
Plan a car purchase stage by stage with the Before the Lot method.
- state
- Two-letter state code (required)
- new_or_used
- No description (required)
- budget
- No description
review-dealer-quote — Review my dealer's quote
Read a dealer's quote line by line and compare it with the walk line.
- state
- Two-letter state code (required)
prepare-for-the-desk — Get ready for the dealership
Prepare for the desk: the lines for common moments and the walk line.
after-buying — I just bought a car
See what extra payments do to the loan after the purchase.
Resources
24 advertised
method — The Before the Lot method
The method overview and its stages.
btl://methodmethod-four-square — How the four-square works against you
The dealer's worksheet has four squares so the deal can move between them. Lock three before you go.
btl://method/four-squaremethod-silent-devaluation — The walk-around appraisal
The walk-around that finds every scuff is building a case for a low trade number.
btl://method/silent-devaluationmethod-three-offers — Get three written offers
A real, written offer for your car beats any estimate. Get two or three before you talk to a dealer.
btl://method/three-offersmethod-trade-last — Disclose the trade last
Settle the price as if you have no trade. Bring it up after, so neither number can hide in the other.
btl://method/trade-lastmethod-numbers-meant-to-offend — The first pencil
The first numbers on the sheet are often set high on purpose, so beating them down feels like a win.
btl://method/numbers-meant-to-offendmethod-out-the-door — Out-the-door is the only number
Price, fees, add-ons, tax and title, all in. Dealer quotes only compare fairly as out-the-door totals.
btl://method/out-the-doormethod-walk-line — The walk line
Decide at home the out-the-door number above which you leave, then let that number decide for you.
btl://method/walk-linemethod-down-payment-first — Why they go to down payment first
Asking about your down payment early finds the cash you have and steers the talk toward a monthly payment.
btl://method/down-payment-firstmethod-underwater — Loan-to-value and being underwater
If you owe more than the car is worth, you're underwater. Your down payment and term decide for how long.
btl://method/underwatermethod-payment-output — Payment is an output
Your monthly payment is math on price, APR and term. Settle those three and the payment follows.
btl://method/payment-outputmethod-fourteen-dollars — A few dollars a month adds up
A few dollars a month sounds small. Over a long loan, it adds up to more than a thousand dollars.
btl://method/fourteen-dollarsmethod-own-financing — Bring your own financing
A pre-approval from your bank or credit union sets the rate a dealer has to beat to earn your loan.
btl://method/own-financingmethod-rebate-vs-apr — Rebate or low APR?
Manufacturers often offer cash back or a low promotional rate, not both. Run the numbers before you choose.
btl://method/rebate-vs-aprmethod-initial-trick — Hold off on initialing the worksheet
Being asked to initial the worksheet is a small yes that makes the bigger yes feel already decided.
btl://method/initial-trickmethod-fi-office — The F&I office
After you agree on a price, a finance manager offers optional products. Some can make sense, at the right price.
btl://method/fi-officemethod-paying-extra — Paying extra
Extra payments go straight to the balance, so a little more each month can cut months and interest from a loan.
btl://method/paying-extrascripts — Lines to say at the desk
The desk scripts and when each fits.
btl://scriptsemail-request-quote — Ask for an itemized out-the-door quote
Email template: Ask for an itemized out-the-door quote
btl://emails/request-quoteemail-competing-quote — Invite a dealer to beat a better quote
Email template: Invite a dealer to beat a better quote
btl://emails/competing-quoteemail-make-offer — Make an out-the-door offer
Email template: Make an out-the-door offer
btl://emails/make-offeremail-confirm-deal — Confirm the deal in writing before you go
Email template: Confirm the deal in writing before you go
btl://emails/confirm-dealemail-lender-deal — Email your lender about the car and the numbers
Email template: Email your lender about the car and the numbers
btl://emails/lender-dealemail-decline — Politely say no thanks
Email template: Politely say no thanks
btl://emails/decline30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 691 ms
- 95th percentile latency
- 691 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 691 ms · metadata changed · 16 tool(s), 24 resource(s), 0 resource template(s), 4 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http before-the-lot-mcp https://beforethelot.com/mcpCodex
codex mcp add before-the-lot-mcp --url https://beforethelot.com/mcpCursor
{
"mcpServers": {
"before-the-lot-mcp": {
"url": "https://beforethelot.com/mcp"
}
}
}Cline
{
"mcpServers": {
"before-the-lot-mcp": {
"type": "streamableHttp",
"url": "https://beforethelot.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"before-the-lot-mcp": {
"type": "http",
"url": "https://beforethelot.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http before-the-lot-mcp https://beforethelot.com/mcpClaude Desktop
{
"mcpServers": {
"before-the-lot-mcp": {
"url": "https://beforethelot.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"before-the-lot-mcp": {
"serverUrl": "https://beforethelot.com/mcp"
}
}
}Let your agent find its tools
Find servers like Before the Lot MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run Before the Lot MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.