Skip to main content
Glama

Server Details

Live flight, hotel and seat prices, cheapest-day calendars, and price-drop alerts.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 35 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, with descriptions that explicitly differentiate tools that might otherwise be confused (e.g., track_flight vs add_flight_bucket_list, search_flights vs price_calendar, booking_options vs hotel_booking_options). The set provides strong guidance on when to use each tool and when not to.

Naming Consistency3/5

Names are all snake_case, but they mix verb+noun patterns (e.g., search_flights, update_flight_tracking) with bare noun phrases (e.g., booking_options, flight_lookup, price_calendar, hotel_details). This inconsistency is readable but not fully predictable.

Tool Count2/5

With 35 tools, the set is too large for the apparent scope, exceeding the 25+ threshold that indicates an overabundance. While each tool serves a purpose, the sheer number increases cognitive load and selection complexity.

Completeness5/5

The tool surface comprehensively covers the travel domain: searching flights (one-way, round-trip, multi-city), hotels, seat availability, price calendars, booking options, tracking (flights, hotels, seats, bucket lists), sharing, account management, and place lookup. CRUD and lifecycle operations are well represented for each entity.

Available Tools

35 tools
add_flight_bucket_listAdd a flight bucket listA
Idempotent
Inspect

Use for flexible-date watches ('tell me when New York to Tokyo drops under $700 this winter'): SlickTrip keeps searching the chosen months or date window and alerts when a fare clears the price bar. Returns a bucket_id. Confirm first. Not for fixed dates (search_flights, then track_flight).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoA short name for the list in the traveler's words; give one. It is how the list is called in every alert and on the site.
cabinNoCabin class.economy
monthsNoMonths to watch, as names or YYYY-MM. Give this OR start_date + end_date.
originYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
airlinesNoOnly these marketing carriers, as IATA codes or names.
end_dateNoLast travel date, YYYY-MM-DD.
max_stopsNoMost stops allowed: 0 nonstop, 1, or 2.
travelersNoTravelers. Fares are quoted for all of them together; one booking holds up to 9 (a larger group gets a suggested split).
trip_typeNoRound trip or one way.roundtrip
max_nightsNoLongest trip, nights (round trips).
min_nightsNoShortest trip, nights (round trips).
start_dateNoFirst travel date, YYYY-MM-DD. Give with end_date instead of months.
depart_daysNoOnly depart on these weekdays.
destinationYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
return_daysNoOnly return on these weekdays.
user_requestNoOptional. The traveler's current travel request, briefly, in their own words. Used to interpret this search, suggest a corrected search if it fails, and improve SlickTrip's search. Include only this request; not earlier conversation, names, contact details, or payment or ID information.
max_price_usdNoThe price bar, USD per traveler (or the trip total when price_is_total).
price_is_totalNomax_price_usd is the total for all travelers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
kindNoAlways "flight"
nameNoCustom name if given
noteNoFirst results timing
fieldNoOn unknown_place: which argument (origin, destination, ...)
routeNoorigin, destination, names, destination_image, trip_type, cabin, travelers
alertsNoPlain-words description of alerts
monthsNoMonth names watched
nightsNo[min_nights, max_nights] for round trips
statusNowatching | error | sign_in_required
windowNo{start, end} date window
messageNoError or sign-in message from the server wrapper
airlinesNoIATA carrier codes
channelsNoAlert channels on the record: email, text (booleans)
bucket_idNoThe new bucket list record id
max_stopsNoStop limit 0-2
saved_urlNoslicktrip.com saved-buckets page link
handoff_urlNoBucket-list autosave link on slicktrip.com
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
display_nameNoName as the card shows it
max_price_usdNoPrice bar
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is largely covered. The description adds real behavioral context beyond that: the watch keeps searching and alerts when the fare clears the bar, a bucket_id is returned, and confirmation is required before creating. It doesn't cover how alerts are delivered or any limits on concurrent watches.

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?

Three tight sentences, front-loaded with the exact use case and example, followed by the return value, the confirmation requirement, and the exclusion. No filler; every clause carries routing or behavioral information.

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?

For an 18-parameter creation tool with a full-coverage schema and an output schema (so return values need not be explained), the description covers the core intent, the alternative path for fixed dates, and the confirmation step. It is a little thin on what happens after creation (alert cadence, output schema fields like bucket_id aside), but nothing essential to calling it correctly is missing.

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 all 18 parameters are already documented in the schema, including months vs start_date/end_date and the price bar. The description only gestures at the flexible-date window and price bar, adding no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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 gives a concrete verb+resource ('flexible-date watches' / bucket list) and grounds it with a realistic example ('tell me when New York to Tokyo drops under $700 this winter'). It explicitly names the siblings it is not for (search_flights, track_flight with fixed dates), so an agent can distinguish it without opening any schema.

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?

States when to use it (flexible dates, price-bar alerts over months or a date window), when not to (fixed dates go to search_flights then track_flight), and adds an operational prerequisite ('Confirm first'). Both routing conditions and the alternative path are explicit.

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

add_hotel_bucket_listAdd a hotel bucket listA
Idempotent
Inspect

Use for flexible-date hotel watches on a place or one named hotel: SlickTrip keeps searching stays of the given length across the chosen months or date window and alerts when a stay clears the per-night bar. Returns a bucket_id. Confirm first. Not for fixed dates (search_hotels, then track_hotel).

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNoAdults. A hotel room prices up to 6 guests in all; vacation rentals up to 16.
monthsNoMonths to watch, as names or YYYY-MM. Give this OR start_date + end_date.
nightsYesNights, 1-30.
end_dateNoLatest check-in, YYYY-MM-DD.
locationYesA city, area or landmark.
min_starsNoLowest star class to show, 1-5.
hotel_nameNoPin one exact hotel instead of the whole area.
start_dateNoEarliest check-in, YYYY-MM-DD. Give with end_date instead of months.
user_requestNoOptional. The traveler's current travel request, briefly, in their own words. Used to interpret this search, suggest a corrected search if it fails, and improve SlickTrip's search. Include only this request; not earlier conversation, names, contact details, or payment or ID information.
check_in_daysNoOnly check in on these weekdays.
max_price_per_nightNoThe price bar, USD per night.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
kindNoAlways "hotel"
noteNoFirst results timing
stayNolocation, hotel_name, nights, adults
fieldNoOn unknown_place: which argument (origin, destination, ...)
alertsNoPlain-words description of alerts
monthsNoMonth names watched
statusNowatching | error | sign_in_required
windowNo{start, end} date window
messageNoError or sign-in message from the server wrapper
channelsNoAlert channels on the record: email, text (booleans)
bucket_idNoThe new bucket list record id
min_starsNoMinimum star rating
saved_urlNoslicktrip.com saved hotel-buckets link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
max_price_per_night_usdNoNightly price bar

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=true), so the description is free to add the operational behavior: an ongoing search across months/date window that alerts when a stay clears the per-night bar, plus the returned bucket_id and the confirm-first requirement. It stops short of stating alert frequency, duration of the watch, or auth/quota constraints.

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?

Two dense sentences plus a short directive, front-loaded with the use case before the exclusion. Efficient, though the parenthetical sibling pointer and 'Confirm first' fragment make it slightly cluttered.

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?

An output schema exists, so return values need not be explained, yet the description usefully notes it returns a bucket_id. Given annotations plus a fully documented 11-param schema, the definition is essentially complete for correct invocation; only alert cadence and lifetime of the watch are unstated.

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 coverage is 100% with 11 well-documented parameters, so the schema carries the burden and a 3 is the baseline. The description adds only light semantics — 'stays of the given length' (nights) and 'the per-night bar' (max_price_per_night) — without clarifying the months-vs-date-window exclusivity that the schema already documents.

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?

States a specific verb and resource — creating a flexible-date hotel watch — and immediately scopes it to 'a place or one named hotel'. It distinguishes itself from fixed-date alternatives by naming search_hotels and track_hotel, so an agent can route correctly without opening any schema.

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?

Explicitly says when to use it (flexible dates, watch a place or one hotel) and when not to ('Not for fixed dates (search_hotels, then track_hotel)'), naming the exact alternative tools and the sequence. The 'Confirm first' instruction adds a procedural prerequisite.

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

booking_optionsSellers for an itineraryA
Read-onlyIdempotent
Inspect

Use when the traveler wants to book flights they have chosen: the sellers offering that exact itinerary (airline direct and agencies), each with its price and a link that opens its checkout on the seller's site. Takes a complete itinerary_id: one-way from search_flights, round trip from search_return_flights. Not for an outbound alone (choose a return first) and not a price watch (track_flight).

ParametersJSON Schema
NameRequiredDescriptionDefault
itinerary_idYesA complete itinerary_id from search_flights (one way) or search_return_flights (round trip).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoLinks open seller checkout; last a day
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNook | book_on_site | needs_return | unavailable | error | sign_in_required
messageNoExplanation for non-ok statuses or wrapper errors
sellersNoItems: seller, price_usd, airline_direct, separate_tickets, book_url
outboundNoOn needs_return: the outbound leg (airlines, segments, layovers) the answer is about
search_keyNoThe search key of the itinerary
search_urlNoslicktrip.com search page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
itinerary_idNoThe itinerary the sellers are for
flight_numbersNoStrings: flight numbers of every segment
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
trip_total_usdNoThe itinerary's searched total price

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful non-annotation context: the result is a set of sellers (airline direct and agencies) each with price and an external checkout link, which sets expectations for an open-world read. It does not add auth, rate-limit, or freshness/caching details, so it falls short of a 5.

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?

Three tight sentences: purpose first, then the prerequisite constraint, then the exclusions. Every clause carries routing or prerequisite information, and nothing is repeated from the schema beyond necessary framing.

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

Completeness5/5

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

Annotations cover the safety profile, the output schema covers return values, and the single parameter is fully documented in the schema. Combined with the description's explicit prerequisites and alternatives, an agent has everything needed to invoke this correctly.

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?

With 1 parameter at 100% schema description coverage, the schema already documents itinerary_id, and the description largely restates it (one-way from search_flights, round trip from search_return_flights). The only added nuance is the word 'complete', which is already implied by the schema wording, so the baseline 3 applies.

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?

States a specific verb+resource: retrieving the sellers offering a chosen itinerary, with each seller's price and checkout link. It explicitly names the sibling tools it derives from (search_flights, search_return_flights) and the one it is not (track_flight), so an agent can distinguish it without opening any schema.

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?

Gives an explicit trigger ('when the traveler wants to book flights they have chosen'), an explicit exclusion ('not for an outbound alone – choose a return first'), and an alternative for a different intent ('not a price watch (track_flight)'). The when/when-not/alternative triad is fully covered.

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

find_placesFind airport and city codesA
Read-onlyIdempotent
Inspect

Use when unsure of an airport or city code before searching. Matches a place name or code and returns the code to pass as origin or destination, whether it is one airport or all airports in a city, and the airports a city code covers. Not needed for well-known codes like JFK or LHR.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMost matches to return.
queryYesA city or airport name, or a code to check.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoHow to use the code, or no-match hint
fieldNoOn unknown_place: which argument (origin, destination, ...)
placesNoItems: code, name, kind, country, plus airports[] (city) or city (airport)
statusNoerror | sign_in_required (absent on success)
messageNoError or sign-in message from the server wrapper
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-open-world, so the safety profile is covered. The description adds real behavioral context beyond that: it explains the resolution granularity (one airport vs. all airports in a city) and that the returned code is meant to be fed into origin/destination fields. It stops short of describing result size or fallback behavior on no match.

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?

Three compact sentences, front-loaded with the usage trigger, then the behavior, then the exclusion. No filler and nothing redundant with structured fields.

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

Completeness5/5

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

Although an output schema exists (so return shape needn't be documented), the description still conveys the practical payload semantics an agent needs: the code to use, and the airport set a city code covers. With fully documented params and annotations, nothing essential is missing.

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 100% so the baseline is 3, and the description goes beyond it by clarifying that 'query' accepts a place name or a code and by describing how the query is interpreted (single airport, whole city, or code-to-coverage). It adds meaning not present in the schema's field titles.

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?

States a specific verb and resource ('matches a place name or code') and the concrete output ('returns the code to pass as origin or destination'), which cleanly separates it from siblings like flight_lookup and search_flights. An agent can identify its role without opening the schema.

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?

Explicitly says when to use it ('before searching' when unsure of a code) and when not to ('Not needed for well-known codes like JFK or LHR'), with a concrete example. This is close to ideal routing guidance for a lookup/resolution tool.

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

flight_lookupFlights on a route that dayA
Read-onlyIdempotent
Inspect

Use when the traveler wants to know which flights operate a route on a date, or needs a flight number for seat_availability or track_seats: departure and arrival times, carrier, aircraft, stops. No fares. Not for prices (search_flights) and not for a whole month (price_calendar).

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
depart_dateYesYYYY-MM-DD.
destinationYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
user_requestNoOptional. The traveler's current travel request, briefly, in their own words. Used to interpret this search, suggest a corrected search if it fails, and improve SlickTrip's search. Include only this request; not earlier conversation, names, contact details, or payment or ID information.
flight_numberNoOnly this flight, like AA100.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoGuidance for the assistant
fieldNoOn unknown_place: which argument (origin, destination, ...)
searchNoorigin, destination, depart_date with names
statusNook | no_data | error | sign_in_required
flightsNoScheduled flights: flight_numbers, aircraft, airlines, stops, duration_minutes, segments
messageNoError or sign-in text
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
seat_tracker_urlNoThe seat tracker on slicktrip.com

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety and idempotency are covered. The description adds 'No fares' and lists returned fields, but does not describe auth needs, rate limits, or other behavioral traits beyond annotations; the added context is minimal and partly redundant with the output schema.

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?

Two sentences, front-loaded with the primary use case and immediately followed by output content, exclusions, and alternatives. Every clause earns its place with no filler.

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

Completeness5/5

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

Given output schema exists and annotations cover the safety profile, the description provides purpose, usage, alternatives, and limitations ('No fares'). An agent has everything needed to call it correctly and distinguish it from siblings.

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 the baseline is 3. The description notes that the flight_number parameter (or a route search result) is needed for seat_availability or track_seats, which is usage context, but it adds no syntax or format meaning beyond what the schema already provides.

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?

States a specific verb and resource: which flights operate a route on a date, and lists the returned attributes (departure/arrival times, carrier, aircraft, stops). Explicitly distinguishes from search_flights (prices) and price_calendar (whole month), so an agent can select it without opening sibling schemas.

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?

Gives explicit when-to-use conditions (traveler wants flights on a route/date, or needs a flight number for seat_availability or track_seats) and when-not-to-use conditions (not for prices, not for a whole month) with named alternatives. No guidance is left to inference.

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

get_accountThe SlickTrip accountA
Read-onlyIdempotent
Inspect

Use before offering text alerts, or when the traveler asks about their account: name, member since, which alert channels work (text needs a phone verified on the site), the plan and its free limit, and how many fares, stays, seats and bucket lists are watched.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
nameNoDisplay name on the account
noteNoText alerts need verified phone, when unverified
planNo"premium" or "free"
emailNoSigned-in email
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNook | error | sign_in_required
messageNoError or sign-in message from the server wrapper
channelsNoemail, text, text_available booleans
watchingNoCounts: flights, hotels, seats, bucket_lists
manage_urlNoslicktrip.com profile page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
member_sinceNoAccount creation date YYYY-MM-DD
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
free_limit_per_typeNoFree-tier tracking cap; null on premium

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral context the annotations do not: text alerts only work if a phone is verified on the site. It does not mention caching or refresh behavior, but that is minor given the annotations and output schema.

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?

A single sentence, front-loaded with the usage trigger before the field enumeration, with no filler. The trailing colon-list is long but every item maps to real returned data, so it earns its place.

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

Completeness5/5

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

With an output schema present, the description need not document return values, and it instead spends its words on the trigger, the contents, and the phone-verification prerequisite for text alerts. Nothing an agent needs to call this correctly is missing.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. Nothing in the description misleads about inputs, and the field list it does give describes the response rather than arguments.

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 enumerates exactly what the tool returns — name, member since, working alert channels, plan and its free limit, and watched-item counts — which lets an agent distinguish it from update_account and the list_tracked_* siblings. The verb is only implicit (carried by the name 'get'), so it falls just short of a full verb+resource statement.

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?

It gives two concrete triggers: 'before offering text alerts' and 'when the traveler asks about their account'. That is clear usage context, but no when-not guidance or explicit routing to update_account as the alternative is provided.

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

hotel_booking_optionsSellers for a hotelA
Read-onlyIdempotent
Inspect

Use when the traveler wants to book a hotel from search_hotels: every seller quoting it for those dates (the hotel itself and booking sites), each with the stay total and a link that opens its checkout on the seller's site. Takes the search_key and hotel_id from search_hotels. Not a price watch (track_hotel).

ParametersJSON Schema
NameRequiredDescriptionDefault
hotel_idYesThe hotel_id from search_hotels.
search_keyYesThe search_key from search_hotels.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
nameNoHotel name
noteNoLinks open seller checkout; last a day
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNook | unavailable | error | sign_in_required
messageNoExplanation for unavailable or wrapper errors
sellersNoItems: seller, total_usd, per_night_usd, hotel_direct, free_cancellation, book_url
hotel_idNoThe hotel's property token
hotel_urlNoslicktrip.com hotel page link
search_keyNoThe hotel search key
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful context on top: the result is a multi-seller list including the hotel's own site, each entry carries a stay total and a link that leaves the app to open the seller's checkout — which is exactly the openWorld behavior an agent should anticipate. It does not mention auth requirements or result limits, so it stops short of a 5.

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?

Three sentences, each load-bearing: trigger, payload description, input provenance, then the sibling exclusion. The purpose and the 'when' are front-loaded before any detail.

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

Completeness5/5

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

With an output schema present the description need not explain return fields, yet it still characterizes the result well enough to set expectations. Trigger, inputs, provenance, and sibling differentiation are all present for a simple two-parameter read tool.

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 coverage is 100% and both properties are already documented as coming from search_hotels, so the description's 'Takes the search_key and hotel_id from search_hotels' largely repeats the schema. Baseline 3 is appropriate when the schema carries the parameter burden.

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 names a specific action (retrieve every seller quoting a given hotel for the searched dates), the resource (hotel booking sellers), and the payload shape (stay total plus a checkout link per seller). It also distinguishes itself from the near-named sibling booking_options and from track_hotel by explicitly disclaiming price watching.

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 opens with an explicit trigger ('Use when the traveler wants to book a hotel from search_hotels'), states the prerequisite source for both inputs, and names an exclusion ('Not a price watch (track_hotel)'). An agent knows both when to call it and when not to.

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

hotel_detailsHotel detailsA
Read-onlyIdempotent
Inspect

Use when the traveler asks for the details, more information, photos, rooms or description of one hotel from search_hotels: description, photos, guest rating, amenities, the sellers' stay totals, the rooms, check-in and check-out times. Takes the search_key and hotel_id from search_hotels. Not for prices across dates (hotel_price_calendar). Booking links are hotel_booking_options; call that only when they say book.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotel_idYesThe hotel_id from search_hotels.
search_keyYesThe search_key from search_hotels.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
nameNoHotel name
noteNoGuidance for the assistant
stayNolocation, check_in, check_out, adults, children
fieldNoOn unknown_place: which argument (origin, destination, ...)
roomsNoRooms: name, seller, total_usd, free_cancellation
starsNoStar class
imagesNoPhoto URLs
nightsNoNights in the stay
statusNook | no_data | error | sign_in_required
addressNoStreet address
messageNoError or sign-in text
reviewsNoReview count
sellersNoStay total by seller, cheapest first: seller, total_usd, per_night_usd, hotel_direct, free_cancellation
hotel_idNoHotel id
amenitiesNoAmenity names
hotel_urlNoThe hotel on slicktrip.com
total_usdNoCheapest room stay total
search_keyNoThe hotel search key
descriptionNoHotel description
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
guest_ratingNoGuest rating out of 5
check_in_timeNoCheck-in time
per_night_usdNoCheapest room per night
check_out_timeNoCheck-out time
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint false, so the safety profile is covered. The description adds the data-provenance dependency (both arguments must come from a prior search_hotels call) and the routing constraint on booking links, but no rate limits, caching, or failure modes. Since an output schema exists and annotations handle safety, this is a genuine but modest addition.

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?

Three tight sentences, front-loaded with the trigger condition before the alternatives and prerequisites. The mid-sentence enumeration of returned fields is slightly list-heavy but every item is differentiating information, not filler.

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

Completeness5/5

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 no prose, annotations cover the safety profile, and the description covers trigger, prerequisites, and the two adjacent siblings. Nothing an agent needs to call this correctly is missing.

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% and both param descriptions already say 'from search_hotels', so the description's 'Takes the search_key and hotel_id from search_hotels' largely repeats the schema. It adds the useful implicit constraint that these are search-scoped, not global IDs, but no format or validity details. Baseline 3 applies.

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?

Names a specific verb+resource (fetch details/photos/rooms/rating for ONE hotel) and enumerates the payload returned, so the agent knows exactly what it gets. It explicitly distinguishes itself from hotel_price_calendar (prices across dates) and hotel_booking_options (links).

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?

States the trigger condition ('traveler asks for details, more information, photos, rooms or description of one hotel'), the alternative to use for dates/prices, and the sibling for booking links with a gating condition ('call that only when they say book'). Prerequisites for both params are given.

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

hotel_price_calendarHotel price calendarA
Read-onlyIdempotent
Inspect

Use for 'when is this hotel cheapest' (signed-in account): one hotel's nightly price by check-in date across a span of months. Needs a hotel_id from search_hotels. Then search_hotels with the chosen dates to track it.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotel_idYesA hotel_id from search_hotels.
end_monthNoLast month, as a name or YYYY-MM. Empty means next month.
hotel_nameNoThe hotel's name from search_hotels, for the card's title.
start_monthNoFirst month, as a name or YYYY-MM. Empty means this month.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
daysNoItems: check_in, per_night_usd, day_of_week
noteNoPer-night semantics and next step
fieldNoOn unknown_place: which argument (origin, destination, ...)
monthsNo[start_month_name, end_month_name]
statusNook | no_data | error | sign_in_required
messageNoNo-data explanation or wrapper error
summaryNopriced_days, cheapest_per_night_usd, cheapest_check_in, median_per_night_usd, first_date, last_date
hotel_idNoThe hotel property token
hotel_nameNoThe hotel name as given by the caller
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds real context beyond them: the call requires a signed-in account and spans months of results, which is not derivable from 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?

Three short sentences with no filler; the user-intent trigger is front-loaded, then the prerequisite, then the next step. Every clause earns its place.

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?

Covers the intent, prerequisite chain and follow-up action, and an output schema exists so return values need not be explained. Only minor gap is the lack of explicit differentiation from the sibling price_calendar tool.

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 the schema already documents hotel_id, start_month and end_month (including defaults and formats). The description only restates the hotel_id source, adding no new syntax or semantics. Baseline 3 applies.

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?

States a specific verb+resource+scope: 'one hotel's nightly price by check-in date across a span of months', and frames the user intent ('when is this hotel cheapest'). This clearly distinguishes it from hotel_details, hotel_booking_options and the generic price_calendar sibling.

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?

Gives a clear trigger phrase, a required prerequisite ('Needs a hotel_id from search_hotels'), and a follow-up workflow ('Then search_hotels with the chosen dates to track it'). It does not, however, explicitly contrast with the sibling price_calendar, leaving some ambiguity for an agent choosing between the two calendars.

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

list_bucket_listsList bucket listsA
Read-onlyIdempotent
Inspect

Use to see the flight and hotel bucket lists on the signed-in account, each with its settings, the best deals found so far, and the bucket_id that update_bucket_list, remove_bucket_list and share_link take.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to return, newest first, 1-200.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoHow to remove; price semantics
countNoNumber of bucket lists returned
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNoerror | sign_in_required (absent on success)
messageNoError or sign-in message from the server wrapper
manage_urlNoslicktrip.com saved-buckets page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
bucket_listsNoFlight items (bucket_id, kind, route fields, months, window, nights, price, best_deals...) and hotel items (location, nights, adults, months, best_deals...)
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds value beyond that by disclosing the shape of the result (settings, best deals so far) and, critically, that the bucket_id it returns is the handle consumed by update_bucket_list, remove_bucket_list and share_link. It says nothing about pagination beyond the schema's limit, which is a minor gap.

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?

One sentence, front-loaded with the action and resource, with no filler. Every clause carries information an agent needs: scope, payload, and the id's downstream consumers.

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?

An output schema exists, so return values need not be spelled out, yet the description still sketches them usefully. Combined with annotations covering the safety profile and the schema covering 'limit', the definition is essentially complete; only ordering/pagination nuance is left implicit.

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% and the single 'limit' parameter is fully documented there (1-200, newest first). The description mentions no parameters at all, so it adds nothing on top of the schema; baseline 3 is appropriate.

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?

States a specific verb ('see') and resource (flight and hotel bucket lists) scoped to the signed-in account, and enumerates the returned payload (settings, best deals, bucket_id). It also distinguishes itself from update_bucket_list, remove_bucket_list and share_link by naming them as consumers of the id it produces.

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?

'Use to see ... on the signed-in account' gives a clear condition for invoking it, and pointing at the three sibling tools that take the bucket_id supplies real routing context. There is no competing list tool to exclude, so no explicit when-not guidance is required, but none is offered either.

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

list_tracked_flightsList tracked flightsA
Read-onlyIdempotent
Inspect

Use to see the flight price alerts on the signed-in account: route, dates, cabin, alert settings, each itinerary's current price against the price when tracking began, and the search_key and fid that stop_tracking_flight and update_flight_tracking take.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to return, newest first, 1-200.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoHow to stop a tracking
countNoNumber of flight trackings on the account
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNoerror | sign_in_required (absent on success)
messageNoError or sign-in message from the server wrapper
trackingsNoItems: route fields, search_key, alert_preference, alert_method, prices, last_alert_sent, itineraries[], manage_url
manage_urlNoslicktrip.com saved-flights page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real value beyond that: it is scoped to the signed-in account, it discloses that each itinerary is shown as current price versus price at tracking start, and it surfaces the IDs needed by mutation tools.

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?

A single front-loaded sentence that opens with the usage verb and then lists return contents without filler. The enumerated list is dense but every item is informative, though the sentence is on the long side for a one-parameter list tool.

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

Completeness5/5

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

Output schema exists so return values need not be explained, yet the description still calls out the account scoping, the price-comparison semantics, and the downstream ID handoff — precisely the context an agent needs to route and chain correctly. Nothing material is missing.

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 the single 'limit' parameter (1-200, newest first, default 50) is fully documented in the schema. The description adds no further parameter guidance such as pagination or default-ordering notes, so the baseline 3 applies.

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?

States a specific verb and resource ('see the flight price alerts on the signed-in account') and then enumerates the exact contents returned: route, dates, cabin, alert settings, price deltas, and the search_key/fid identifiers. It also names the sibling tools that consume those identifiers, so the agent knows how this read tool fits the tracked-flights workflow.

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 opening clause 'Use to see...' gives a clear when-to-use context tied to the signed-in account, and mentioning stop_tracking_flight/update_flight_tracking implies the follow-up workflow. There is no explicit statement of when not to use it or a direct pointer to list_tracked_hotels/list_tracked_seats as alternatives, so it falls short of a 5.

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

list_tracked_hotelsList tracked hotelsA
Read-onlyIdempotent
Inspect

Use to see the hotel price alerts on the signed-in account: stay dates, guests, each hotel's current price against the price when tracking began, and the tracking_id and hotel_id the update and stop tools take.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to return, newest first, 1-200.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoHow to stop a tracking
countNoNumber of hotel stays tracked
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNoerror | sign_in_required (absent on success)
messageNoError or sign-in message from the server wrapper
trackingsNoItems: tracking_id, name, check_in, check_out, adults, children, alert settings, prices, hotels[], manage_url
manage_urlNoslicktrip.com saved-hotels page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world, non-destructive), so the bar is lower; the description still adds value by scoping results to the signed-in account and disclosing the comparison semantics (current price vs. price when tracking began). It does not mention pagination or ordering beyond what the limit param implies.

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?

A single front-loaded sentence with no filler; the purpose comes first and the field inventory follows. It is somewhat dense in its enumeration but every clause carries information.

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

Completeness5/5

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

With an output schema present, the description needn't document return values, yet it still previews them and links to the downstream update/stop tools. Annotations plus the 1-param schema leave nothing an agent needs missing.

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?

Only one parameter and its schema description is fully covered (default 50, range 1-200, newest first). The prose adds no parameter detail, which is acceptable given the schema does the work, so the baseline 3 applies.

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?

States a specific verb and resource ('see the hotel price alerts on the signed-in account') and enumerates what the listing contains: stay dates, guests, current vs. starting price, and the tracking_id/hotel_id. The 'hotel' qualifier and account scoping cleanly separate it from list_tracked_flights and list_tracked_seats.

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 opening 'Use to see...' establishes the context of use and the trailing clause implicitly routes the agent to the update and stop tools by naming the IDs they consume. It never states exclusions or an explicit alternative (e.g., when to prefer this over hotel_booking_options), so it falls short of a 5.

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

list_tracked_seatsList tracked seatsA
Read-onlyIdempotent
Inspect

Use to see the seat alerts on the signed-in account: flight, departure, cabin, the seats watched and which are open now, and the tracking_key the update and stop tools take.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to return, newest first, 1-200.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoHow to stop a seat alert
countNoNumber of seat alerts on the account
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNoerror | sign_in_required (absent on success)
messageNoError or sign-in message from the server wrapper
trackingsNoItems: tracking_key, flight_number, origin, destination, departure_time, aircraft, cabins, seats_together, tracked_seats, open_now, alert_method, created_at, manage_url
manage_urlNoslicktrip.com saved-seats page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely useful context beyond that: results are scoped to the signed-in account, and the tracking_key it returns is the handle the update/stop tools take, which tells the agent how to chain calls.

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?

One sentence, front-loaded with the 'Use to see...' intent and no filler. It is dense and slightly run-on with its comma-separated field list, but every clause carries information.

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?

An output schema exists, so listing return fields is not strictly required, and annotations cover the safety profile; the description still fills the remaining gaps (account scoping, tracking_key handoff). Nothing essential for correct invocation is missing.

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% and the single 'limit' parameter is fully documented in the schema (1-200, newest first). The description adds nothing about the parameter, so the baseline 3 for schema-carried semantics applies.

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?

States a specific verb and resource ('see the seat alerts on the signed-in account') and enumerates the returned fields (flight, departure, cabin, watched seats, open status). This cleanly separates it from the sibling list_tracked_flights and list_tracked_hotels, which cover different tracked entities.

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?

Gives clear context ('seat alerts on the signed-in account') and implicitly routes the agent onward by noting the returned tracking_key is what the update and stop tools consume, which is a real workflow hint. It stops short of an explicit when-not or a named alternative tool.

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

price_calendarPrice calendarA
Read-onlyIdempotent
Inspect

Use for 'when is it cheapest to fly' on a route: the cheapest fare per departure day across about two months. Then search_flights on the chosen day for bookable itineraries. Not for a specific date.

ParametersJSON Schema
NameRequiredDescriptionDefault
cabinNoCabin class.economy
monthNoFirst month to show, YYYY-MM. Empty means this month.
originYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
airlinesNoUp to 3 carriers as IATA codes, or one alliance: star alliance, oneworld, skyteam.
max_stopsNoMost stops allowed: 0 nonstop, 1, or 2.
travelersNoTravelers. Fares are quoted for all of them together; one booking holds up to 9 (a larger group gets a suggested split).
trip_typeNoRound trip or one way.roundtrip
destinationYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
user_requestNoOptional. The traveler's current travel request, briefly, in their own words. Used to interpret this search, suggest a corrected search if it fails, and improve SlickTrip's search. Include only this request; not earlier conversation, names, contact details, or payment or ID information.
trip_length_daysNoNights away, round trips only.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
daysNoItems: depart_date, return_date, price_usd, day_of_week, low_price
noteNoNext-step guidance or why no data
fieldNoOn unknown_place: which argument (origin, destination, ...)
queryNoThe calendar query: origin, destination, cabin, travelers, trip_type, stops, month, airlines
statusNook | no_data | error | sign_in_required
messageNoError or sign-in message from the server wrapper
summaryNoPartner grid summary stats for the window
search_urlNoslicktrip.com flights tab link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety profile is covered. The description adds the two-month scope and the workflow handoff to search_flights, but does not mention pagination or output-shape caveats beyond what the output schema presumably provides.

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?

Three short clauses, front-loaded with the use case, followed by the natural next step and the exclusion. 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 10 parameters, full schema coverage, and an output schema, the description supplies the missing decision context (when to use it vs search_flights) and the scope of results. It leaves raw parameter semantics to the schema, which is acceptable here.

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 parameters (origin/destination syntax, month, cabin, travelers, etc.) are fully documented in the schema. The description adds no parameter-level detail, which is the expected baseline when the schema does all the work.

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?

States a specific user question ('when is it cheapest to fly') and the concrete output: cheapest fare per departure day across ~two months. Clearly distinguishes itself from search_flights by contrasting the calendar view with bookable itineraries.

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?

Explicitly routes the agent: use this for cheapest-day discovery, then call search_flights for the chosen day, and 'Not for a specific date' gives the negative condition.

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

recent_dealsRecent dealsA
Read-onlyIdempotent
Inspect

Use for 'any deals right now?': the freshest price-drop alerts SlickTrip actually sent, by category (flights, hotels, seats, flexible routes). Not a search; no account needed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoThese are real alerts sent recently
siteNoslicktrip.com homepage link with attribution
fieldNoOn unknown_place: which argument (origin, destination, ...)
alertsNoCategory name to array of recent alert items (route, price, prevPrice, dates, url, ...)
statusNoerror | sign_in_required (absent on success)
messageNoError or sign-in message from the server wrapper
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuine non-structured context: no authentication required, and that results are alerts SlickTrip actually sent (a sent-history feed) rather than computed-on-demand prices. It leaves the freshness window (how far back "recent" reaches) undefined.

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?

One tightly packed sentence plus a short negating clause: the usage trigger, the data source, the category breakdown and the no-auth note all land up front with 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?

With an output schema present, return values need no explanation, and the description correctly focuses on source, categories and auth. The only meaningful gap is the undefined recency window, which an agent would need to interpret "freshest" or set user expectations.

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?

The tool takes zero parameters, so the baseline is 4; there is no argument syntax for the description to clarify. It does usefully enumerate the category dimension of the result, which is the only knob-like concept here, but that belongs to the output rather than the input.

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 resource (the freshest price-drop alerts SlickTrip actually sent) and scope (by category: flights, hotels, seats, flexible routes), and explicitly contrasts itself with search tools. An agent can distinguish it from search_flights/search_hotels/price_calendar without opening any schema.

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?

It gives a concrete usage trigger ("any deals right now?") and an exclusion ("Not a search"), plus the precondition that no account is needed. It does not name a specific sibling to use instead when the user wants a targeted search, so it falls just short of the full when/when-not/alternative triad.

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

remove_bucket_listRemove a bucket listA
DestructiveIdempotent
Inspect

Use to stop a bucket list (bucket_id from list_bucket_lists). Cannot be undone; confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_idYesThe list's bucket_id from list_bucket_lists.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
kindNo"flight" or "hotel"
nameNoThe bucket's name
stayNoHotel only: location, hotel_name, nights, adults
fieldNoOn unknown_place: which argument (origin, destination, ...)
routeNoFlight only: origin, destination, names, trip_type, cabin, travelers
statusNoremoved | error | sign_in_required
messageNoError or sign-in message from the server wrapper
bucket_idNoThe removed bucket list id
manage_urlNoslicktrip.com saved buckets page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
display_nameNoName as the card shows it
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered structurally. The description adds genuinely new behavioral context: the action cannot be undone and the caller should confirm first, which is a workflow requirement not encoded in 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?

A single front-loaded sentence carrying purpose, parameter provenance, irreversibility, and a confirmation cue. No filler and nothing redundant.

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?

For a one-parameter destructive tool with annotations covering safety and an output schema covering returns, the description supplies the missing prerequisites and reversibility warning. Only the absence of alternative-tool routing keeps it from being fully complete.

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 coverage is 100% and the single parameter's description already states it comes from list_bucket_lists, so the description largely repeats the schema. It adds no format, type, or validation detail beyond provenance. Baseline 3 is appropriate 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.

Purpose4/5

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

The description names a specific action on a specific resource (stop a bucket list) and its title matches 'Remove a bucket list'. The verb 'stop' is slightly softer than the actual destructive removal, but the reference to bucket_id from list_bucket_lists anchors it clearly against siblings like add_flight_bucket_list and update_bucket_list.

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?

It gives a clear precondition (obtain bucket_id from list_bucket_lists) and an operational instruction ('confirm first'), which is more than most definitions offer. It does not explicitly contrast itself with update_bucket_list or the add_* siblings, so it stops short of full when/when-not guidance.

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

route_airlinesAirlines on a routeA
Read-onlyIdempotent
Inspect

Use when the traveler asks who flies a route, or before filtering by airline: the carriers on the route, nonstop ones first, with the codes the airlines filters take. Not a fare search.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
destinationYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoGuidance for the assistant
fieldNoOn unknown_place: which argument (origin, destination, ...)
originNoOrigin code
statusNook | no_data | error | sign_in_required
messageNoError or sign-in text
airlinesNocode, name, nonstop
destinationNoDestination code
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds behavior annotations do not: results are ordered with nonstop carriers first, and it returns the airline codes that the airline filters consume. It does not discuss result size or pagination, but with an output schema present that gap is minor.

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?

A single sentence that front-loads the usage trigger, then the returned resource, then the exclusion. No filler, nothing repeated from the schema or annotations.

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

Completeness5/5

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

For a two-parameter read-only lookup with full schema coverage and an output schema, the description supplies exactly the missing piece: when to call it and how the output orders carriers. Nothing needed to invoke it correctly is absent.

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% and both parameters are richly documented in the schema itself (airport vs city codes, underscore joining, find_places fallback). The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies.

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?

States a specific resource ('the carriers on the route') and a clear scope, and explicitly contrasts itself with a fare search. An agent can distinguish it from search_flights, flight_lookup, and booking_options without opening any schema.

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?

Gives two explicit triggers ('when the traveler asks who flies a route, or before filtering by airline') and one explicit exclusion ('Not a fare search'). This is textbook when-to-use / when-not-to-use guidance.

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

search_flightsSearch flightsA
Read-onlyIdempotent
Inspect

Use when the traveler wants flights for known dates: one way, round trip, flexible dates, several airports, or multi-city. Give origin, destination and depart_date (return_date for a round trip), or pass their own words in query and leave unknown fields empty (nothing is guessed), or legs for multi-city. Returns priced itineraries cheapest first, itinerary_ids for track_flight and search_return_flights, and a search_url. Not for 'when is it cheapest' (price_calendar) or flexible months (add_flight_bucket_list).

ParametersJSON Schema
NameRequiredDescriptionDefault
legsNoMulti-city trip: the legs in order, 2 to 5, each one airport or city code per side and one date. When given, origin / destination / depart_date / return_date are ignored.
sortNoOrder of results.price
cabinNoCabin class.economy
queryNoThe traveler's request in their own words, used to fill any field left empty.
originNoA 3-letter airport code (JFK) or a city code for all its airports (NYCA, LOND, ROME); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places.
airlinesNoOnly these marketing carriers, as IATA codes or names.
max_stopsNoMost stops allowed: 0 nonstop, 1, or 2.
travelersNoTravelers. Fares are quoted for all of them together; one booking holds up to 9 (a larger group gets a suggested split).
depart_dateNoYYYY-MM-DD. A second date joined with _ searches both as flexible dates (2026-11-03_2026-11-04); at most 2 per direction.
destinationNoA 3-letter airport code (JFK) or a city code for all its airports (NYCA, LOND, ROME); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places.
max_resultsNoHow many results to return, 1-50.
return_dateNoYYYY-MM-DD for a round trip; empty for one way.
arrive_afterNoHH:MM, local time at that airport.
depart_afterNoHH:MM, local time at that airport.
user_requestNoOptional. The traveler's current travel request, briefly, in their own words. Used to interpret this search, suggest a corrected search if it fails, and improve SlickTrip's search. Include only this request; not earlier conversation, names, contact details, or payment or ID information.
arrive_beforeNoHH:MM, local time at that airport.
depart_beforeNoHH:MM, local time at that airport.
max_price_usdNoHighest fare to show, USD, as the TOTAL for all travelers together: for a per-person budget, multiply by travelers (2 people at $300 each = 600). Unlike bucket lists, whose price bar is per traveler.
max_duration_hoursNoLongest itinerary to show, in hours.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoGuidance on trip type or why empty
fieldNoOn unknown_place: which argument (origin, destination, ...)
countsNopriced, matching_filters, returned integers
searchNoRoute dict: origin, destination, names, destination_image, cabin, travelers, dates, trip_type, legs (multi-city), search_key, served_from, retrieved_at
statusNook | no_data | error | sign_in_required
filtersNoFilters as the caller gave them (max_stops, airlines, max_price_usd, ...)
messageNoError or sign-in message from the server wrapper
highlightsNoThe spread over every matching fare: cheapest, cheapest_nonstop, fastest, earliest, latest; each with itinerary_id, price, airlines, stops, duration_minutes, departs_at
search_urlNoslicktrip.com search page link with attribution
itinerariesNoItems: itinerary_id, price {total_usd, per_traveler_usd}, outbound leg, needs_leg, track_url, optional depart_date + search_key
searched_asNoWhat the search assumed: trip type, travelers, cabin
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description still adds real behavioral context: results come back priced cheapest-first, include itinerary_ids consumed by track_flight/search_return_flights and a search_url, and that unknown fields are left empty because 'nothing is guessed'. It stops short of covering pagination or error/empty-result behavior, so not a 5.

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?

Two dense sentences, front-loaded with the usage trigger and ending with the exclusion clause; every clause carries information. It is long but not padded given 19 parameters and multiple modes, though the middle 'or ... or ...' construction takes some parsing.

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

Completeness5/5

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

For a 19-parameter, multi-mode search tool with full schema coverage, output schema present, and rich annotations, the description covers the remaining gaps: mode selection, field-population strategy, override precedence, and the return artifact (itinerary_ids, search_url). Nothing an agent needs to call it correctly is missing.

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 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema does not: legs overrides origin/destination/dates, and query backfills any empty field while unknown fields stay empty. These interaction rules are genuinely beyond the per-field schema text.

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 names the specific verb and resource and enumerates the callable modes (one way, round trip, flexible dates, several airports, multi-city). It also explicitly marks the sibling tools it is not (price_calendar, add_flight_bucket_list), so an agent can distinguish it without opening the schema.

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 opens with an explicit 'Use when the traveler wants flights for known dates' trigger, describes how to populate fields for each mode, and closes with explicit exclusions routing to price_calendar and add_flight_bucket_list. This is when-to-use plus when-not-to-use plus named alternatives.

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

search_hotelsSearch hotelsA
Read-onlyIdempotent
Inspect

Use when the traveler wants a place to stay for known dates. Returns hotels cheapest first with star class, guest rating, per-night and whole-stay price, hotel_ids and a search_key for track_hotel and hotel_price_calendar, and a search_url. Filters match the site: price, stars, guest rating, property kinds, amenities, free cancellation, hotels or vacation rentals, sort. Not for flexible months (add_hotel_bucket_list).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoCheapest first, or best rated first.price
adultsNoAdults. A hotel room prices up to 6 guests in all; vacation rentals up to 16.
check_inYesYYYY-MM-DD.
locationYesA city, neighbourhood, landmark or hotel name.
amenitiesNoHotels: free parking, pool, gym, spa, free breakfast, beach access, pet-friendly, child-friendly, free wi-fi, air conditioning, all-inclusive, wheelchair accessible, ev charger, bar, restaurant, room service. Vacation rentals: kitchen, hot tub, fireplace, patio, grill, crib, beach access, pet-friendly, gym, air conditioning.
check_outYesYYYY-MM-DD.
min_starsNoLowest star class to show, 1-5.
max_resultsNoHow many results to return, 1-50.
user_requestNoOptional. The traveler's current travel request, briefly, in their own words. Used to interpret this search, suggest a corrected search if it fails, and improve SlickTrip's search. Include only this request; not earlier conversation, names, contact details, or payment or ID information.
children_agesNoOne age per child, 1-17.
property_typeNoHotels, or vacation rentals.hotel
property_kindsNoHotels: resort, boutique hotel, hostel, inn, motel, spa hotel, bed and breakfast, apartment hotel, beach hotel, ryokan. Vacation rentals: apartment, house, villa, cabin, cottage, chalet, bungalow, houseboat.
min_guest_ratingNoLowest guest rating out of 5; 3.5, 4 or 4.5 work best.
free_cancellationNoOnly stays with free cancellation.
max_price_per_nightNoHighest price per night to show, USD.
min_price_per_nightNoLowest price per night to show, USD.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoPrices are whole-stay; how to track
fieldNoOn unknown_place: which argument (origin, destination, ...)
hotelsNoItems: hotel_id, name, image, type, stars, guest_rating, reviews, per_night_usd, total_usd, amenities, description, hotel_url
searchNolocation, check_in, check_out, adults, children_ages, nights, search_key
statusNook | no_data | error | sign_in_required
filtersNoApplied filters: property_type, min_stars, free_cancellation, advanced, sort
messageNoError or sign-in message from the server wrapper
highlightsNoThe spread over every priced stay: cheapest, best_rated, cheapest_4_star_plus, most_reviewed; each with hotel_id, name, per_night_usd, total_usd, stars, guest_rating, reviews
search_urlNoslicktrip.com hotels search link
searched_asNoWhat the search assumed: guests, hotels or vacation rentals
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
total_foundNoTotal hotels found before max_results cut
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safe read-only, idempotent, non-destructive profile, so the description is free to add real value: results are ordered 'cheapest first,' filter semantics 'match the site,' and the response carries hotel_ids, a search_key, and a search_url. It stops short of describing pagination or result-count behavior beyond max_results.

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?

Three dense sentences, front-loaded with the usage gate and the exclusion, then output shape, then filters. The mid-sentence filter and return enumerations are list-like but each maps to real capability; nothing redundant, though slightly packed.

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

Completeness5/5

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

For a 16-parameter search tool with an output schema and full annotation coverage, the description supplies the routing decision, the return contents, and the downstream keys needed to chain into track_hotel and hotel_price_calendar. Nothing an agent needs to select or invoke it is missing.

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 every parameter including the enum values, amenity lists, and bounds is already documented in the schema. The description's filter summary ('price, stars, guest rating, property kinds, amenities, free cancellation, hotels or vacation rentals, sort') mirrors the schema without adding semantics, so the baseline 3 applies.

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?

States a specific verb (search) and resource (hotels) with an explicit scope gate: 'the traveler wants a place to stay for known dates.' It also names the sibling it is not for (add_hotel_bucket_list for flexible months), so the agent can route without opening any schema.

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?

Gives an explicit when ('known dates') and an explicit when-not with the alternative named ('Not for flexible months (add_hotel_bucket_list)'). The downstream handoff to track_hotel and hotel_price_calendar is also spelled out.

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

search_return_flightsSearch return flightsA
Read-onlyIdempotent
Inspect

Use after search_flights when the traveler wants a specific return, or the next leg of a multi-city trip (once per remaining leg). Takes an outbound itinerary_id; returns complete itineraries with the trip total, needs_leg false once the trip is whole. Filters apply to the leg being chosen. Not needed for an outbound watch.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOrder of results.price
airlinesNoOnly these marketing carriers, as IATA codes or names.
max_stopsNoMost stops allowed: 0 nonstop, 1, or 2.
max_resultsNoHow many results to return, 1-50.
arrive_afterNoHH:MM, local time at that airport.
depart_afterNoHH:MM, local time at that airport.
itinerary_idYesAn outbound (or partial multi-city) itinerary_id from search_flights or a previous call.
arrive_beforeNoHH:MM, local time at that airport.
depart_beforeNoHH:MM, local time at that airport.
max_price_usdNoHighest fare to show, USD, as the TOTAL for all travelers together: for a per-person budget, multiply by travelers (2 people at $300 each = 600). Unlike bucket lists, whose price bar is per traveler.
max_duration_hoursNoLongest itinerary to show, in hours.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoGuidance on totals and next step
fieldNoOn unknown_place: which argument (origin, destination, ...)
countsNopriced, matching_filters, returned integers
searchNoRoute dict plus search_key, outbound_itinerary_id; multi-city adds leg_number, legs_total
statusNook | no_data | error | sign_in_required
filtersNoFilters as the caller gave them
messageNoError or sign-in message from the server wrapper
outboundNoLeg shape: airlines, stops, duration_minutes, segments, layovers
track_urlNoOutbound handoff tracking link (round-trip path only)
highlightsNoThe spread over every matching return: cheapest, cheapest_nonstop, fastest, earliest, latest
search_urlNoslicktrip.com search page link
itinerariesNoItems: itinerary_id, price, return (round trip) or next_leg (multi-city) leg object, needs_leg
legs_chosenNoMulti-city only: leg objects chosen so far
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description adds stateful behavior beyond that: it consumes an outbound itinerary_id, returns complete itineraries with the trip total, and flips 'needs_leg' to false once the trip is whole, which tells the agent about the tool's role in a multi-step flow.

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?

Three tight sentences with zero padding. The most important fact (when to call it, and after what) is front-loaded, and each subsequent sentence adds a distinct piece of context.

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

Completeness5/5

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

For an 11-param tool with full schema coverage and an output schema, the description covers sequencing, prerequisites, scope of filters, and the multi-leg flow. Nothing an agent needs to invoke it correctly is missing, and the return-shape mention is a harmless reinforcement of the output schema.

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 100%, so the baseline is 3. The description adds value beyond the schema by clarifying filter scope ('Filters apply to the leg being chosen') and characterizing itinerary_id as an outbound or partial multi-city id, which the schema states only generically.

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 return flights') and anchors it to a sibling: 'Use after search_flights'. It distinguishes the tool from the plain flight search by its role as the second leg, so an agent can tell them apart without opening either schema.

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 gives explicit sequencing ('Use after search_flights'), conditions for use ('when the traveler wants a specific return, or the next leg of a multi-city trip'), a repetition rule ('once per remaining leg'), and an exclusion ('Not needed for an outbound watch'). When-not guidance is present alongside the when.

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

seat_availabilitySeat availabilityA
Read-onlyIdempotent
Inspect

Use to see which seats are open right now on one flight (signed-in account: the live seat map is a paid lookup): open seat numbers by row, counts of window, aisle, middle and exit-row seats, and rows with two seats together. Needs the flight number, route and date. Then track_seats to be told when a seat opens. Not for prices.

ParametersJSON Schema
NameRequiredDescriptionDefault
cabinNoCabin to look at; any = every cabin on the flight.economy
originYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
depart_dateYesYYYY-MM-DD.
destinationYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
user_requestNoOptional. The traveler's current travel request, briefly, in their own words. Used to interpret this search, suggest a corrected search if it fails, and improve SlickTrip's search. Include only this request; not earlier conversation, names, contact details, or payment or ID information.
flight_numberYesAirline code and number, no space.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoUse track_seats to be alerted
cabinNoCabin tier queried
fieldNoOn unknown_place: which argument (origin, destination, ...)
countsNoseats, available, window, aisle, middle, exit_row, rows_with_2_together
flightNoflight_number, origin, destination, departure_time, arrival_time, aircraft, airline
statusNook | no_data | error | sign_in_required
messageNoNo seat map explanation or wrapper error
exit_rowsNoRow numbers with exit-row seats
seat_kindsNoSeat letter to window | aisle | middle
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
seat_map_svgNourl, view_box, aircraft, seats[] with x/y/w/h/status/kind
seat_map_urlNoslicktrip.com seat-tracker setup page link
open_seat_idsNoEvery open seat id in the cabin, space-separated
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
taken_seat_idsNoEvery taken seat id in the cabin, space-separated
available_seatsNoItems: seat, kind, exit_row (up to 80)
seat_tracker_urlNoslicktrip.com seat-tracker route link

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, open-world), and the description adds material context beyond them: the live seat map is a paid lookup and requires a signed-in account. Auth and cost prerequisites are exactly the kind of disclosure annotations cannot convey.

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?

Front-loaded with the action ('Use to see...'), followed by a dense but useful output list and two short routing sentences. Every sentence earns its place, though the parenthetical about the paid lookup is slightly compressed.

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

Completeness5/5

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 still covers purpose, prerequisites, alternatives and exclusions for a 6-parameter tool. Nothing an agent needs to invoke it correctly is missing.

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 flight_number, origin, destination, depart_date and the cabin enum are already fully documented inline, including fallbacks like find_places. The description only restates 'needs the flight number, route and date', adding no syntax or constraint beyond the schema; baseline 3 applies.

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?

States a specific verb and resource with scope: see which seats are open right now on one flight, and it enumerates the returned detail (seat numbers by row, window/aisle/middle/exit counts, pairs). It distinguishes itself from siblings by naming track_seats and explicitly excluding prices.

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?

Explicit routing: use this for current availability, then use track_seats to be notified when a seat opens, and 'Not for prices' rules out price_calendar. The condition that selects each alternative is stated rather than implied.

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

shared_tripOpen a shared tripA
Read-onlyIdempotent
Inspect

Use when the traveler pastes a slicktrip.com/share link: the shared itinerary or bucket list and its current price, so they can start their own watch on it. Takes the link or its code. Not for making a link (share_link).

ParametersJSON Schema
NameRequiredDescriptionDefault
share_urlYesA slicktrip.com/share/<code> link, or just the code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
kindNoflight | bucket_list
noteNoGuidance for the assistant
fieldNoOn unknown_place: which argument (origin, destination, ...)
routeNoRoute with names and dates
monthsNoBucket list months
nightsNomin and max nights
statusNook | no_data | error | sign_in_required
messageNoError or sign-in text
max_stopsNoStops allowed
best_dealsNoDeals found so far
search_keyNoThe route's search key
search_urlNoThe search on slicktrip.com
share_codeNoThe share code
itinerariesNofid, price_usd, outbound, return legs
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
max_price_usdNoBucket list price bar
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
current_price_usdNoShared watch's current price

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered structurally. The description adds real value beyond that: it discloses what the call surfaces (itinerary or bucket list plus current price) and the downstream intent (starting one's own watch). It omits anything about resolution failure on a bad/expired code, which is the only remaining behavioral 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?

Three tight sentences, with the trigger condition front-loaded ahead of the exclusion. Only the 'Takes the link or its code' clause is wasted, since it duplicates the schema description. No other filler.

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

Completeness5/5

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, yet the description still characterizes the payload (itinerary/bucket list + current price). With annotations covering safety and the schema covering the single argument, an agent has everything needed to select and invoke this correctly.

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 coverage is 100% and the single parameter's description already spells out 'a slicktrip.com/share/<code> link, or just the code.' The description's 'Takes the link or its code' restates that verbatim and adds no format, validation, or normalization detail. Baseline 3 is correct when the schema carries the full parameter burden.

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?

States a specific action ('open a shared trip') bound to a concrete trigger artifact (a slicktrip.com/share link) and says what comes back: the itinerary/bucket list plus its current price. It also explicitly names the sibling it is not (share_link), so an agent can separate ingest-a-link from create-a-link without reading either schema.

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?

Gives an explicit invocation condition ('Use when the traveler pastes a slicktrip.com/share link') and an explicit exclusion ('Not for making a link (share_link)'). The when-to-use and the alternative are both stated, not inferred.

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

stop_tracking_flightStop tracking a flightA
DestructiveIdempotent
Inspect

Use to stop price alerts for a tracked route (search_key from list_tracked_flights), or one itinerary in it (fid). Cannot be undone; confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
fidNoAn itinerary's fid from list_tracked_flights, to stop only that one and keep the route.
search_keyYesThe route's search_key from list_tracked_flights.

Output Schema

ParametersJSON Schema
NameRequiredDescription
fidNoThe single itinerary removed, if any
codeNoOn an error: a machine-readable kind, e.g. unknown_place
fieldNoOn unknown_place: which argument (origin, destination, ...)
routeNoRoute dict parsed from the key with place names
scopeNo"one itinerary" or "whole route"
statusNostopped | error | sign_in_required
messageNoError or sign-in message from the server wrapper
manage_urlNoslicktrip.com saved-flights page link
search_keyNoThe route that was stopped
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the irreversible nature is partly covered. The description still adds actionable context beyond that: the irreversibility is stated in plain language and paired with a 'confirm first' instruction the agent can act on, though it says nothing about what state remains after removal (e.g., whether the route disappears from list_tracked_flights).

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?

A single sentence that front-loads the purpose, then nests the two mutually exclusive scoping options, ending with the safety caveat. No filler and nothing an agent must read past to find the core action.

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

Completeness5/5

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

With only two parameters, full schema coverage, an output schema, and annotations carrying the mutation/ idempotency profile, the description covers everything an agent needs: what it does, the two modes, the identifier source, and the irreversibility warning. Nothing material is missing.

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% – both search_key and fid are fully documented in the schema, including that fid preserves the route while targeting one itinerary. The description repeats the sourcing of both params without adding format or validation detail, so the baseline of 3 applies.

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 names a specific verb ('stop price alerts') plus a precise resource and two levels of scope: a whole tracked route via search_key, or a single itinerary via fid. That scope distinction is exactly what separates it from siblings like update_flight_tracking (modify) and stop_tracking_hotel/stop_tracking_seats (other resources).

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?

It tells the agent where both identifiers come from (list_tracked_flights) and the consequence ('Cannot be undone; confirm first'), which is clear operational context. It stops short of explicitly naming the alternative to use when the intent is to edit rather than end tracking, so it is not a full 5.

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

stop_tracking_hotelStop tracking a hotelA
DestructiveIdempotent
Inspect

Use to stop price alerts for a tracked stay (tracking_id from list_tracked_hotels), or one hotel in it (hotel_id). Cannot be undone; confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotel_idNoDrop only this hotel from the stay and keep the rest.
tracking_idYesThe stay's tracking_id from list_tracked_hotels.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoSet when last hotel removal deleted the stay
stayNolocation, hotel_name, name, check_in, check_out, adults
fieldNoOn unknown_place: which argument (origin, destination, ...)
scopeNo"whole stay" or "one hotel"
statusNostopped | error | sign_in_required
messageNoError or sign-in message from the server wrapper
hotel_idNoThe single hotel removed, if any
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
tracking_idNoThe stay tracking id stopped
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description goes beyond them by stating the action is irreversible and instructing the agent to confirm first, which is meaningful guidance for an agent acting on a user's behalf.

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?

A single sentence that front-loads the action and scope, then adds the consequence. No wasted words and the parenthetical identifier hints are tightly embedded.

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

Completeness5/5

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

For a destructive two-parameter tool with full schema coverage, annotations, and an output schema, the description supplies everything an agent needs: action, scope options, identifier source, and the confirmation requirement.

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 100%, so baseline is 3, and the description adds where tracking_id comes from and clarifies that hotel_id narrows the scope to one hotel. That provenance detail is useful orientation beyond the schema's own per-field text.

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?

States a specific verb+resource: stop price alerts for a tracked stay or a single hotel within it. It clearly separates itself from track_hotel and update_hotel_tracking by naming the termination action and the two possible scopes.

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?

Gives clear context for when to call it (ending alerts on a tracked stay) and points to list_tracked_hotels as the source of tracking_id. It does not explicitly contrast with update_hotel_tracking or track_hotel, but the destructive framing makes the distinction inferable.

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

stop_tracking_seatsStop tracking seatsA
DestructiveIdempotent
Inspect

Use to stop the seat alert on one flight (tracking_key from list_tracked_seats). Cannot be undone; confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
tracking_keyYesThe alert's tracking_key from list_tracked_seats.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNostopped | error | sign_in_required
messageNoError or sign-in message from the server wrapper
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
tracking_keyNoThe seat alert key stopped
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructive=true, idempotent=true and readOnly=false, so the safety profile is mostly covered. The description still adds value beyond them: it states the action cannot be undone and requires confirmation, which the hints do not convey. Nothing is claimed that conflicts with 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?

Two short sentences, front-loaded with the action and followed by the parameter source and the irreversibility warning. No filler or repetition.

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?

For a one-parameter destructive tool with an output schema, the description covers what it does, where the parameter comes from, and the crucial irreversibility/confirm step. An agent has what it needs to call it correctly; only cross-references to the sibling stop/update tools are absent.

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% for the single tracking_key parameter, and the schema already names list_tracked_seats as its origin, so the description largely restates structured data. Baseline 3 applies; no additional format or validation detail is supplied.

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?

States a specific verb+resource (stop the seat alert) and scopes it to one flight, which separates it from stop_tracking_flight and stop_tracking_hotel by resource. It does not name those siblings explicitly, but the resource word 'seat' plus the tracking_key reference makes the domain 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?

Gives clear context: use it to cancel a seat alert, and it points to list_tracked_seats as the source of the required tracking_key. It also adds a prerequisite ('confirm first'), which is real operational guidance. It stops short of naming the related stops/update tools for the other tracking types.

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

track_flightTrack a flight's priceA
Idempotent
Inspect

Use to start price alerts on an itinerary from a search, after the traveler confirms. One way: any itinerary_id from search_flights. Round trip: an outbound itinerary_id from search_flights watches that outbound with its cheapest return; a complete itinerary_id from search_return_flights tracks that exact pairing. Multi-city: a complete itinerary_id. Alerts go to the account's channels on a new low; alert_rule any hears every move; target_price_usd sets a bar.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSend alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting.
emailNoSend alerts by email. Empty keeps the account's setting.
alert_ruleNoWhen to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead.
itinerary_idYesFrom search_flights (one way) or search_return_flights (a complete round trip or multi-city).
target_price_usdNoAlert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel.

Output Schema

ParametersJSON Schema
NameRequiredDescription
fidNoTracked itinerary id (flight numbers)
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoNote about text alerts needing a verified phone
fieldNoOn unknown_place: which argument (origin, destination, ...)
routeNoRoute dict: origin, destination, cabin, travelers, dates, trip_type (+names on outbound watch)
watchNo"outbound" when an outbound-only watch was saved
alertsNoPlain-words description of what alerts fire
statusNotracking | error | sign_in_required
messageNoError or sign-in message from the server wrapper
channelsNo{email: boolean, text: boolean} stored alert channels
saved_urlNoslicktrip.com saved-flights page link
search_keyNoThe tracked route's search key
alerts_whenNoWhen alerts fire, from the alert preference
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
outbound_fidNoOutbound watch only: the outbound fid
price_at_saveNoPrice recorded when tracking started
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
text_not_enabledNoText asked but no verified phone on account
text_unconfirmedNoCould not confirm text-alert status

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover safety (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the bar is lower; the description still adds real behavioral context: alerts fire to the account's channels, alert_rule=any alerts on every move, and the traveler-confirmation gate. It doesn't state permissions beyond the confirmation requirement or what happens on repeat tracking of the same itinerary.

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?

Front-loaded with purpose and the confirmation gate, then organized by trip type, then alert behavior. It is dense and uses fragments, but every clause carries routing or behavior information; the 'any hears every move' phrasing is slightly compressed at the cost of readability.

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

Completeness5/5

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

For a tracking-creation tool with five parameters and a full output schema, the description supplies the precondition (traveler confirmation), the trip-type routing that determines the required itinerary_id, and the alert-channel semantics. Nothing an agent needs to call it correctly is missing.

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 100%, so baseline is 3, but the description adds cross-parameter meaning the schema lacks: itinerary_id semantics differ by trip type (a one-way id watches that outbound with its cheapest return, a complete id tracks the exact pairing), and it explains how target_price_usd overrides alert_rule in operational terms.

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?

States a specific verb and resource ('start price alerts on an itinerary') and immediately scopes it with the precondition 'from a search, after the traveler confirms'. It is clearly distinguishable from siblings like update_flight_tracking, stop_tracking_flight, and list_tracked_flights.

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?

Gives explicit per-trip-type routing rules for which source tool to pull itinerary_id from (search_flights vs search_return_flights), which is real 'when to use' guidance. It lacks an explicit exclusion such as 'use update_flight_tracking to change an existing alert' or a note on duplicate alerts.

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

track_hotelTrack a hotel's priceA
Idempotent
Inspect

Use to start price alerts on one hotel from search_hotels for those dates, after the traveler confirms. Alerts go to the account's channels when the price drops.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSend alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting.
emailNoSend alerts by email. Empty keeps the account's setting.
hotel_idYesA hotel_id from search_hotels.
alert_ruleNoWhen to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead.
search_keyYesThe search_key from search_hotels.
search_urlNoThe search_url from the same search_hotels result, so the alert reopens the same filtered search (stars, price range, amenities). Empty tracks against the plain search.
target_price_usdNoAlert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoManage on saved-hotels page or already tracked
stayNolocation, check_in, check_out, adults, children
fieldNoOn unknown_place: which argument (origin, destination, ...)
alertsNoPlain-words description of alerts
statusNotracking | already_tracking | error | sign_in_required
messageNoError or sign-in message from the server wrapper
hotel_idNoThe tracked hotel's property token
hotel_urlNoslicktrip.com hotel page link
saved_urlNoslicktrip.com saved-hotels page link
search_keyNoThe hotel search key
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
tracking_idNoThe stay's tracking record id
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
current_price_usdNoalready_tracking only: current tracked price
added_to_existing_stayNoMerged into an existing stay record

TDQS

A4/5.0
Behavior4/5

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

Annotations cover the safety profile (non-destructive, idempotent, open-world), and the description adds a genuinely useful side-effect disclosure: alerts are pushed to the account's channels when the price drops. It stops short of saying how channels are chosen or how failures surface, but it exceeds the annotation baseline.

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?

Two sentences, no waste. Usage and prerequisite are front-loaded, and the consequence (alerts to account channels) follows immediately after.

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?

With an output schema present and annotations covering safety and idempotency, the description only needs to cover prerequisites and post-call behavior, which it does. A brief note on what a repeated call does (idempotent re-tracking vs duplicate alert) would round it out.

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 coverage is 100%, so hotel_id, search_key, search_url, alert_rule, target_price_usd, text and email are already fully documented in the schema. The description adds nothing about parameter syntax or defaults, so the baseline 3 applies.

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?

States a specific verb and resource: 'start price alerts on one hotel'. The word 'start' implicitly separates it from update_hotel_tracking and stop_tracking_hotel, but no sibling is named explicitly, so an agent must infer the boundary.

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?

Clear conditions: the hotel comes 'from search_hotels for those dates' and the action happens 'after the traveler confirms'. It gives no explicit exclusions or alternative tools (e.g. add_hotel_bucket_list, update_hotel_tracking), so routing is implied rather than spelled out.

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

track_seatsTrack seats on a flightA
Idempotent
Inspect

Use to start seat alerts on one flight, after the traveler confirms: named seats, or every seat of a kind (window, aisle, middle, any), optionally only when N seats open together in a row. Alerts go to the account's channels when a watched seat opens.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSend alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting.
cabinNoCabin to look at; any = every cabin on the flight.economy
emailNoSend alerts by email. Empty keeps the account's setting.
seatsNoSeat numbers to watch.
originYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
seat_typeNoWatch every open seat of this kind instead of naming seats.
depart_dateYesYYYY-MM-DD.
destinationYesA 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places.
flight_numberYesAirline code and number, no space.
seats_togetherNoAlert only when this many seats are open together in one row, 2-6.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoManage on saved-seats page
cabinNoCabin tracked, or list when several
fieldNoOn unknown_place: which argument (origin, destination, ...)
alertsNoPlain-words description of alerts
flightNoflight_number, origin, destination, departure_time, arrival_time, aircraft, airline
statusNotracking | error | sign_in_required
messageNoError or sign-in message from the server wrapper
trackedNoseats, seat_type, specific_seats, seats_together, open_now
channelsNoAlert channels on the record: email, text (booleans)
saved_urlNoslicktrip.com saved-seats page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
tracking_keyNoSeat tracking key: route;departure_time;flight_number
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
merged_with_existingNoAdded to an existing seat alert

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety and idempotency profile is covered. The description adds genuine context beyond that: alerts are delivered to the account's channels when a watched seat opens, which tells the agent what the tool actually does over time.

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?

Two sentences, front-loaded with the action and purpose. The first sentence is long but each clause (modes, seats_together option) carries information; the second earns its place by describing alert delivery. No padding.

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?

For a ten-parameter tracking-creation tool with an output schema, the description covers the action, the confirmation precondition, the seat-selection modes, and the alert behavior. Return values need not be described since an output schema exists. Minor gap: no explicit relationship to sibling tracking tools.

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 the schema already documents all ten parameters including seat naming, seat_type, and seats_together. The description restates seats/seat_type/seats_together in prose but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 states a specific verb and resource: 'start seat alerts on one flight,' which distinguishes creation from stop_tracking_seats and update_seat_tracking by the word 'start.' It does not name a sibling explicitly, so it falls short of the 5 reserved for explicit sibling differentiation.

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?

It gives an explicit precondition ('after the traveler confirms') and describes the two watch modes (named seats vs seat type), which is clear context. However, it never routes the agent away from seat_availability or toward update_seat_tracking, and offers no when-not guidance, so the usage story remains implied rather than complete.

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

update_accountUpdate the accountA
Idempotent
Inspect

Use to change the display name, or the default alert channels (email, text) for new alerts, optionally applied to everything already watched. Phones are verified on the site, not here. Only the fields given change. Confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe traveler's display name.
textNoText alerts on new alerts by default; needs a verified phone.
emailNoEmail alerts on new alerts by default.
apply_to_allNoAlso set these channels on every alert already watched.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
nameNoDisplay name after the update
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNoupdated | error | sign_in_required
appliedNoHandler's per-type apply-to-all result, when returned
messageNoError or sign-in message from the server wrapper
channelsNo{email: boolean, text: boolean} stored default channels
manage_urlNoslicktrip.com profile page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
applied_to_allNoChannels pushed onto existing trackings
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
text_not_enabledNoText asked but no verified phone

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=true, so the safety profile is covered. The description adds real value beyond them: 'Only the fields given change' clarifies partial-update semantics, 'Phones are verified on the site, not here' discloses a prerequisite path, and 'Confirm first' is a behavioral instruction absent from structured fields.

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?

Four short sentences, front-loaded with the actionable scope and with zero filler. 'Confirm first.' is clipped and slightly ambiguous on its own, but it is placed last where it functions as a closing instruction.

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?

An output schema exists, so return values need no explanation, and with annotations covering safety the description supplies the remaining essentials: editable fields, partial-update behavior, verification prerequisite, and a confirmation cue. It does not cover error behavior or permission requirements, which is the only real gap.

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 all four parameters are already documented, and the description largely restates them ('default alert channels (email, text)', 'applied to everything already watched'). It adds the framing that channels apply to new alerts by default, but no syntax, defaults, or edge-case behavior beyond the schema, so the baseline 3 holds.

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?

States a specific verb and resource ('change the display name, or the default alert channels') and enumerates exactly which account fields are editable. Read against siblings like update_bucket_list and update_flight_tracking, an agent can immediately tell this one mutates account-level name/alert preferences rather than trip data.

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?

'Use to change...' and 'Confirm first.' set clear usage context, and 'Phones are verified on the site, not here' rules out an adjacent action an agent might otherwise attempt. There is no explicit when-not or named alternative (e.g., get_account for reads), but the operating context is unambiguous.

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

update_bucket_listUpdate a bucket listA
DestructiveIdempotent
Inspect

Use to edit a bucket list: the price bar, months or date window, nights, stops, airlines, preferred weekdays, name, guests, stars, or channels. Only the fields given change; a changed search resets the deals found so far. Confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoA new label for the list.
textNoSend alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting.
emailNoSend alerts by email. Empty keeps the account's setting.
adultsNoHotel lists: adults, 1-6.
monthsNoMonths to watch, as names or YYYY-MM. Give this OR start_date + end_date.
airlinesNoOnly these marketing carriers, as IATA codes or names.
end_dateNoYYYY-MM-DD.
bucket_idYesThe list's bucket_id from list_bucket_lists.
max_stopsNoMost stops allowed: 0 nonstop, 1, or 2.
min_starsNoHotel lists: lowest star class, 1-5.
max_nightsNoFlight lists: longest trip. Hotel lists: the stay length.
min_nightsNoFlight lists: shortest trip. Hotel lists: the stay length.
start_dateNoYYYY-MM-DD.
depart_daysNoFlight lists: only depart on these weekdays.
return_daysNoFlight lists: only return on these weekdays.
clear_windowNoRemove the date window and watch the months instead.
check_in_daysNoHotel lists: only check in on these weekdays.
max_price_usdNoThe price bar, USD: per traveler for a flight list (total when price_is_total), per night for a hotel list.
price_is_totalNoFlight lists: max_price_usd is the total for all travelers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
kindNo"flight" or "hotel"
nameNoThe bucket's name (pre-update record)
stayNoHotel only: location, hotel_name, nights, adults
fieldNoOn unknown_place: which argument (origin, destination, ...)
routeNoFlight only: origin, destination, names, trip_type, cabin, travelers
statusNoupdated | error | sign_in_required
changedNoFields sent to the update handler, site vocabulary (price, stops, preferredMonths, ...)
messageNoError or sign-in message from the server wrapper
bucket_idNoThe updated bucket list id
manage_urlNoslicktrip.com saved buckets page link
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
display_nameNoName as the card shows it
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true; the description adds the non-obvious side effect that changing the search discards deals found so far, which is genuinely useful beyond the annotations. A confirmation requirement is also surfaced. It does not detail permissions or the response shape.

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?

Front-loaded with the action and a compact enumeration, then two short constraint sentences. Every sentence earns its place; the field enumeration is slightly long but substitutes for scanning the schema.

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?

With an output schema present and rich annotations, the description's job is mostly update semantics and side effects, both of which it covers. Missing only explicit routing to sibling tools, which is minor given the dense schema.

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 coverage is 100% across 19 parameters, with rich per-field descriptions (units, ranges, flight vs hotel applicability), so the baseline is 3. The description's field list ('price bar, months or date window, nights, stops, airlines, preferred weekdays, name, guests, stars, channels') broadly maps to but does not enrich the schema, and 'guests' loosely corresponds to the 'adults' property.

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?

States a specific verb (edit) and resource (bucket list) and enumerates the editable facets, so the agent knows exactly what this tool mutates. It does not explicitly differentiate from the add_*_bucket_list siblings, relying on 'edit' to imply an existing list, which keeps it just short of a 5.

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?

Gives clear operating context: only supplied fields change, a changed search resets prior deals, and 'Confirm first' signals a prerequisite. It does not name sibling alternatives (e.g., use add_flight_bucket_list to create), so it stops at 4.

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

update_flight_trackingUpdate flight alert settingsA
Idempotent
Inspect

Use to change how a tracked route alerts: the alert rule, a target price, or the email and text channels. Only the fields given change. Confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSend alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting.
emailNoSend alerts by email. Empty keeps the account's setting.
alert_ruleNoWhen to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead.
search_keyYesThe route's search_key from list_tracked_flights.
target_price_usdNoAlert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoText alerts need a verified phone
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNoupdated | error | sign_in_required
messageNoError or sign-in message from the server wrapper
channelsNo{email: boolean, text: boolean} stored channels
manage_urlNoslicktrip.com saved-flights page link
search_keyNoThe updated route's search key
alerts_whenNoWhen alerts fire, from the alert preference
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
text_not_enabledNoText asked but no verified phone
text_unconfirmedNoCould not confirm text-alert status

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds two pieces of context the annotations do not: that omitted fields are preserved, and that user confirmation is required before applying. It omits error behavior for an unknown search_key, keeping it short of a 5.

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?

Three short sentences, front-loaded with purpose, followed by the partial-update rule and the confirmation requirement. No filler; every clause carries information.

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?

With an output schema present, return values need no explanation, and annotations cover idempotency and safety. The description supplies the partial-update and confirmation semantics, but does not signal the prerequisite that the route must already be tracked or point to track_flight/stop_tracking_flight as the alternatives.

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 the schema already documents search_key, the email/text flags, alert_rule enum values, and the target_price_usd total semantics. The description only names the categories of fields in prose, adding no syntax or constraint detail beyond what the schema provides; baseline 3 is correct.

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 states a specific verb and resource ('change how a tracked route alerts') and enumerates the mutable surfaces (alert rule, target price, email/text channels). It clearly distinguishes updating an existing tracked route from the sibling tools that create or remove one, though it never names those siblings explicitly.

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?

'Only the fields given change' and 'Confirm first' give real operational guidance about partial updates and confirmation, which is more than most definitions offer. However, there is no explicit when-to-use guidance relative to siblings like track_flight (add) or stop_tracking_flight (remove), so usage context is only implied.

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

update_hotel_trackingUpdate hotel alert settingsA
Idempotent
Inspect

Use to change how a tracked stay alerts: the alert rule, a target price, the email and text channels, or its name. Only the fields given change. Confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoRename the stay, as it appears on the saved-hotels page.
textNoSend alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting.
emailNoSend alerts by email. Empty keeps the account's setting.
alert_ruleNoWhen to alert: lowest = only a new low, any = every price move, none = off. Leave empty for the default, or give target_price_usd instead.
tracking_idYesThe stay's tracking_id from list_tracked_hotels.
target_price_usdNoAlert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
nameNoNew stay name if renamed
noteNoText alerts need a verified phone
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNoupdated | error | sign_in_required
messageNoError or sign-in message from the server wrapper
channelsNo{email: boolean, text: boolean} stored channels
manage_urlNoslicktrip.com saved-hotels page link
alerts_whenNoWhen alerts fire, from the alert preference
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
tracking_idNoThe updated stay tracking id
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
text_not_enabledNoText asked but no verified phone
text_unconfirmedNoCould not confirm text-alert status

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the mutation/safety profile is covered. The description adds meaningful context beyond them: 'Only the fields given change' clarifies partial-update semantics, and 'Confirm first' signals a required user-confirmation step. It stops short of noting permission needs or the response shape.

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?

Two tight sentences with zero filler. The editable-field enumeration is front-loaded and the partial-update plus confirmation constraints follow immediately, so an agent gets the essentials in the first read.

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?

With an output schema present, return values need not be described, and the annotations cover the safety/idempotency profile. The partial-update rule and confirmation requirement fill the remaining gaps for a 6-param mutation tool, though permission requirements and error behavior are left unstated.

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 the schema already documents every parameter including the nuances of alert_rule vs target_price_usd and the verified-phone requirement for text. The description's field list merely mirrors the schema and adds no format or constraint detail, so the baseline 3 applies.

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?

States a specific verb (change) and resource (how a tracked stay alerts), and enumerates exactly which attributes are editable: alert rule, target price, email/text channels, name. This cleanly separates it from the siblings track_hotel (create), stop_tracking_hotel (delete), and update_flight_tracking/update_seat_tracking (different resource).

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?

Establishes clear context ('Use to change how a tracked stay alerts') and adds a behavioral usage instruction ('Confirm first'). However, it never names alternatives or states when NOT to use this tool (e.g. use track_hotel to start tracking, stop_tracking_hotel to end it), leaving that routing to inference.

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

update_seat_trackingUpdate seat alert settingsA
Idempotent
Inspect

Use to pause or resume a seat alert, or change its seats-together rule or channels. To watch different seats call track_seats again (it adds to the alert). Only the fields given change. Confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoSend alerts by text message. Needs a verified phone on the SlickTrip account; empty keeps the account's setting.
emailNoSend alerts by email. Empty keeps the account's setting.
alerts_onNofalse pauses the alert, true resumes it.
tracking_keyYesThe alert's tracking_key from list_tracked_seats.
seats_togetherNoAlert only when this many seats are open together, 2-6; 0 clears the rule.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoOn an error: a machine-readable kind, e.g. unknown_place
noteNoChange seats via track_seats
fieldNoOn unknown_place: which argument (origin, destination, ...)
statusNoupdated | error | sign_in_required
messageNoError or sign-in message from the server wrapper
alertMethodNo{email, text} if channels changed
suggestionsNoOn unknown_place: places to offer the traveler, each with code, name, kind (airport, all airports in the city, nearby airport), city, country
tracking_keyNoThe updated seat alert key
seatsTogetherNoSeats-together count if changed
places_assumedNoPlace names this call resolved on its own, e.g. 'Portland = Portland, OR (PDX)'; tell the traveler
alertPreferenceNo"any" (on) or "none" (off) if changed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavior: partial-update semantics ('Only the fields given change') and a confirmation requirement ('Confirm first'). It stops short of stating what happens with an invalid tracking_key or whether unset channels persist.

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?

Three short sentences with zero filler. The core mutation action is front-loaded, the alternative is second, and the constraint ('Only the fields given change', 'Confirm first') closes it out.

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?

With an output schema present the description needn't explain returns, and annotations carry the safety profile. It covers mutation semantics, confirmation, and the sibling alternative, leaving only edge cases (invalid key handling, pause vs. stop_tracking_seats) uncovered.

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 100% and each parameter is well documented, so the baseline is 3. The description adds a small amount beyond the schema by grouping text/email as 'channels' and stating the overall partial-update contract, which is not stated anywhere in the per-parameter descriptions.

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?

Names a specific verb set (pause, resume, change) on a specific resource (seat alert) and enumerates the mutable aspects (seats-together rule, channels). It also explicitly distinguishes itself from the sibling track_seats, telling the agent that watching different seats is a different tool's job.

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?

Gives an explicit alternative and condition: 'To watch different seats call track_seats again (it adds to the alert).' It also flags a prerequisite action ('Confirm first'). It does not, however, address when to use this versus the sibling stop_tracking_seats, so pausing versus deleting an alert is left to inference.

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. 12 tool updates
    • Changedadd_flight_bucket_list4 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
    • Changedflight_lookup4 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
    • Changedhandoff_link8 fields changed
      • changedInput schema / $defs / Leg / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / $defs / Leg / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / $defs / Leg / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / $defs / Leg / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK) or a city code for all its airports (NYC, LON, ROM); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK) or a city code for all its airports (NYCA, LOND, ROME); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places."
      • changedInput schema / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK) or a city code for all its airports (NYC, LON, ROM); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK) or a city code for all its airports (NYCA, LOND, ROME); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places."
      • changedInput schema / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
    • Changedprice_calendar4 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
    • Changedroute_airlines4 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
    • Changedsearch_flights8 fields changed
      • changedInput schema / $defs / Leg / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / $defs / Leg / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / $defs / Leg / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / $defs / Leg / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK) or a city code for all its airports (NYC, LON, ROM); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK) or a city code for all its airports (NYCA, LOND, ROME); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places."
      • changedInput schema / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK) or a city code for all its airports (NYC, LON, ROM); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK) or a city code for all its airports (NYCA, LOND, ROME); up to 3 joined with _ (JFK_EWR). A clear place name works too. Unsure of the code: call find_places."
      • changedInput schema / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
    • Changedseat_availability4 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
    • Changedtrack_flight1 field changed
      • changedInput schema / properties / target_price_usd / description
        Previous value: -"Alert when the price goes under this, USD. Replaces alert_rule."New value: +"Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel."
    • Changedtrack_hotel1 field changed
      • changedInput schema / properties / target_price_usd / description
        Previous value: -"Alert when the price goes under this, USD. Replaces alert_rule."New value: +"Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel."
    • Changedtrack_seats4 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / destination / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
      • changedInput schema / properties / origin / description
        Previous value: -"A 3-letter airport code (JFK), or a city code that searches every airport in the city (NYC, LON, ROM, TYO). Up to 3 airports joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."New value: +"A 3-letter airport code (JFK), or a city code that searches every airport in the city (SlickTrip's 4-letter codes: NYCA New York, LOND London, ROME Rome, TYOA Tokyo). Up to 3 places joined with _ search them together (JFK_EWR). A place name works when one place clearly matches; otherwise the result is an unknown_place error listing suggestions. Unsure of the code: call find_places."
      • changedInput schema / properties / origin / examples
        Previous value: -[
        -  "JFK",
        -  "ROM",
        -  "JFK_EWR"
        -]New value: +[
        +  "JFK",
        +  "NYCA",
        +  "JFK_EWR"
        +]
    • Changedupdate_flight_tracking1 field changed
      • changedInput schema / properties / target_price_usd / description
        Previous value: -"Alert when the price goes under this, USD. Replaces alert_rule."New value: +"Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel."
    • Changedupdate_hotel_tracking1 field changed
      • changedInput schema / properties / target_price_usd / description
        Previous value: -"Alert when the price goes under this, USD. Replaces alert_rule."New value: +"Alert when the price goes under this, USD. Replaces alert_rule. It is the TOTAL: the whole trip for all travelers on a flight, the whole stay on a hotel."
  2. 35 tool updates
    • First observedadd_flight_bucket_list
    • First observedadd_hotel_bucket_list
    • First observedbooking_options
    • First observedfind_places
    • First observedflight_lookup
    • First observedget_account
    • First observedhandoff_link
    • First observedhotel_booking_options
    • First observedhotel_details
    • First observedhotel_price_calendar
    • First observedlist_bucket_lists
    • First observedlist_tracked_flights
    • First observedlist_tracked_hotels
    • First observedlist_tracked_seats
    • First observedprice_calendar
    • First observedrecent_deals
    • First observedremove_bucket_list
    • First observedroute_airlines
    • First observedsearch_flights
    • First observedsearch_hotels
    • First observedsearch_return_flights
    • First observedseat_availability
    • First observedshare_link
    • First observedshared_trip
    • First observedstop_tracking_flight
    • First observedstop_tracking_hotel
    • First observedstop_tracking_seats
    • First observedtrack_flight
    • First observedtrack_hotel
    • First observedtrack_seats
    • First observedupdate_account
    • First observedupdate_bucket_list
    • First observedupdate_flight_tracking
    • First observedupdate_hotel_tracking
    • First observedupdate_seat_tracking

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables finding and comparing cash and award flights, with seat maps and trip planning, ranking options by user-defined per-mile valuations.
    6
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables real-time flight fare searches across date ranges and multiple destinations, with historical price insights and booking links. Provides one-way and round-trip search tools through MCP.
    4
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources