Skip to main content
Glama
felipebasurto

viajante

Viajante

Flight and hotel search for the terminal, Python, and AI assistants.

PyPI Tests

Viajante searches Google Flights, Google Hotels, and Booking.com. Use it to compare flights, find cheaper travel dates, explore destinations, or look up places to stay. It runs on your computer and connects directly to the travel sites; no API keys are required.

You can run a search from the command line, call the Python library, or connect an AI assistant through the Model Context Protocol (MCP). Results include prices, itinerary details, source text, and links where available.

Usage guide · Contributing · Report an issue

Quick start

Requires Python 3.10 or later. Install from PyPI:

pip install viajante

Search for a one-way flight or a hotel stay:

viajante flights JFK-LHR:2026-11-15 --fetch sweep
viajante hotels London 2026-11-15 2026-11-20 --currency GBP --source google

Use future dates when trying the examples. JFK and LHR are airport codes; viajante airports london lists airports for a city so you can choose one.

These searches use HTTP and do not need a browser. Booking.com and the browser mode for Google Flights require the optional browser setup.

Related MCP server: SearchAPI MCP Server

Connect an AI assistant

Viajante provides a local MCP server over stdio. With uv installed, add this entry to your assistant's MCP configuration:

{
  "mcpServers": {
    "viajante": {
      "command": "uvx",
      "args": ["--from", "viajante[mcp]", "viajante-mcp"]
    }
  }
}

This configuration supports Google Flights and Google Hotels without Chromium. Your assistant must be able to find uvx on its PATH. If you use an existing Python environment instead, install pip install 'viajante[mcp]' and configure the client to run that environment's viajante-mcp executable.

Once connected, you can ask:

Find a seven-night round trip from BOS to LHR, departing between November 1 and November 30, 2026. Compare the departure dates.

Search for hotels in Tokyo from November 12 to November 16, 2026, for two adults. Use JPY and require free cancellation.

The server exposes seven tools:

Tool

Use it to

search_flights

Search one-way, round-trip, or multi-city flights.

search_dates

Compare the cheapest returned fare for each departure date in a window.

search_flex

Check dates around a target departure, then fetch flights for the cheapest day.

search_explore

Discover destinations from an origin airport and price a shortlist.

search_hotels

Find stays with total-stay prices and cancellation details where available.

search_trip

Search flights and hotels together and sum compatible results.

lookup_airports

Look up airport codes offline.

Use the command line

Each search command accepts --save FILE to write a JSON report. Run viajante <command> --help for its options.

Command

Purpose

viajante flights

Search specific routes and dates.

viajante dates

Compare departure dates across a window of up to 31 days.

viajante flex

Search a few days either side of a target date.

viajante explore

Find destinations from an origin airport.

viajante hotels

Search Google Hotels or Booking.com.

viajante trip

Search flights and a hotel stay in one request.

viajante airports

Find airport codes by city or code.

For example, compare dates for a seven-night round trip:

viajante dates BOS-LHR --from 2026-11-01 --to 2026-11-30 --nights 7

See the usage guide for round trips, flexible dates, filters, hotel searches, and saved reports.

Use Python

get_flights accepts the same route format as the CLI and returns a typed report:

from viajante import get_flights

report = get_flights("JFK-LHR:2026-11-15", fetch="sweep", top=5)

for result in report.queries:
    if result.status == "ok":
        for offer in result.offers:
            print(offer.price, report.currency, offer.airline, offer.duration)
    else:
        print(result.error)

The library also exports FlightQuery, HotelQuery, and the search_* functions. The Python examples show how to build queries directly.

Optional browser support

For Booking.com or Google Flights with --fetch detail, install Playwright and Chromium in the environment that runs Viajante:

pip install 'viajante[browser]'
playwright install chromium

For the uvx MCP configuration, change --from to viajante[mcp,browser] and install Chromium through that same environment:

uvx --from 'viajante[mcp,browser]' playwright install chromium

Flight searches default to --fetch auto: with Playwright installed, they use the browser for one or two queries and HTTP for larger batches. Without Playwright, they use HTTP. Hotel searches default to Booking.com in the CLI and Google Hotels in MCP; use --source google for CLI hotel searches without a browser.

Understanding the results

  • Currency: Flight searches use the origin airport's country to choose a currency when possible. You can set one explicitly with --currency. Standalone hotel searches require a currency. Viajante does not convert between currencies.

  • Baggage: Use --bags or --carry-on to request baggage pricing from Google Flights. An optional --baggage-buffer affects ranking; it is a user-supplied amount, not a quoted bag fee, and defaults to zero.

  • Hotels: Prices cover the requested stay. Free cancellation is required by default, but an applied search filter and a property's stated terms are recorded separately. Google ratings use a 0–5 scale; Booking.com uses 0–10.

  • Price comparisons: When present, typical is a median from the same route's date calendar. It is not a historical market average.

  • Trip totals: A combined total is shown only when both searches return usable prices, their dates overlap, and their currencies match. It adds the flight fare and hotel stay; it does not create a package booking.

  • Missing information: Fields that cannot be determined remain unknown or are omitted. Source text is retained with offers to help you inspect the result.

Travel sites can change their pages, block requests, or return incomplete results. Prices and availability can also change after a search. Check the final fare, baggage allowance, hotel total, and cancellation terms on the provider's site before booking.

Contributing

Bug reports, documentation improvements, and code contributions are welcome. The contributor guide covers local setup and the offline test suite. For a bug report, include your version, command, and error message, with personal information removed.

License

Viajante is available under the MIT License. It is an independent project and is not affiliated with Google, Booking.com, or any airline. Use of those services is subject to their respective terms: Google and Booking.com.

Available Tools

7 tools
lookup_airportsD
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

search_datesA

Cheapest-per-day calendar for a named route (up to 31 days).

Use this for the cheapest week. Use search_flex for ±N around one date. Currency is currency or inferred from a named origin's owned country. If unknown, ask. Viajante does not convert. The calling agent may convert for the user. Unnamed baggage_buffer is 0.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
viaNo
bagsNo
sortNo
tripNoone-way
cabinNoeconomy
proxyNo
routeYes
startYes
adultsNo
nearbyNo
nightsNo
countryNo
airlinesNo
allianceNo
carry_onNo
childrenNo
currencyNo
max_stopsNo
price_capNo
exclude_viaNo
max_layoverNo
min_layoverNo
depart_afterNo
max_durationNo
no_overnightNo
arrive_beforeNo
depart_windowNo
baggage_bufferNo
infants_on_lapNo
infants_in_seatNo
exclude_airlinesNo
exclude_airportsNo
exclude_allianceNo
include_airportsNo
require_overnightNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that currency is inferred from the origin's owned country if not provided, that Viajante does not do conversion, and that the default baggage_buffer is 0. These are non-obvious traits. It does not explicitly state that the operation is read-only, but that is typical for a search tool and not a critical gap.

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

Conciseness4/5

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

The description is concise and front-loaded with the primary purpose, followed by usage and behavioral caveats. It avoids repetition and each sentence adds distinct value. It is slightly long due to multiple points, but nothing is redundant.

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

Completeness2/5

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

Given the tool has 36 parameters, no output schema, and no annotations, the description is far from complete. It covers the purpose, one usage scenario, currency behavior, and one default, but leaves the vast majority of parameters unaddressed. An agent would likely struggle to know what optional filters exist and how to set them correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains a few parameters: the route (named), the date range (up to 31 days), and explicitly the baggage_buffer default. The other 30+ parameters (e.g., trip, cabin, max_stops, exclude_via, min_layover) are entirely unexplained, leaving the agent without guidance on their meaning or valid values.

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 clearly states it is a cheapest-per-day calendar for a named route, limited to 31 days, and explicitly differentiates from search_flex for ±N around a single date. This verb+resource+scope is specific and distinguishes it from siblings.

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?

It explicitly tells when to use this tool ('Use this for the cheapest week') and when to use an alternative ('Use search_flex for ±N around one date'). It also provides guidance on currency handling, including when to ask the user and that Viajante does not convert currencies. This is clear, actionable context.

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

search_exploreB

Destinations from one origin, then a priced shortlist.

Currency is currency or inferred from a named origin's owned country. If unknown, ask. Viajante does not convert. The calling agent may convert for the user. Unnamed baggage_buffer is 0.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
viaNo
bagsNo
daysNo
sortNoprice
cabinNoeconomy
monthNo
proxyNo
startNo
adultsNo
nearbyNo
originYes
countryNo
airlinesNo
allianceNo
carry_onNo
childrenNo
currencyNo
max_stopsNo
price_capNo
exclude_viaNo
max_layoverNo
min_layoverNo
depart_afterNo
max_durationNo
no_overnightNo
arrive_beforeNo
depart_windowNo
baggage_bufferNo
infants_on_lapNo
exclude_regionsNo
infants_in_seatNo
exclude_airlinesNo
exclude_airportsNo
exclude_allianceNo
include_airportsNo
require_overnightNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose some important behaviors: currency is inferred from the origin's country, Viajante does not convert currency, the calling agent may convert, and unnamed baggage_buffer defaults to 0. However, it does not disclose other behavioral traits such as whether the tool mutates anything (it appears read-only), rate limits, or what happens with invalid inputs. The description adds some value beyond the schema but leaves significant behavioral gaps.

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

Conciseness4/5

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

The description is very concise, with only a few sentences. It front-loads the core purpose ('Destinations from one origin, then a priced shortlist') and then provides key behavioral notes. Every sentence earns its place, though the structure could be improved by grouping related notes (e.g., currency handling) and perhaps adding a brief note about the output. It is appropriately sized for a tool with many parameters, but the brevity comes at the cost of parameter semantics.

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

Completeness2/5

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

Given the tool's complexity (37 parameters, no output schema, no annotations), the description is incomplete. It does not explain the return format, how the 'priced shortlist' is structured, or how the many filtering parameters interact. The description covers only a few behavioral notes (currency, baggage_buffer) and leaves the agent to guess about the rest. For a tool this complex, the description should provide more context about the output and key parameter behaviors.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the 37 parameters. It only mentions currency, origin, and baggage_buffer. The vast majority of parameters (top, via, bags, days, sort, cabin, month, proxy, start, adults, nearby, country, airlines, alliance, carry_on, children, max_stops, price_cap, exclude_via, max_layover, min_layover, depart_after, max_duration, no_overnight, arrive_before, depart_window, infants_on_lap, exclude_regions, infants_in_seat, exclude_airlines, exclude_airports, exclude_alliance, include_airports, require_overnight) are not explained in the description. The description adds minimal meaning beyond the schema, and with 0% coverage, this is a significant gap.

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

Purpose4/5

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

The description 'Destinations from one origin, then a priced shortlist' states a specific verb (search/explore) and resource (destinations from an origin), and the 'priced shortlist' hints at the output. It distinguishes itself from siblings like search_flights (which likely searches specific flights) and search_dates (which likely searches date options), though it doesn't explicitly name them. The phrase is concise and informative, but could be clearer about the exact scope (e.g., exploring destinations vs. specific itineraries).

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

Usage Guidelines3/5

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

The description implies usage: use this when you want to explore destinations from a given origin, as opposed to searching specific flights or dates. However, it does not explicitly state when to use this tool versus alternatives like search_trip, search_flex, or search_dates. The 'If unknown, ask' instruction for currency provides some guidance on prerequisites, but there is no explicit when/when-not or alternative routing. This is adequate but not explicit.

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

search_flexA

Flex window (±N), then one shopping search on the cheapest day.

Use search_dates for a cheapest-week calendar. Do not brute-force a date matrix. Currency is currency or inferred from a named origin's owned country. If unknown, ask. Viajante does not convert. The calling agent may convert for the user. Unnamed baggage_buffer is 0.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
viaNo
bagsNo
flexYes
sortNoranked
tripNoone-way
cabinNoeconomy
proxyNo
routeYes
adultsNo
aroundYes
nearbyNo
nightsNo
countryNo
airlinesNo
allianceNo
carry_onNo
childrenNo
currencyNo
max_stopsNo
price_capNo
exclude_viaNo
max_layoverNo
min_layoverNo
depart_afterNo
max_durationNo
no_overnightNo
arrive_beforeNo
depart_windowNo
baggage_bufferNo
infants_on_lapNo
infants_in_seatNo
exclude_airlinesNo
exclude_airportsNo
exclude_allianceNo
include_airportsNo
require_overnightNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It reveals key behaviors: currency can be inferred from origin, if unknown ask the user, the tool does not convert currency, and unnamed baggage_buffer defaults to 0. It does not disclose the output format or any side effects (though a search is likely read-only by nature). The provided details add value but are not comprehensive.

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

Conciseness4/5

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

The description is succinct and front-loaded with the central concept. It uses four short sections that each address a distinct point (flex window, sibling usage, currency, baggage default). No filler or redundancy. It is appropriately sized given the tool's complexity.

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

Completeness2/5

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

For a tool with 37 parameters, no available annotations, and no output schema, the description is incomplete. It does not describe the return format, pagination, or many parameter constraints. The agent is left without crucial context for correct invocation, especially regarding interplay of required parameters like route and around. The few hints provided are insufficient.

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

Parameters2/5

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

Schema coverage is 0%, and the description does not explain the vast majority of the 37 parameters. It mentions only a few: flex (via '±N'), currency (inference and no conversion), and baggage_buffer (default). The required parameters around and route are not explained. With such high parameter count and zero schema descriptions, the description fails to compensate adequately.

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 clearly states the tool's function: a shopping search with a flexible date window, picking the cheapest day. It distinguishes itself from sibling search_dates by explicitly naming it and contrasting with a calendar view. This is specific and unambiguous.

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

Usage Guidelines4/5

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

Provides explicit directive: 'Use search_dates for a cheapest-week calendar' and warns 'Do not brute-force a date matrix.' This tells the agent when NOT to use this tool and when to prefer a sibling. However, it doesn't cover all alternative scenarios or edge cases, but the guidance is clear and actionable.

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

search_flightsA

Search Google Flights for named routes and dates.

Use search_dates for the cheapest week and search_flex for ±N days. Currency is currency or inferred from a named origin's owned country. If unknown, ask. Viajante does not convert. The calling agent may convert for the user. Unproven country, dest, or currency (city with several airports, Europe, unnamed origin, two currencies) must not be guessed. Unnamed baggage_buffer is 0. Prefer bags / carry_on on the shopping request. Do not invent a bag fee.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
viaNo
bagsNo
sortNoranked
tripNoone-way
cabinNoeconomy
fetchNoauto
proxyNo
adultsNo
nearbyNo
routesYes
countryNo
airlinesNo
allianceNo
carry_onNo
childrenNo
currencyNo
max_stopsNo
price_capNo
exclude_viaNo
max_layoverNo
min_layoverNo
depart_afterNo
max_durationNo
no_overnightNo
arrive_beforeNo
depart_windowNo
baggage_bufferNo
infants_on_lapNo
infants_in_seatNo
exclude_airlinesNo
exclude_airportsNo
exclude_allianceNo
include_airportsNo
require_overnightNo

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses important behavioral constraints: Viajante does not convert currency, the agent may convert for the user, unproven country/dest/currency must not be guessed, unnamed baggage_buffer defaults to 0, and bag fees must not be invented. It does not describe return format or pagination, but for a search tool the key behavioral rules are well covered.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose, then moves to usage rules. Every sentence adds value, though the list of prohibitions is dense and could be slightly better organized. It is appropriately sized for a tool with 35 parameters.

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 (35 params, no output schema, no annotations), the description covers the most critical decision points: when to use alternatives, currency handling, guessing rules, and baggage defaults. It does not explain return values, but the absence of an output schema makes that a minor gap for a search tool whose results are likely self-explanatory.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains the meaning of baggage_buffer (unnamed defaults to 0), currency (inferred from origin's country), and the relationship between bags/carry_on and the shopping request. It does not explain all 35 parameters, but it covers the most ambiguous ones and gives a clear default rule for baggage_buffer.

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 specific verb and resource: 'Search Google Flights for named routes and dates.' It also names sibling tools (search_dates, search_flex) and distinguishes them by their purpose, so an agent can tell this tool apart from alternatives.

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 when to use search_dates and search_flex instead, and gives clear guidance on currency handling, asking when unknown, and not guessing unproven values. It also instructs to prefer bags/carry_on on the shopping request and not to invent bag fees, which is actionable usage guidance.

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

search_hotelsA

Hotel search. Currency is required (no origin airport).

Quotes are in the requested ISO 4217 currency as the provider returned them. Viajante does not convert. The calling agent may convert for the user. Do not invent ISO 4217 from vibe.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
roomsNo
adultsNo
sourceNogoogle
check_inYes
currencyNo
locationYes
check_outYes
min_ratingNo
entire_homeNo
free_cancellationNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full responsibility. It discloses that the tool does not perform currency conversion and only returns quotes as provided by the provider, which is valuable behavioral insight. It also warns against inventing currency codes, addressing a potential misuse. It does not mention response format or pagination, but the critical behavioral notes are present.

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 compact and front-loaded with the most critical information: 'Hotel search' first, then the currency requirement. Every sentence provides new information; there is no repetition or filler. It uses paragraphs effectively to separate key constraints from detailed behavior.

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 11 parameters, 3 required, 0% schema coverage, and no output schema, the description is quite complete for the core use case. It highlights the most critical constraint (currency) and warns against common errors. It does not explain each parameter or the return format, but the focus on the critical distinction from flight search is sufficient for an agent to call it correctly in most scenarios.

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

Parameters4/5

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

Schema coverage is 0%, so the description must clarify parameter meaning. The description emphasizes that 'currency' is required despite the schema listing it as optional (default null), which is a critical clarification. It also implicitly clarifies that 'location' is a hotel destination, not an airport. However, many parameters like 'top', 'rooms', 'adults' remain unexplained, but the essential parameter (currency) is well addressed.

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 begins with 'Hotel search', a specific verb-resource pair that clearly distinguishes it from sibling tools like search_flights or search_trip. It further defines the scope by specifying currency requirements and its distinction from flight-related searches, making it immediately recognizable.

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

Usage Guidelines4/5

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

The description explicitly states that currency is required and clarifies that no origin airport is involved, which helps distinguish from flight search tools. It does not explicitly name alternatives, but the key constraint (currency required, no origin) is clear enough to prevent misuse. There is no explicit 'when not to use' guidance, but the emphasis on currency and the absence of origin implies the tool is for hotel-only searches.

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

search_tripB

Flights then hotel. Currency follows the flight origin or an explicit code.

If unknown, ask. Viajante does not convert. The calling agent may convert for the user. Unnamed baggage_buffer is 0. Prefer bags / carry_on on the shopping request. The same currency is passed to hotels.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
viaNo
bagsNo
sortNoranked
tripNoone-way
cabinNoeconomy
fetchNoauto
roomsNo
adultsNo
nearbyNo
routesYes
sourceNogoogle
countryNo
airlinesNo
allianceNo
carry_onNo
check_inNo
childrenNo
currencyNo
locationYes
check_outNo
max_stopsNo
price_capNo
min_ratingNo
entire_homeNo
exclude_viaNo
depart_afterNo
no_overnightNo
arrive_beforeNo
baggage_bufferNo
infants_on_lapNo
infants_in_seatNo
exclude_airlinesNo
exclude_airportsNo
exclude_allianceNo
include_airportsNo
free_cancellationNo
require_overnightNo

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose meaningful behaviors: currency follows the flight origin or an explicit code, Viajante does not convert currency, the calling agent may convert, unnamed baggage_buffer defaults to 0, and the same currency is passed to hotels. It does not mention return format, but for a search tool these quirks are the most important behavioral details.

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

Conciseness4/5

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

The description is compact and front-loads the core purpose in the first sentence. Some sentences are terse and cryptic, like 'Unnamed baggage_buffer is 0', but there is no redundant filler and the essential behavioral notes are included.

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

Completeness2/5

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

For a tool with 38 parameters, no output schema, and no annotations, the description is not complete. It fails to explain what the response contains, how routes and location are interpreted, how the flight and hotel searches are combined, or what 'shopping request' refers to. The currency and baggage context helps, but significant gaps remain.

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

Parameters2/5

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

Schema description coverage is 0% across 38 parameters, so the description must compensate. It adds value for currency, baggage_buffer, bags, and carry_on, but it leaves the required parameters routes and location, plus most other parameters, completely unexplained. This is far from adequate for such a large schema.

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

Purpose4/5

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

The opening 'Flights then hotel' clearly communicates that this tool combines flight and hotel search, distinguishing it from the sibling tools search_flights and search_hotels. It lacks an explicit verb like 'search' but the tool name supplies that, and the scope is specific enough for an agent to understand what it does.

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

Usage Guidelines3/5

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

The description gives operational guidance such as 'If unknown, ask', 'Viajante does not convert', and 'Prefer bags / carry_on on the shopping request', but it never explicitly states when to choose search_trip over search_flights or search_hotels. The combined nature is implied rather than stated as a usage rule.

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.

  1. 7 tool updatesv1.0.0
    • First observedlookup_airports
    • First observedsearch_dates
    • First observedsearch_explore
    • First observedsearch_flex
    • First observedsearch_flights
    • First observedsearch_hotels
    • First observedsearch_trip

TDQS

B3.1/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clear, distinct job: trip search, flight search, date-based flight search, flexible-date flight search, exploratory destination search, hotel search, and airport lookup. The only apparent overlap is among the flight-search variants, but their descriptions explicitly distinguish when to use each.

Naming Consistency4/5

Six of seven tools follow a consistent search_* convention, and lookup_airports is the one clear deviation. The verbs are uniform and readable, so the inconsistency is minor.

Tool Count5/5

Seven tools is well-scoped for a travel search server. Each tool covers a distinct search mode without feeling padded or sparse.

Completeness5/5

The surface covers the core travel-search domain well: flights, hotels, combined trips, airport lookup, cheapest dates, flexible dates, and destination exploration. There are no obvious dead ends for a search-only toolset.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Coordinates flights, hotels, events, weather, currency, and traffic data through a single MCP server, enabling comprehensive trip planning via natural language prompts.
    MIT