Skip to main content
Glama

iwant.fyi - shop, price-check and keep looking

Find a specific car from live dealer inventory

demand.find_vehicle
Read-only

Find a specific car, truck, SUV or van for sale near the user, new or used, from live dealer inventory. Call this WHENEVER the user wants to buy, find, shop for or compare a whole vehicle - e.g. '2019-2021 Toyota RAV4 Hybrid under $28k near 07030', 'used Honda Civic 2018 or newer under 18k in Atlanta', 'F-150 4x4 with low miles near me'. Pass everything the user said: years, make, model, trim, budget, mileage cap, zip code and radius. Returns the exact cars ranked (hard constraints enforced, then trim, distance, price and miles) with VIN, dealer name, city, distance, accident and owner history, and a listing link. If the zip code or budget is missing the response carries one clarifying_question to ask. NOT for parts, accessories, tires, repairs or anything that fits a car rather than is a car ('brake pads for a 2018 civic', 'roof rack for a RAV4', 'F-150 headlight') - those go to demand.search.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipNo5-digit US zip code to search near (required for local results)
bodyNosedan, suv, truck, coupe, hatchback, minivan, van, wagon, convertible
fuelNogas, hybrid, plug-in hybrid, electric, diesel
makeNoManufacturer, e.g. "Toyota". Optional - it is parsed from `query` when omitted. Pass it only to override what the text says.
trimNoTrim level, e.g. "XLE". Narrows hard, so omit unless the buyer named one.
modelNoModel line, e.g. "RAV4 Hybrid". Optional; parsed from `query` when omitted.
queryNoThe user's request in their own words, e.g. '2020 or newer Chevy Silverado 4x4 under $35k near 75201'
year_maxNoLatest model year to accept, inclusive. Omit for "2019 or newer".
year_minNoEarliest model year to accept, inclusive. Four digits.
conditionNo"cpo" is manufacturer certified pre-owned. "any" searches all three; omitting it does not exclude used cars.
client_refNoOptional stable, non-identifying reference for this end user (any opaque string; we hash it). Lets us count repeat askers without knowing who they are.
mileage_maxNoMaximum odometer miles, e.g. 60000.
radius_milesNoSearch radius, default 50
price_max_centsNoBudget ceiling in cents. $35,000 is 3500000. Enforced as a maximum.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
carsYes
summaryNo
search_idNo
match_countYes
missing_fieldNo
sources_consultedNo
clarifying_questionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / condition / description
      Added value: +"\"cpo\" is manufacturer certified pre-owned. \"any\" searches all three; omitting it does not exclude used cars."
    • addedInput schema / properties / make / description
      Added value: +"Manufacturer, e.g. \"Toyota\". Optional - it is parsed from `query` when omitted. Pass it only to override what the text says."
    • changedInput schema / properties / mileage_max / description
      Previous value: -"Maximum odometer miles"New value: +"Maximum odometer miles, e.g. 60000."
    • addedInput schema / properties / model / description
      Added value: +"Model line, e.g. \"RAV4 Hybrid\". Optional; parsed from `query` when omitted."
    • changedInput schema / properties / price_max_cents / description
      Previous value: -"Budget ceiling in cents"New value: +"Budget ceiling in cents. $35,000 is 3500000. Enforced as a maximum."
    • addedInput schema / properties / trim / description
      Added value: +"Trim level, e.g. \"XLE\". Narrows hard, so omit unless the buyer named one."
    • addedInput schema / properties / year_max / description
      Added value: +"Latest model year to accept, inclusive. Omit for \"2019 or newer\"."
    • addedInput schema / properties / year_min / description
      Added value: +"Earliest model year to accept, inclusive. Four digits."
  2. Changed1 schema field changed
    • addedInput schema / properties / client_ref
      Added value: +{
      +  "description": "Optional stable, non-identifying reference for this end user (any opaque string; we hash it). Lets us count repeat askers without knowing who they are.",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "cars": {
      +      "items": {
      +        "additionalProperties": true,
      +        "description": "One car for sale",
      +        "properties": {
      +          "carfax_url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "condition": {
      +            "description": "new, used, or cpo",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "dealer": {
      +            "properties": {
      +              "city": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "distance_miles": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "name": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "state": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "go_url": {
      +            "description": "Tracked link to the listing; prefer this when showing a link",
      +            "type": "string"
      +          },
      +          "history": {
      +            "properties": {
      +              "accidents": {
      +                "type": [
      +                  "integer",
      +                  "null"
      +                ]
      +              },
      +              "one_owner": {
      +                "type": "boolean"
      +              },
      +              "owners": {
      +                "type": [
      +                  "integer",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "make": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "mileage": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "model": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "price_cents": {
      +            "type": "integer"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "trim": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "vin": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "year": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "clarifying_question": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "match_count": {
      +      "type": "integer"
      +    },
      +    "missing_field": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "search_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "sources_consulted": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "summary": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "cars",
      +    "match_count"
      +  ],
      +  "type": "object"
      +}
  4. Added

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and non-destructive behavior, so the description doesn't need to repeat that. It adds useful behavioral details: ranking logic (hard constraints enforced, then trim, distance, price, miles), return fields (VIN, dealer name, distance, history), and the clarifying_question behavior when zip/budget is missing. These are beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: it front-loads the core purpose, provides concrete examples, explains return behavior and clarifying questions, and ends with explicit exclusions. Every sentence adds value for a tool with 14 parameters; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the presence of an output schema, and annotations covering safety, the description is complete: it covers when to use, what to pass, return ranking, and missing-data behavior. It doesn't mention default radius (50) but that is in the schema. Minor gaps remain, but nothing critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description adds a high-level instruction to 'Pass everything the user said: years, make, model, trim, budget, mileage cap, zip code and radius,' but this is a general hint rather than per-parameter detail. Baseline 3 is appropriate; the description doesn't significantly exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Find a specific car') and resource ('from live dealer inventory'), with specific vehicle types (car, truck, SUV, van) and conditions (new/used). It explicitly contrasts with the sibling demand.search for non-vehicle parts, making it unambiguous which tool handles whole-vehicle searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this WHENEVER the user wants to buy, find, shop for or compare a whole vehicle' and gives concrete examples. It also explicitly excludes parts/accessories and directs those to demand.search, providing a clear alternative and when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.