Car Rental Brain
Server Details
Real cost of car hire at 120+ airports: second driver, cover, deposits, debit cards, desk hours.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- jimiwalters-cmyk/car-rental-brain-mcp
- GitHub Stars
- 0
- Server Listing
- Car Rental Brain
TDQS
Scored across 6 tools
Each tool maps to a distinct scope: single-airport detail (airport_costs), cross-airport ranking (compare_airports), per-supplier breakdown (supplier_terms), coverage listing (list_airports), booking link (build_search_link), and meta info (get_capabilities). The only mild overlap is between airport_costs and supplier_terms, which both report price/deposit/debit-card facts, but the airport-vs-supplier granularity plus descriptions keep them separable.
All names use consistent snake_case, and four of six follow the verb_noun pattern (build_search_link, compare_airports, get_capabilities, list_airports). Two are bare resource nouns (airport_costs, supplier_terms), a minor deviation that is still predictable and readable.
Six tools is well-scoped for a cost-research/decision-support server: listing, comparing, detailing, supplier lookup, booking handoff, and a capabilities check. Every tool earns its place with no obvious redundancy or padding.
The surface covers the full research lifecycle: discover coverage, find airports, inspect costs and suppliers, compare, then act via a live search link. Minor gaps exist (e.g., no date-specific on-site price query or vehicle-class breakdown), but these are reasonably worked around by the live booking link.
Available Tools
6 toolsairport_costsAirport costsARead-onlyIdempotentInspect
The true cost of hiring a car at one airport: per-day price for the car alone, with a second driver, with full cover, automatic, no-deposit (from + typical); by pick-up month; second-driver fees; deposits; debit-card acceptance; desk closing times and out-of-hours fees; policies. Use when someone asks what car hire really costs at one airport, or about deposits, fees or desk hours there.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Optional pick-up month YYYY-MM | |
| airport | Yes | Airport id, IATA code or name, e.g. 'faro', 'FAO', 'Faro Airport' | |
| trip_days | No | Optional trip length in days |
Output Schema
| Name | Required | Description |
|---|---|---|
| iata | No | |
| note | No | |
| basis | No | |
| error | No | |
| airport | No | |
| country | No | |
| deposit | No | |
| payment | No | |
| currency | No | |
| desk_hours | No | |
| provenance | No | |
| report_url | No | |
| search_link | No | |
| second_driver | No | |
| by_pickup_month | No | |
| price_per_day_7_day_hire | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful scope detail – that prices are reported as 'from' plus 'typical' and broken out by pick-up month and configuration – but says nothing about data freshness, currency, or what happens when an airport/month has no data. With annotations carrying the safety burden, this is a modest but real addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but appropriately sized: the cost facets are front-loaded before the colon list, and the usage sentence closes it. Every clause names a distinct returned datum (deposits, desk hours, debit-card acceptance), so little is filler. Slightly list-heavy but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description still conveys the shape of the answer (price tiers by configuration and month, plus fees and policies). Combined with complete schema coverage and read-only annotations, an agent has what it needs to call it correctly; only data currency and empty-result behavior are left open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (airport, month, trip_days) are already documented in the schema. The description reinforces that results are scoped to one airport and vary by pick-up month, but adds no format or interaction semantics beyond that. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('the true cost of hiring a car at one airport') and enumerates the concrete facets it returns: per-day price under several configurations, pick-up month, second-driver fees, deposits, debit-card acceptance, desk hours and policies. It is unambiguous what this tool produces. It does not name a sibling such as compare_airports, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence gives a clear trigger: 'Use when someone asks what car hire really costs at one airport, or about deposits, fees or desk hours there.' The word 'one' implicitly routes multi-airport comparison elsewhere, but no alternative tool is named and no exclusions are stated explicitly. Clear context without explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_search_linkBuild search linkARead-onlyIdempotentInspect
A link for the PERSON to open: live prices for their exact dates and needs, ranked by the total they will actually pay, where they can book. Use whenever the person has dates and wants to see or book cars.
| Name | Required | Description | Default |
|---|---|---|---|
| age | No | Main driver's age in years (default 35). Under 25 or over 70 often costs more. | |
| place | No | Any city/place if not a measured airport | |
| airport | No | Airport id, IATA code or name, e.g. 'faro', 'FAO', 'Faro Airport' | |
| car_type | No | Car size; omit for every size. | |
| currency | No | EUR, GBP, USD... | |
| automatic | No | True for automatic gearbox only. | |
| residence | No | Two-letter country of residence, e.g. GB | |
| debit_card | No | True if the driver has no credit card - only cars whose desk takes a debit card for the deposit. | |
| pickup_date | No | YYYY-MM-DD | |
| pickup_time | No | HH:MM | |
| dropoff_date | No | YYYY-MM-DD | |
| dropoff_time | No | HH:MM | |
| extra_driver | No | True if a second driver will drive - their fee is then in every total. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| note | No | |
| error | No | |
| disclosure | No | |
| attribution | No | |
| search_link | No | |
| about_the_link | No | |
| measured_as_of | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description's added value is the handoff semantics: this returns a link for a human to open, with live prices ranked by the total actually paid, rather than returning data itself. That is useful context an agent cannot infer from annotations, though it omits what happens when required dates are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first front-loads the output artifact and its ranking/booking properties, the second gives the trigger. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 fully documented optional parameters and an output schema, the description only needs to explain the link handoff and when to trigger it, which it does. Framing the result as a person-facing link is exactly the non-obvious piece the structured fields cannot convey.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter carries its own description, so the schema does the heavy lifting. The description only gestures at 'their exact dates and needs' and adds no meaning about pairing airport vs place, defaults, or currency behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description concretely states what the tool produces: a link the person can open to see live, total-price-ranked, bookable car results for their dates. That is a specific artifact and distinct from siblings like airport_costs or list_airports, though it never uses an explicit verb like 'builds' and relies on the title for that framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use whenever the person has dates and wants to see or book cars' gives a clear triggering condition and audience. It does not state when NOT to use it or name an alternative sibling for adjacent needs (e.g., comparing airports or checking costs without booking), so the routing picture is partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_airportsCompare airportsARead-onlyIdempotentInspect
Rank airports by real cost (car only / with driver / with cover), typical deposit, debit-card friendliness or late desk hours. Use for 'where in Spain is car hire cheapest in March?' or 'which airport is best for a debit card?'
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many airports to return (default 10). | |
| month | No | Optional pick-up month YYYY-MM (price sort uses that month) | |
| country | No | Optional country to compare within | |
| sort_by | No | What to rank by: price (car only), price_with_driver, price_with_cover, deposit (lowest first), debit (most debit-friendly), late_desk (open latest). Default price. | |
| airports | No | Optional list of airports |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| airports | No | |
| sorted_by | No | |
| provenance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without description support. The description adds only that price sorting is month-dependent, which is closer to parameter semantics than behavior; it says nothing about result size limits beyond what the schema states or how ties/absent data are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the ranking dimensions come first, the disambiguating example queries second. Every parenthetical carries information about what 'cost' actually means, and there is no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, rich annotations and full schema coverage, the description only needs to convey purpose and ranking semantics, which it does. The remaining gap is that it never positions the tool against airport_costs or list_airports, leaving the agent to infer which sibling to pick for a single-airport lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the sort_by enum is documented field-by-field, so the schema does the heavy lifting and a 3 is the baseline. The description's parenthetical glosses ('car only / with driver / with cover', 'late desk hours') mirror the enum rather than add new meaning, and it does not explain the interaction between month and non-price sort modes or how the optional airports list combines with country.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb (Rank) and resource (airports) and enumerates the exact metrics ranked — real cost tiers, deposit, debit friendliness, late desk hours — so the agent knows precisely what the output ordering means. It stops short of differentiating itself from the sibling airport_costs, which likely returns costs for a single airport, so sibling disambiguation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use for...' framing plus two concrete natural-language question examples ('where in Spain is car hire cheapest in March?', 'which airport is best for a debit card?') give a clear sense of when this tool is the right call. There are no explicit when-not conditions or named alternatives, so it sits just below the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesGet capabilitiesARead-onlyIdempotentInspect
What Car Rental Brain measures, how fresh it is, and which airports/countries are covered. Use first when unsure whether a place is covered.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| tools | No | |
| countries | No | |
| airports_measured | No | |
| latest_measurement | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is fully covered by structured fields. The description's contribution is the content emphasis on data freshness and coverage scope, which is modest value-add; it says nothing about size or shape of the response, though the output schema carries that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the first declares what is returned (metrics, freshness, coverage scope), the second front-loads the usage trigger. Nothing is padded or restated from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description only needed to say what the tool is for and when to reach for it, which it does. A brief note on whether coverage is static or refreshed (i.e., how to interpret the 'freshness' claim) would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline of 4 applies; there is nothing the description could usefully add about arguments. The description correctly implies the tool takes no scoping input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource — the measured metrics, data freshness, and airport/country coverage of "Car Rental Brain" — so the agent knows this is a metadata/coverage lookup rather than a data query. The distinction from list_airports (which presumably enumerates airports) is only implicit: 'which airports are covered' could be read as overlapping, and no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use first when unsure whether a place is covered' gives an explicit trigger and ordering (call before other tools). It lacks a when-not clause or a pointer to which sibling to use once coverage is confirmed, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_airportsList airportsARead-onlyIdempotentInspect
Airports we measure, with the typical rental price per day. Filter by country. Use to find an airport id or to list what is covered in a country.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Optional country, e.g. 'Portugal' |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| airports | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds useful data context (typical rental price per day, country filtering) but does not add behavioral details such as pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no wasted text, front-loading what the tool returns before the filter and usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with rich annotations, full schema coverage, and an output schema, the description is complete enough. It states the resource, included data, filter behavior, and primary use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single optional country parameter is already documented with an example. The description adds that country acts as a filter, but does not provide syntax or default-behavior detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (airports measured) and key returned attribute (typical rental price per day), with an optional country filter. It does not explicitly distinguish this listing tool from siblings like airport_costs or compare_airports, so it is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit use cases: finding an airport id or listing coverage in a country. It does not name alternatives or when-not-to-use conditions, but the context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
supplier_termsSupplier termsARead-onlyIdempotentInspect
Per supplier at an airport: typical price per day, second-driver fee, full-cover price, deposit held, whether the desk takes a debit card, and customers' desk review scores. Use when the person is choosing between suppliers at one airport or asks about a named supplier.
| Name | Required | Description | Default |
|---|---|---|---|
| airport | Yes | Airport id, IATA code or name, e.g. 'faro', 'FAO', 'Faro Airport' | |
| supplier | No | Optional supplier name |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| error | No | |
| airport | No | |
| suppliers | No | |
| provenance | No | |
| search_link | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds the useful fact that this is a descriptive lookup returning terms and review scores, but says nothing about data currency, coverage gaps, or whether missing suppliers are omitted versus nulled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing: the first defines the payload, the second defines the trigger, and the trigger is placed last so the reader knows what the tool is before when to use it. The field enumeration is long but each item is genuinely part of the return shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and the description therefore has spare capacity to focus on selection. With only two well-described parameters and full annotation coverage, an agent has nearly everything needed; the only real gap is not knowing how this differs from airport_costs and compare_airports.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in-schema with examples, so the baseline is 3. The phrase 'per supplier at an airport' and 'asks about a named supplier' hints that omitting the optional supplier parameter yields all suppliers at that airport, but the description never states that behavior explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what is returned per supplier at an airport (daily price, second-driver fee, full-cover price, deposit, debit-card acceptance, review scores), which is far more specific than the title alone. It scopes to 'at an airport' but never names the adjacent siblings (airport_costs, compare_airports) it is not, so differentiation is left partly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger: 'when the person is choosing between suppliers at one airport or asks about a named supplier.' That implicitly separates the single-airport comparison case from cross-airport ones, but no alternative tool is named and no exclusion is stated for when airport_costs or compare_airports would be the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
airport_costs1 field changed- added
Output schema / properties / provenanceAdded value: +{ + "type": "object" +}
- Changed
build_search_link4 fields changed- added
Output schema / properties / attributionAdded value: +{ + "type": "string" +} - added
Output schema / properties / disclosureAdded value: +{ + "type": "string" +} - added
Output schema / properties / measured_as_ofAdded value: +{ + "type": "string" +} - added
Output schema / properties / urlAdded value: +{ + "type": "string" +}
- Changed
compare_airports1 field changed- added
Output schema / properties / provenanceAdded value: +{ + "type": "object" +}
- Changed
supplier_terms1 field changed- added
Output schema / properties / provenanceAdded value: +{ + "type": "object" +}
2 tool updates
- Changed
build_search_link7 fields changed- added
Input schema / properties / age / descriptionAdded value: +"Main driver's age in years (default 35). Under 25 or over 70 often costs more." - added
Input schema / properties / age / maximumAdded value: +99 - added
Input schema / properties / age / minimumAdded value: +18 - added
Input schema / properties / automatic / descriptionAdded value: +"True for automatic gearbox only." - added
Input schema / properties / car_type / descriptionAdded value: +"Car size; omit for every size." - added
Input schema / properties / debit_card / descriptionAdded value: +"True if the driver has no credit card - only cars whose desk takes a debit card for the deposit." - added
Input schema / properties / extra_driver / descriptionAdded value: +"True if a second driver will drive - their fee is then in every total."
- Changed
compare_airports2 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"How many airports to return (default 10)." - added
Input schema / properties / sort_by / descriptionAdded value: +"What to rank by: price (car only), price_with_driver, price_with_cover, deposit (lowest first), debit (most debit-friendly), late_desk (open latest). Default price."
6 tool updates
- First observed
airport_costs - First observed
build_search_link - First observed
compare_airports - First observed
get_capabilities - First observed
list_airports - First observed
supplier_terms
Publisher details
- Operator
- Car Rental Brain · Publisher source
- Operator website
- https://carrentalbrain.com
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://carrentalbrain.com/ai/
- Trust center
- Not available
- Restrictions
- None. Free, no sign-up, no API key, no OAuth; read-only, open to anyone worldwide.
Related MCP Connectors
True cost of flight extras (bags, seats, fees) on 29 airlines in Europe and North America, sourced.
European airport car parks: services, distance, airport price ranges for 3, 7 and 14-day stays.
UK discount codes, product prices and price drops, phone deals, what's on and airport parking.
Free, no-login rental car search with real-time pricing.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to calculate the true cost of flights by adding airline baggage, seat, priority boarding, check-in, and payment fees to fares, using sourced and dated fee data across many airlines.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceFixed London chauffeur prices for AI agents: Heathrow/Gatwick/Stansted/Luton and cruise-port transfers, hourly and full-day hire, private day trips, Heathrow VIP meet & greet, plus pre-filled booking links. Public remote endpoint, no API key.MIT
- FlicenseNot gradedqualityFmaintenanceEnables finding the cheapest flight destinations from an airport as structured JSON, with bargain detection via typical price comparisons and booking links.-
- AlicenseAqualityBmaintenanceTravel award search: compare cash vs points on hotels, flights & cars, cents-per-point, and book319MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.