Koskamo

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.

Before the Lot MCP logo, by Volocent Labs LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Volocent Labs LLC
MCP endpoint (Streamable HTTP)
https://beforethelot.com/mcp
Vendor documentation

What 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

Vendor evidenceRegistry 1.0.0

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
Server-advertised capabilities
{
  "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.

Before the Lot is a free car-buying planner built on one method: see the dealer's four-square for what it is; lock three squares at home, in order, each backed by a document (trade-in offers in writing, a down payment, a loan pre-approval); leave the price open and talk only about the out-the-door total; set a budget ceiling, a fair price and a walk line before any dealer speaks; ask dealers for itemized quotes in writing and compare them line by line; and at the desk, take the trade-in last and treat the finance office's products as optional and separately priced. get_method returns the stages. The tools run the planner's own tested math and the sourced state rules (tax, doc-fee caps). They describe and compare numbers; they don't recommend a choice, and every result is an educational estimate, not financial, legal or tax advice. Most results include a planner link that opens with those numbers filled in. Send numbers and short labels only: names, phone numbers and email addresses are refused and nothing is stored.

Tools

16 advertised

what_can_i_afford — What can I afford
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

what_can_i_afford input schema
{
  "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"
    }
  }
}
what_can_i_afford annotations
{
  "title": "What can I afford",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
out_the_door — Out-the-door estimate
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

out_the_door input schema
{
  "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"
    }
  }
}
out_the_door annotations
{
  "title": "Out-the-door estimate",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_quote — Check a dealer's quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

check_quote input schema
{
  "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"
    }
  }
}
check_quote annotations
{
  "title": "Check a dealer's quote",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_quotes — Compare dealer quotes
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

compare_quotes input schema
{
  "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"
    }
  }
}
compare_quotes annotations
{
  "title": "Compare dealer quotes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
rebate_vs_apr — Cash rebate or special APR
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

rebate_vs_apr input schema
{
  "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"
    }
  }
}
rebate_vs_apr annotations
{
  "title": "Cash rebate or special APR",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
loan_payment — Loan payment
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

loan_payment input schema
{
  "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"
    }
  }
}
loan_payment annotations
{
  "title": "Loan payment",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
lease_check — Check a lease
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

lease_check input schema
{
  "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%)"
    }
  }
}
lease_check annotations
{
  "title": "Check a lease",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
refinance_check — Check a refinance
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

refinance_check input schema
{
  "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"
    }
  }
}
refinance_check annotations
{
  "title": "Check a refinance",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
trade_in_position — Trade-in position
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

trade_in_position input schema
{
  "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"
    }
  }
}
trade_in_position annotations
{
  "title": "Trade-in position",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
payoff_plan — Payoff plan
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

payoff_plan input schema
{
  "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"
    }
  }
}
payoff_plan annotations
{
  "title": "Payoff plan",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_method — Get the Before the Lot method
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_method input schema
{
  "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"
    }
  }
}
get_method annotations
{
  "title": "Get the Before the Lot method",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
state_rules — State rules for buying a car
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

state_rules input schema
{
  "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"
    }
  }
}
state_rules annotations
{
  "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
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

dealer_email input schema
{
  "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
    }
  }
}
dealer_email annotations
{
  "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
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

offers_page input schema
{
  "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"
    }
  }
}
offers_page annotations
{
  "title": "A maker's official offers page",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
desk_script — A line to say at the dealership
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

desk_script input schema
{
  "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\""
    }
  }
}
desk_script annotations
{
  "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
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

plan_link input schema
{
  "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
    }
  }
}
plan_link annotations
{
  "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

Advertised by the server during the last successful anonymous check.

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

Advertised by the server during the last successful anonymous check.

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

Advertised by the server during the last successful anonymous check.

Prepare for the desk: the lines for common moments and the walk line.

No arguments advertised.

after-buying — I just bought a car

Advertised by the server during the last successful anonymous check.

See what extra payments do to the loan after the purchase.

No arguments advertised.

Resources

24 advertised

method — The Before the Lot method

Advertised by the server during the last successful anonymous check.

The method overview and its stages.

method URI
btl://method

MIME type: text/markdown

method-four-square — How the four-square works against you

Advertised by the server during the last successful anonymous check.

The dealer's worksheet has four squares so the deal can move between them. Lock three before you go.

method-four-square URI
btl://method/four-square

MIME type: text/markdown

method-silent-devaluation — The walk-around appraisal

Advertised by the server during the last successful anonymous check.

The walk-around that finds every scuff is building a case for a low trade number.

method-silent-devaluation URI
btl://method/silent-devaluation

MIME type: text/markdown

method-three-offers — Get three written offers

Advertised by the server during the last successful anonymous check.

A real, written offer for your car beats any estimate. Get two or three before you talk to a dealer.

method-three-offers URI
btl://method/three-offers

MIME type: text/markdown

method-trade-last — Disclose the trade last

Advertised by the server during the last successful anonymous check.

Settle the price as if you have no trade. Bring it up after, so neither number can hide in the other.

method-trade-last URI
btl://method/trade-last

MIME type: text/markdown

method-numbers-meant-to-offend — The first pencil

Advertised by the server during the last successful anonymous check.

The first numbers on the sheet are often set high on purpose, so beating them down feels like a win.

method-numbers-meant-to-offend URI
btl://method/numbers-meant-to-offend

MIME type: text/markdown

method-out-the-door — Out-the-door is the only number

Advertised by the server during the last successful anonymous check.

Price, fees, add-ons, tax and title, all in. Dealer quotes only compare fairly as out-the-door totals.

method-out-the-door URI
btl://method/out-the-door

MIME type: text/markdown

method-walk-line — The walk line

Advertised by the server during the last successful anonymous check.

Decide at home the out-the-door number above which you leave, then let that number decide for you.

method-walk-line URI
btl://method/walk-line

MIME type: text/markdown

method-down-payment-first — Why they go to down payment first

Advertised by the server during the last successful anonymous check.

Asking about your down payment early finds the cash you have and steers the talk toward a monthly payment.

method-down-payment-first URI
btl://method/down-payment-first

MIME type: text/markdown

method-underwater — Loan-to-value and being underwater

Advertised by the server during the last successful anonymous check.

If you owe more than the car is worth, you're underwater. Your down payment and term decide for how long.

method-underwater URI
btl://method/underwater

MIME type: text/markdown

method-payment-output — Payment is an output

Advertised by the server during the last successful anonymous check.

Your monthly payment is math on price, APR and term. Settle those three and the payment follows.

method-payment-output URI
btl://method/payment-output

MIME type: text/markdown

method-fourteen-dollars — A few dollars a month adds up

Advertised by the server during the last successful anonymous check.

A few dollars a month sounds small. Over a long loan, it adds up to more than a thousand dollars.

method-fourteen-dollars URI
btl://method/fourteen-dollars

MIME type: text/markdown

method-own-financing — Bring your own financing

Advertised by the server during the last successful anonymous check.

A pre-approval from your bank or credit union sets the rate a dealer has to beat to earn your loan.

method-own-financing URI
btl://method/own-financing

MIME type: text/markdown

method-rebate-vs-apr — Rebate or low APR?

Advertised by the server during the last successful anonymous check.

Manufacturers often offer cash back or a low promotional rate, not both. Run the numbers before you choose.

method-rebate-vs-apr URI
btl://method/rebate-vs-apr

MIME type: text/markdown

method-initial-trick — Hold off on initialing the worksheet

Advertised by the server during the last successful anonymous check.

Being asked to initial the worksheet is a small yes that makes the bigger yes feel already decided.

method-initial-trick URI
btl://method/initial-trick

MIME type: text/markdown

method-fi-office — The F&I office

Advertised by the server during the last successful anonymous check.

After you agree on a price, a finance manager offers optional products. Some can make sense, at the right price.

method-fi-office URI
btl://method/fi-office

MIME type: text/markdown

method-paying-extra — Paying extra

Advertised by the server during the last successful anonymous check.

Extra payments go straight to the balance, so a little more each month can cut months and interest from a loan.

method-paying-extra URI
btl://method/paying-extra

MIME type: text/markdown

scripts — Lines to say at the desk

Advertised by the server during the last successful anonymous check.

The desk scripts and when each fits.

scripts URI
btl://scripts

MIME type: text/markdown

email-request-quote — Ask for an itemized out-the-door quote

Advertised by the server during the last successful anonymous check.

Email template: Ask for an itemized out-the-door quote

email-request-quote URI
btl://emails/request-quote

MIME type: text/markdown

email-competing-quote — Invite a dealer to beat a better quote

Advertised by the server during the last successful anonymous check.

Email template: Invite a dealer to beat a better quote

email-competing-quote URI
btl://emails/competing-quote

MIME type: text/markdown

email-make-offer — Make an out-the-door offer

Advertised by the server during the last successful anonymous check.

Email template: Make an out-the-door offer

email-make-offer URI
btl://emails/make-offer

MIME type: text/markdown

email-confirm-deal — Confirm the deal in writing before you go

Advertised by the server during the last successful anonymous check.

Email template: Confirm the deal in writing before you go

email-confirm-deal URI
btl://emails/confirm-deal

MIME type: text/markdown

email-lender-deal — Email your lender about the car and the numbers

Advertised by the server during the last successful anonymous check.

Email template: Email your lender about the car and the numbers

email-lender-deal URI
btl://emails/lender-deal

MIME type: text/markdown

email-decline — Politely say no thanks

Advertised by the server during the last successful anonymous check.

Email template: Politely say no thanks

email-decline URI
btl://emails/decline

MIME type: text/markdown

30-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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http before-the-lot-mcp https://beforethelot.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add before-the-lot-mcp --url https://beforethelot.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable before-the-lot-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "before-the-lot-mcp": {
      "url": "https://beforethelot.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "before-the-lot-mcp": {
      "type": "streamableHttp",
      "url": "https://beforethelot.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start before-the-lot-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "before-the-lot-mcp": {
      "type": "http",
      "url": "https://beforethelot.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http before-the-lot-mcp https://beforethelot.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "before-the-lot-mcp": {
      "url": "https://beforethelot.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.

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.

Claim this listing