Skip to main content
Glama

Server Details

Discover and compare live Paytm flights and buses by fare, schedule, operator, stops, and amenities.

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.1/5.0

Scored across 11 tools

Disambiguation4/5

The flight tools have real overlap — get_fare_family, get_flight_details, and get_flight_review all deal with fares/offer_tokens — but the descriptions laboriously delineate 'which fare' vs 'policy' vs 'review page', which mostly resolves the ambiguity. Four tools (apply_bus_summaries, combine_roundtrip_fare, get_bus_ai_summaries, relay_pulse_batch) are explicitly flagged as non-chat internals, which is unusually clean labeling but still adds surface an agent must mentally filter out.

Naming Consistency5/5

All 11 tools follow a consistent snake_case verb_noun pattern (search_, get_, combine_, apply_, relay_ + noun). The convention is applied uniformly with no camelCase or mixed-style deviations.

Tool Count4/5

11 tools is within a reasonable band, but 4 of them are internal/widget-only helpers (apply_bus_summaries, combine_roundtrip_fare, get_bus_ai_summaries, relay_pulse_batch) that are not callable chat tools, so the effective surface is closer to 7. The count is defensible for a two-vertical travel domain but slightly inflated by non-chat plumbing.

Completeness4/5

Flight and bus lifecycles are well covered (search, fare calendar, details, fare families, review, round-trip fare combination), and booking handoff is intentionally external. Minor gaps: no flight-side equivalent of get_bus_details' amenity/boarding detail, and rebooking/seat or ancillary operations are deliberately absent.

Available Tools

11 tools
apply_bus_summariesApply bus summariesA
Read-onlyIdempotent
Inspect

Legacy, app-only helper superseded by the widget's get_bus_ai_summaries path; it has no UI template and is not a chat tool. Takes summaries as [{tripRef, summary}] plus echoed search/buses/currency/followups/disclaimer; each summary is one 15–30 word differentiating line, and entries with nothing differentiating are omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
busesNo
searchNo
currencyNoINR
followupsNo
summariesYes
disclaimerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
busesNo
searchYes
currencyNo
followupsNo
moreBusesNo
sortRanksNo
summariesNo
disclaimerNo
summariesPendingNo
sourceCityOptionsNo
totalBeforeFilterNo
serverProcessingMsNo
needsDisambiguationNo
destinationCityOptionsNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and non-open-world, so the safety profile is covered. The description adds real contract detail beyond that: the [{tripRef, summary}] shape, the 15–30 word differentiating-line rule, and the omission rule for non-differentiating entries.

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 most decision-relevant fact (legacy/superseded), then the payload contract. Dense but each clause carries weight; 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?

An output schema exists, so return values need not be described, and the description covers lifecycle status, payload format, and omission behavior. For a legacy passthrough helper this is nearly sufficient; the only gap is the semantics of the echoed inputs.

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

Parameters4/5

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

Schema description coverage is 0% with 6 parameters, so the description carries the burden. It names the echoed fields (search/buses/currency/followups/disclaimer) and documents the required summaries array's item structure, which the schema leaves as opaque additionalProperties. It still doesn't clarify the meaning or defaults of the echoed fields.

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 identifies a specific verb+resource and, unusually, states its lifecycle status ('Legacy, app-only helper superseded by the widget's get_bus_ai_summaries path'), which lets an agent distinguish it from siblings. The mechanism of 'apply' (what actually happens when summaries are applied) is still a bit opaque, keeping it below 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?

It explicitly names the superseding alternative (get_bus_ai_summaries) and tells the agent this is app-only, has no UI template, and is not a chat tool, which is effective when-not guidance. It stops short of stating any condition under which this tool is the correct choice, so a 4 rather than a 5.

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

combine_roundtrip_fareCombine round-trip fareA
Read-onlyIdempotent
Inspect

Computes the combined round-trip fare for a chosen onward + return flight pair, reprices it, and returns the total plus a Paytm booking link. Called by the flight search widget when both legs are selected; it is not a chat tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
onward_offer_tokenYes
return_offer_tokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
taxesNo
currencyNo
bookingUrlNo
checkinUrlNo
onwardBaseNo
returnBaseNo
displayFareNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world. The description adds value beyond them: it discloses the reprice step and the response contents (total plus Paytm booking link), which the annotations do not. It does not mention latency or pricing-staleness caveats, so it stops short of 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?

Two tight sentences, front-loaded with what it does, then the trigger condition and the not-a-chat-tool boundary. 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?

Output schema exists, so return values need not be explained, yet the description still summarizes them usefully. The main gap is provenance of the two offer tokens and any failure/expiry behavior on reprice, which a widget-side tool with rich annotations can afford to omit.

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 0% and neither parameter has a description, but the semantics are largely self-evident from the names and from the description's 'chosen onward + return flight pair' framing. It still never says where these tokens come from, which an agent would need to obtain them.

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?

Specific verb (Computes the combined round-trip fare) plus resource (onward + return flight pair) and scope (reprices, returns total plus booking link). Clearly distinguished from siblings like search_flights or get_fare_family, which handle search and fare families rather than fare combination.

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?

States when it fires: 'Called by the flight search widget when both legs are selected.' The 'not a chat tool' note heads off an obvious misuse, but no alternative tools are named (e.g., fare_calendar or get_fare_family) for related fare questions.

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

fare_calendarFare calendarA
Read-onlyIdempotent
Inspect

Shows a Paytm fare calendar: the cheapest flight fare for every date in a range, so the traveller can spot the cheapest days to fly. Supports date-range queries and round trips. Origin and destination are IATA codes (e.g. DEL, BOM, DXB) and dates are ISO (YYYY-MM-DD). It answers cheapest dates/days and lists no individual flights; requests to show or find flights are served by search_flights. For a short window, the calendar is designed to appear below the search_flights card (sort_by='cheapest' on a date in that window) for the same route.

ParametersJSON Schema
NameRequiredDescriptionDefault
cabinNoeconomy | premium economy | business | first.economy
adultsNoAdult travellers (default 1).
originYesOrigin IATA code, e.g. "DEL". (Renamed from `source` on 2026-07-25 so both flight tools use the same word for the same thing; `search_flights` has always called it `origin`.)
infantsNoInfant travellers (default 0).
childrenNoChild travellers (default 0).
end_dateYesLast date of the range, YYYY-MM-DD.
trip_typeNo"oneway" or "roundtrip" (roundtrip also returns the return leg).oneway
start_dateYesFirst date of the range, YYYY-MM-DD.
destinationYesDestination IATA code, e.g. "DXB".

Output Schema

ParametersJSON Schema
NameRequiredDescription
statsNo
onwardNo
returnNo
searchYes
cheapestNo
currencyNo
holidaysNo
disclaimerNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, non-open-world behavior, so safety needs no restating. The description adds real value beyond them: the result is aggregate dates/days with no per-flight rows, and roundtrip requests also return a return leg. It stops short of noting data freshness/caching or how the range is bounded, which would be the 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?

Front-loaded with the core purpose, then the boundary against search_flights, then format conventions. Every sentence carries signal, though the final sentence about the calendar rendering below the search_flights card is UI-implementation detail that is somewhat tangential to invocation.

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 values, and it still clarifies that results are fares-per-date rather than flight lists. Combined with full schema coverage and clear read-only annotations, an agent has everything needed to call 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%, so the baseline is 3 and the schema already documents every field including defaults and the trip_type semantics. The description reinforces the IATA and ISO conventions, which is mildly useful but largely repeats what the schema states, so it does not exceed the baseline.

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 ('Shows a Paytm fare calendar: the cheapest flight fare for every date in a range') and draws the boundary against the sibling search_flights by stating it lists no individual flights. An agent can tell instantly which of the two flight tools to pick.

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 when-not guidance: 'requests to show or find flights are served by search_flights.' It also gives a concrete co-selection condition (short window, sort_by='cheapest' on a date in that window, same route), which tells the agent how this tool pairs with search_flights rather than replacing it.

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

get_bus_ai_summariesGet bus AI summariesB
Read-onlyIdempotent
Inspect

Internal: called by the bus-search widget after search results render. Prefers search_context from search_buses meta (card raw trips + universe index) so it skips a second search; falls back to re-fetching the route when that handoff is missing. Builds differentiating one-liners from the search payload only (no bus-details calls) via Azure OpenAI inside this server. Empty summary per card is valid when nothing differentiates. Both the ChatGPT and Claude widgets use this, and it renders no card of its own.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
cardsYes
sourceYes
sort_byNorecommended
bus_typeNo
max_priceNo
operatorsNo
time_slotNo
trip_refsYes
min_ratingNo
destinationYes
depart_afterNo
depart_beforeNo
paytm_assuredNo
boarding_pointNo
search_contextNo
source_city_idNo
destination_city_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
summariesNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive and closed-world. The description adds real behavior beyond that: it prefers search_context to skip a second search, falls back to re-fetching the route, makes no bus-details calls, uses Azure OpenAI in-server, and accepts empty summaries when nothing differentiates. That is substantive disclosure, though it omits failure/timeout behavior.

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?

It is a single dense paragraph with the most decision-relevant fact ('Internal') front-loaded and no filler sentences. Some clauses are long, but each carries information an agent would otherwise have to infer.

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

Completeness3/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, and the description conveys the call path and constraints well for a widget-driven tool. Still, for an 18-parameter interface with zero schema coverage, the near-total absence of parameter guidance leaves the invocation contract incomplete for anything but the widget that constructs the payload.

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

Parameters2/5

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

With 18 parameters and 0% schema description coverage, the description carries the full burden but only addresses one input: search_context (its source and purpose). The remaining 17 parameters (trip_refs, cards, sort_by, price/rating filters, city ids, etc.) are undocumented in both schema and description. It does not compensate for the coverage gap.

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

Purpose4/5

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

The description states a concrete verb+resource: it builds 'differentiating one-liners' from the search payload, and it names the siblings it relates to (search_buses for search_context, no bus-details calls). The core purpose is clear, though the 'Internal: called by the widget' framing and Azure OpenAI mechanics somewhat bury the headline. An agent can tell what it produces, just not instantly.

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

Usage Guidelines3/5

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

The 'Internal: called by the bus-search widget after search results render' line implicitly signals this is not for direct agent invocation, which is useful routing context. However, it never states an explicit when-to-use vs alternatives for an agent, nor a clean 'do not call directly' instruction. Usage 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.

get_bus_detailsGet bus detailsA
Read-onlyIdempotent
Inspect

Shows the Bus Details sheet for one trip from search_buses: amenities (iconified), pickup and dropping points with times, cancellation-policy slabs, rating, and a Book on Paytm Checkin CTA. This is the source for amenities, boarding/dropping points, cancellation policy, or details for a specific bus, including a tap on a bus card in the widget. The tripRef from the card is enough, without a new search_buses call. Required: trip_ref, the opaque tripRef from the prior search_buses card, matched exactly. Optional: summary (the card's AI summary line) and booking_url (the card's Paytm hand-off link). No seat map or payment in chat — booking continues on Paytm Checkin.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryNoOptional AI summary line already shown on the card footer — forwarded so the details sheet can show the same line (Figma).
trip_refYesOpaque trip token from search_buses (`tripRef` on each card).
booking_urlNoOptional Paytm Checkin seat URL from the search card (dweb).
booking_deeplinkNoOptional H5/mweb/app deeplink (`paytmtr://bus-seat`).

Output Schema

ParametersJSON Schema
NameRequiredDescription
ratingNo
busTypeNo
summaryNo
tripRefYes
currencyNo
operatorNo
amenitiesNo
seatsLeftNo
bookingUrlNo
ratingCountNo
boardingPointsNo
droppingPointsNo
bookingDeeplinkNo
cancellationNoteNo
ratingCountLabelNo
cancellationPolicyNo
cancellationSummaryNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real context beyond that: no seat map or payment happens here, and booking hands off to Paytm Checkin, which tells the agent not to attempt a booking flow in this tool.

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-loads what the sheet shows, then usage, then required/optional params, then scope limits. It is dense but each clause carries information; the CTA enumeration is slightly list-heavy for a description.

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, return values need not be described, and the description still covers the sourcing path (search_buses tripRef), the required vs optional inputs, and the downstream booking boundary. 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.

Parameters4/5

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

Schema coverage is 100%, so the 3-baseline applies, and the description earns above it by adding origin and matching semantics: trip_ref is 'from the prior search_buses card, matched exactly' and summary/booking_url are described as forwarded values from that card rather than free-form 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?

States a specific verb and resource — 'Shows the Bus Details sheet for one trip from search_buses' — and enumerates the payload (amenities, boarding/dropping points, cancellation slabs, rating, CTA). This clearly distinguishes it from search_buses and get_flight_details in the sibling set.

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 names when to use it ('source for amenities, boarding/dropping points, cancellation policy, or details for a specific bus, including a tap on a bus card in the widget') and gives a clarifying exclusion ('without a new search_buses call'). It also bounds scope with 'No seat map or payment in chat'.

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

get_fare_familyGet fare familyA
Read-onlyIdempotent
Inspect

Fare family / branded fare selector for ONE specific flight. Returns every fare the airline sells on that flight (Saver, Flexi, Flexi Plus, ...) with a single recommended pick and the reasons for it, scored on concrete rupee benefit per rupee of premium. It answers which fare to pick, fare families, branded fares, fare types, 'what do I get for more', or a comparison of fare options for a flight already chosen, typically straight after search_flights or when the traveller taps the fare CTA in the results widget. Policy detail (baggage, cancellation, reschedule) comes from get_flight_details instead. Input: that flight's offer_token from search_flights (plus return_offer_token for a round trip). TWO FORMS ARE VALID and the tool accepts either: the long signed token, or the SHORT REFERENCE from the same flight's offerRef field (about 30 characters, e.g. 'AkJMUkRFTGUJAABFEAAhRs3JWXw'). A short value is NOT a mistake and not an internal id: the widget's Book action deliberately passes the short form so a 400-character token stays out of the conversation, and it goes in as offer_token as given. Values are matched exactly, character for character: a retyped, abbreviated or merged value fails, the onward value is not valid for the return leg, and a round trip needs BOTH. They expire; a rejected value needs a fresh search_flights, not an old value. The selector's Continue (or a request to review / book the fare on screen) leads to get_flight_review: that follow-up arrives as a new user turn naming the offer_token and the selected fare's price, which are exactly get_flight_review's arguments, so the review page renders as its own card. The identifiers in hand are enough without a new search. One result covers every fare on that flight, so later questions about that flight's fares are answerable from it. A repeat call for the same flight re-renders the same widget above the answer; only a different flight needs a new call.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_tokenYesOffer token from search_flights — either the long signed token or the flight's short `offerRef`. Both resolve to the same offer; the widget's Book action sends the short form so a 400-character token never travels through the conversation.
return_offer_tokenNoOptional return-leg token for a round trip, in either of the same two forms.

Output Schema

ParametersJSON Schema
NameRequiredDescription
legsNo
cabinNo
faresNo
originNo
headingNo
currencyNo
tripTypeNo
fareCountNo
requestIdNo
offerTokenNo
solutionIdNo
compareRowsNo
destinationNo
flightNumberNo
pairBookingUrlsNo
recommendedFareNo
recommendedIndexNo
returnOfferTokenNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover readOnly, idempotent, non-destructive. The description adds significant behavioral context: tokens expire, exact character matching is required, a repeat call re-renders the same widget, and a rejected value needs a fresh search_flights. This goes well beyond the annotations.

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

Conciseness3/5

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

A single dense paragraph of roughly 350 words. It front-loads purpose well, but lacks bullet points or clear sections, making it hard to scan. Much of the detail is necessary for a complex token-based tool, but the presentation is not concise.

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. The description covers input token nuances, when to use, follow-up chaining to get_flight_review, and scope (one result covers every fare on that flight). It is complete for a complex tool with output schema backing.

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 3. The description adds value beyond the schema by clarifying the two accepted token forms (long signed token vs short offerRef), exact matching rules, and that a round trip needs both tokens. It enriches understanding but does not exhaustively specify every edge case.

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: 'Fare family / branded fare selector for ONE specific flight' and details the return (every fare, recommended pick, reasons). Clearly distinguishes from get_flight_details by noting policy detail comes from there.

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: which fare to pick, typically straight after search_flights or when the traveller taps the fare CTA. Names get_flight_details as the alternative for policy detail and explains the follow-up flow to get_flight_review.

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

get_flight_detailsGet flight detailsA
Read-onlyIdempotent
Inspect

Fare options and travel policies for one flight. Renders the Flight Details panel: multi-fare upsell comparison (Saver, Flexi, etc.) plus baggage, cancellation, and reschedule tabs. This is the source for flight details, fare options, upsell fares, baggage allowance, cancellation fees, reschedule fees, or policies for a specific flight, including right after search_flights or when the traveller taps Fare options in the widget. The search_flights summary carries none of these, and the identifiers it returned are enough without a new search. Input: offer_token for the chosen flight, listed in the prior search_flights summary and structured_content. Either form is valid: the long signed token, or that flight's short offerRef (about 30 characters). A short value is valid input, not an internal id. A round trip also takes return_offer_token. Values are matched exactly, character for character: a retyped, abbreviated or merged value fails, and the onward value is not valid for the return leg. They expire; a rejected value needs a fresh search.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_tokenYesOffer token from search_flights — either the long signed token or the flight's short `offerRef`. Both resolve to the same offer.
return_offer_tokenNoOptional return-leg token for a round trip, in either of the same two forms.

Output Schema

ParametersJSON Schema
NameRequiredDescription
faresNo
headerNo
onwardNo
originNo
returnNo
airlineNo
logoUrlNo
currencyNo
providerNo
tripTypeNo
minirulesNo
bookingUrlNo
checkinUrlNo
offerTokenNo
originCityNo
airlineNameNo
destinationNo
featureRowsNo
flightNumberNo
destinationCityNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description goes further by disclosing value-validation behavior that annotations cannot express: exact character-for-character matching, expiry, rejection requiring a fresh search, and that an onward token is invalid for the return leg. This is genuinely additive, though it omits any rate-limit or error-response detail.

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 usage before the input rules, and each sentence carries distinct information (contents, triggers, token forms, failure modes, expiry). It is dense and slightly long, but the only mild redundancy is restating that the search summary lacks these details.

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 values, and it instead covers what the schema cannot: when to call, which token forms are valid, round-trip handling, and expiry behavior. Nothing an agent needs to invoke 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?

Schema coverage is 100% so the baseline is 3, but the description adds real meaning beyond the schema: the short `offerRef` is ~30 characters, a short value is a legitimate input rather than an internal id, the two tokens resolve identically, and matching is exact so retyped or merged values fail. This clarifies the accepted value forms in ways the schema description only gestures at.

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 ('Fare options and travel policies for one flight') and enumerates the concrete contents (multi-fare upsell, baggage, cancellation, reschedule tabs). It also explicitly separates itself from search_flights by noting the summary 'carries none of these', so an agent can route 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?

Gives explicit trigger conditions: right after search_flights, or when the traveller taps Fare options in the widget, and states the identifiers already returned are enough without a new search. It effectively names search_flights as the prerequisite alternative rather than leaving it to inference.

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

get_flight_reviewGet flight reviewA
Read-onlyIdempotent
Inspect

Shows the Paytm flight details / review page for a selected fare: itinerary summary, fare breakdown (base, taxes, total), refundability, and a Book on Paytm Checkin link. The review call refreshes the fare before handoff. It is the step between choosing a fare and booking: requests to continue, review, see flight details for a chosen fare, or book after picking a fare in get_fare_family land here, including the fare-family Continue CTA, which posts a new user turn naming this tool. The review page comes before any handoff to Paytm. Input: offer_token from search_flights / get_fare_family (the long signed token or that flight's short offerRef; a short value is valid, not an internal id), matched exactly. A round trip also takes return_offer_token. Optional: price and fare_name of the branded fare the traveller picked (and return_price / return_fare_name on a round trip), used verbatim when the widget or the user named them, so review reprices THAT product (Saver vs Flexi have different Paytm ids). A review / continue / book request that names no fare or price still works from the offer_token already in hand, with price omitted: the tool fetches the recommended (best-value) fare from the fare family and reviews that. The total comes from this call, so no new search or fare-family call is needed to settle on a fare.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceNoSelected onward fare in INR from the fare-family Continue tap. Omit when the user asked to review without picking a fare — the tool then uses the recommended branded fare.
fare_nameNoOptional branded-fare name (Saver, Flexi, …) as a second match key when price is missing or no longer live.
trip_typeNo"oneway" (default) or "roundtrip". Set automatically when return_offer_token is present.oneway
offer_tokenYesOffer token from search_flights / get_fare_family — either the long signed token or the short `offerRef`.
return_priceNoSelected return fare in INR (round trip only).
return_fare_nameNoOptional return-leg fare name.
return_offer_tokenNoOptional return-leg token for a round trip.

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseNo
cabinNo
notesNo
stopsNo
taxesNo
totalNo
originNo
returnNo
airlineNo
logoUrlNo
currencyNo
durationNo
fareNameNo
perAdultNo
tripTypeNo
fareClassNo
arriveTimeNo
bookingUrlNo
checkinUrlNo
departDateNo
departTimeNo
inclusionsNo
originCityNo
refundableNo
taxBreakUpNo
airlineCodeNo
destinationNo
flightNumberNo
stopAirportsNo
convenienceFeeNo
refundableTextNo
returnFareNameNo
arriveDayOffsetNo
destinationCityNo
handBaggageOnlyNo

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/non-destructive, so the safety bar is already met. The description adds real behavioral context beyond that: the review call refreshes the fare before handoff, the total originates from this call, and the review page always precedes the Paytm handoff. It stops short of describing latency or failure modes, so 4 rather than 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?

Leads with what the page shows, then usage, then parameters — well front-loaded and dense with non-redundant facts. It is long, and the handoff-ordering point ('review page comes before any handoff') overlaps with the earlier 'refreshes the fare before handoff' sentence, costing it a point.

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 7-param tool with an output schema and full annotation coverage, the description supplies everything else an agent needs: workflow position, token semantics, the recommended-fare fallback, and round-trip handling. Return values can be left to the output schema.

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

Parameters5/5

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

Despite 100% schema coverage, the description adds meaning the schema does not: offer_token may be the long signed token or the short offerRef and "a short value is valid, not an internal id", it must be matched exactly, and omitting price makes the tool fetch the recommended best-value fare. It also explains price/fare_name are used verbatim and that Saver vs Flexi map to different Paytm ids.

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?

Specific verb+resource: shows the flight details/review page for a selected fare, and enumerates what it renders (itinerary, fare breakdown, refundability, Book link). It explicitly positions itself relative to siblings (after get_fare_family, before Paytm handoff), so an agent can distinguish it from get_flight_details and get_fare_family 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?

Names the exact triggering utterances ("continue, review, see flight details for a chosen fare, or book after picking a fare") and the fare-family Continue CTA that lands here. It also states what is NOT needed (no new search or fare-family call to settle on a fare), giving both when-to-use and when-not.

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

relay_pulse_batchRelay Pulse batchAInspect

Relays an already-built Paytm Signal SDK ingest POST to sig(-staging).paytm.com. Called only by pulse.js's fetch shim to work around the widget sandbox's CORS block; it is not a chat tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
bodyYes
methodYes
headersYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
bodyNo
statusYes
headersNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare the full safety profile (readOnly=false, openWorld=false, idempotent=false, destructive=false), so the bar is lower. The description usefully adds caller provenance (only the fetch shim), the CORS-workaround motivation, and that the payload is pre-built, but it discloses nothing about auth requirements, rate limits, or the effect of the relayed POST on the ingest endpoint.

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, purpose front-loaded, zero filler. The caller restriction and the 'not a chat tool' caveat both earn their place by preventing misuse.

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

Completeness3/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 described, and annotations cover the safety profile. The remaining hole is the four fully undocumented parameters on a generic relay tool, which the description does not address.

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

Parameters2/5

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

Schema description coverage is 0% across four required parameters, so the description carries the burden and largely fails it. 'Already-built ... POST' weakly implies url/method/headers/body are passed through verbatim, but no parameter is explained, and the openWorldHint=false annotation sits awkwardly beside a caller-supplied url.

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: it relays an already-built POST to sig(-staging).paytm.com, and explicitly says it is not a chat tool. That cleanly separates it from every bus/flight sibling, which an agent would otherwise have no reason to confuse it with.

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 both the when and the when-not: it is called only by pulse.js's fetch shim to bypass the widget sandbox's CORS block, and it is not for chat use. Nothing about selection 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.

search_busesSearch busesA
Read-onlyIdempotent
Inspect

Searches live Paytm bus routes and shows an interactive results card (operator, bus type, timings, rating, seats left, price). One-way, domestic, search only -- no seat selection or booking happens in chat. REQUIRED ARGS (same posture as search_flights): source, destination, and date are ALL mandatory. source/destination are free-text city names (e.g. 'Bengaluru', 'Hyderabad'); date is YYYY-MM-DD. There is no default date. The search runs for a date the traveller gave; a relative date they actually said ('tomorrow', 'next Friday') resolves to YYYY-MM-DD. When the date, source or destination is missing, the request is incomplete and the missing value comes from the traveller: a guessed today, tomorrow or weekend searches a day they did not ask for. With all three present, the traveller sees results only once the search runs. CITY DISAMBIGUATION: many Indian city names are ambiguous (e.g. 'Aurangabad' matches cities in Maharashtra, Bihar, Uttar Pradesh and West Bengal). An ambiguous name returns needsDisambiguation=true with sourceCityOptions / destinationCityOptions instead of a guess; the traveller picks one, and the search runs again with the chosen source_city_id / destination_city_id plus the original free-text source/destination. Filters: bus_type is 'AC' or 'Non-AC' when the traveller only named climate ('ac buses', 'non ac'), and a full type ('AC Sleeper', 'AC Semi-Sleeper', 'AC Seater', 'Non-AC Sleeper', 'Non-AC Semi-Sleeper', 'Non-AC Seater') only when they named a berth; a berth they did not name narrows the search wrongly. time_slot (early_morning 00:00-06:00, morning 06:00-12:00, afternoon 12:00-18:00, evening 18:00-24:00; no night slot), depart_after/depart_before (an hour or "HH:MM"; depart_before is exclusive, so 4-7 AM is 04:00 to 07:00, not 08:00). A window that crosses midnight is not one call. operators (list of operator names), max_price, min_rating, paytm_assured, boarding_point (matches by area name across all boarding points). Sort: recommended (default) | cheapest | fastest | earliest | rating. Invalid filter values are rejected with an error rather than silently ignored. Ratings below 15 reviews are not shown -- a missing rating means 'not enough reviews yet', not a bad bus. Named filters are sent to the Paytm wrapper (e.g. AC → is_ac) and the matching buses are shown. When those filters match nothing, the result says so; dropping the filters is the traveller's call, since an unfiltered search opens a second results card for the same query. Refining the search (only AC, cheaper, leaving after 9pm, better rated, etc.) is a new search with the changed filters and the same route and date, answered with new results rather than a pointer to the widget's chips. This tool lists a per-trip Paytm Checkin seat-layout URL as the dweb booking link (bookingUrl) and a matching seat deeplink for mweb/app (bookingDeeplink) -- there is no in-chat seat selection or payment; the traveller completes booking on Paytm Checkin. Questions about amenities, boarding/dropping points, or cancellation for a specific bus (or a tap on a card) are answered by get_bus_details with that card's tripRef, without a new search.

AI CARD SUMMARIES: the bus-search widget loads its one-line AI summaries itself (skeleton footers, then text or remove), so the results card is complete without another tool. Amenities and ratings come only from Paytm's data.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesTravel date as YYYY-MM-DD. Mandatory — do not invent a date if the traveller omitted it; ask them first.
sourceYesDeparture city name, e.g. "Bengaluru".
sort_byNorecommended | cheapest | fastest | earliest | rating.recommended
bus_typeNo"AC" or "Non-AC" when the traveller only named climate, or a full type ("AC Sleeper", "AC Semi-Sleeper", "AC Seater", "Non-AC Sleeper", "Non-AC Semi-Sleeper", "Non-AC Seater").
max_priceNoBudget cap in INR (per traveller, starting fare).
operatorsNoRestrict to these operator names.
time_slotNoearly_morning [00:00, 06:00) | morning [06:00, 12:00) | afternoon [12:00, 18:00) | evening [18:00, 24:00). "early morning" is accepted. "night" is rejected. There is no overnight slot.
min_ratingNoMinimum star rating (buses with under 15 ratings are excluded from this filter -- their rating isn't shown either).
destinationYesArrival city name, e.g. "Hyderabad".
depart_afterNoEarliest departure, e.g. 18 or "18:00" (inclusive). 7, "7", and "07:00" are the same instant.
depart_beforeNoExclusive end, e.g. 7 or "07:30". "4–7 AM" is depart_after="04:00", depart_before="07:00". "00:00" means the end of this day. A window whose end is earlier than its start (22:00 to 04:00) is rejected; this search does not cross midnight.
paytm_assuredNoOnly Paytm Assured buses.
boarding_pointNoRestrict to buses with a matching boarding-point area.
source_city_idNoResolved Paytm city id for source -- only pass this after a prior call returned needsDisambiguation with sourceCityOptions, using the id the traveller picked.
destination_city_idNoSame, for destination.

Output Schema

ParametersJSON Schema
NameRequiredDescription
busesNo
searchYes
currencyNo
followupsNo
moreBusesNo
sortRanksNo
summariesNo
disclaimerNo
summariesPendingNo
sourceCityOptionsNo
totalBeforeFilterNo
serverProcessingMsNo
needsDisambiguationNo
destinationCityOptionsNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description layers substantial extra behavior on top: ambiguity returns needsDisambiguation with city options instead of a guess, invalid filters are rejected rather than ignored, ratings under 15 reviews are hidden not negative, filters that match nothing open a second results card, and booking happens off-chat via bookingUrl/bookingDeeplink.

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?

Purpose and scope are front-loaded, and most sentences carry operational rules. It is nonetheless a dense block with some repetition (the no-booking constraint is stated twice, and city-disambiguation is restated at length), which costs it the top mark.

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, and the description still covers the tricky edge cases: disambiguation re-call with source_city_id/destination_city_id, filter rejection, empty-filter results, and where booking completes. Nothing an agent needs to invoke 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?

With 100% schema coverage the baseline is 3, but the description adds decision rules the schema does not encode -- notably that bus_type should stay at climate level unless the traveller named a berth ('a berth they did not name narrows the search wrongly') and the exclusive end / no-midnight-crossing semantics for departure windows.

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?

Opens with a specific verb+resource ('Searches live Paytm bus routes') and enumerates the result-card contents, plus an explicit scope statement ('One-way, domestic, search only -- no seat selection or booking'). It is clearly distinguishable from siblings like search_flights (same posture, different domain) and get_bus_details (per-trip questions).

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: get_bus_details answers per-bus amenities/boarding/cancellation questions 'without a new search', while refining filters is 'a new search with the changed filters and the same route and date'. It also states the mandatory-args precondition and that missing values must come from the traveller, not a guess.

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

Searches live flights on Paytm and shows an interactive results card (airlines, logos, timings, stops, fares). Origin and destination are IATA codes (e.g. DEL, BOM, DXB) and dates are ISO (YYYY-MM-DD). A round trip uses trip_type='round_trip' with return_date. Filters: non_stop, airlines, max_price, time_slot, refundable; sort_by: best, cheapest or fastest. This is the tool for requests to show, find or list flights (e.g. 'cheapest flights next weekend', 'flights this Saturday', 'show me flights HYD to BLR'); fare_calendar on its own covers cheapest dates and lists no flights. It needs one concrete departure date: a relative date the traveller stated ('tomorrow', 'next Friday') resolves to YYYY-MM-DD for the call, and the traveller sees results only once the search runs. TIME WINDOWS: time_slot is one same-day bucket (early_morning 00:00-06:00, morning 06:00-12:00, afternoon 12:00-18:00, evening 18:00-24:00; there is no night slot) and applies to the OUTBOUND leg only. A narrower ask than a bucket ('between 6 and 9 am', 'after 9pm', 'around 6:30') maps to depart_after / depart_before (an hour or "HH:MM"; depart_before is exclusive, so 4-7 AM is 04:00 to 07:00). A window that crosses midnight is not one call. The RETURN leg of a round trip uses return_time_slot and return_depart_after / return_depart_before, so 'leave 6-9am, come back 7-10pm' is depart_after=6, depart_before=9, return_depart_after=19, return_depart_before=22. A bucket wider than a stated window is an approximation, and the traveller is told when one is used. AIRPORTS: results contain only the exact airports requested. Nearby-airport options (e.g. DXN Noida or HDO Hindon for DEL, NMI for BOM, AUH/SHJ for DXB) are excluded server-side and counted in search.excludedAlternateAirports, which matters when the traveller might want them; each flight is from the airport it actually uses, not from a nearby city. BUDGET: for a round trip, max_price is the COMBINED both-legs total, not per leg (search.maxPriceScope confirms which). Every applied filter is echoed under structured_content.search (timeSlot, returnTimeSlot, departAfter/Before, returnDepartAfter/Before, maxPrice, airlines, refundable), so whether a constraint was met, or could not be, is readable from the result. Invalid filter values are rejected with an error rather than silently ignored. Domestic round trips come back only as schedule-valid pairs (no overlap between legs, and ≥2 hours between onward arrival and return departure), to be compared on the traveller's preferences (price, airline, timing). International round trips come back as Paytm's pre-stitched combinations; free onward×return mixes are not valid itineraries. Refining the current results (morning/evening/afternoon departures, non-stop only, fastest, refundable) is a new search with the changed filters and the same route, date and passengers; cheaper dates come from fare_calendar. The card's suggestion chips send exactly such a request as a new turn, so a refine request is answered with new results rather than text suggestions or a pointer to the chips. For a short window (a weekend or a few days), the results card for one concrete date in that window (the Sunday or last day when none is preferred), sorted cheapest, is designed to appear above fare_calendar for the same window: search first, calendar second. Results carry summary fares only, without branded fare families or baggage/cancellation/reschedule policies. Those are keyed by the signed offerToken in this result: get_fare_family answers WHICH FARE to buy (fare families, Saver vs Flexi, what more money buys); get_flight_details answers POLICY (baggage, cancellation, reschedule rules).

ParametersJSON Schema
NameRequiredDescriptionDefault
cabinNoeconomy | premium economy | business | first (default economy).economy
originYesDeparture IATA code, e.g. "DEL".
infantsNoNumber of infant travellers (default 0).
sort_byNobest | cheapest | fastest (default cheapest).cheapest
airlinesNoRestrict to these airline names or codes, e.g. ["IndiGo","6E"].
childrenNoNumber of child travellers (default 0).
non_stopNoOnly non-stop flights.
max_priceNoBudget cap in INR. For one_way this is the per-flight fare; for round_trip it is the COMBINED both-legs total.
time_slotNoOUTBOUND departure bucket: early_morning [00:00, 06:00) | morning [06:00, 12:00) | afternoon [12:00, 18:00) | evening [18:00, 24:00). Applies to the outbound leg only. "early morning" is accepted. "night" is rejected. An unrecognised value is rejected, not ignored.
trip_typeNo"one_way" or "round_trip" (round_trip needs return_date).one_way
passengersNoNumber of adult travellers (default 1).
refundableNoOnly refundable fares.
destinationYesArrival IATA code, e.g. "DXB".
return_dateNoReturn date YYYY-MM-DD (required for round_trip).
depart_afterNoEarliest outbound departure hour, e.g. 6 or "06:00" (inclusive). Use with depart_before for a narrow window that the coarse time_slot buckets cannot express.
depart_beforeNoExclusive end — "09:00" means the last acceptable departure is 08:59. 9 and "09:00" are the same instant. "09:30" keeps 09:15. A window whose end is earlier than its start is rejected; this search does not cross midnight.
departure_dateYesOutbound date as YYYY-MM-DD.
return_time_slotNoSame buckets, for the RETURN leg of a round trip. Omit to leave the return leg unfiltered by time.
return_depart_afterNoEarliest RETURN departure hour, e.g. "19:00".
return_depart_beforeNoLatest RETURN departure hour, exclusive.

Output Schema

ParametersJSON Schema
NameRequiredDescription
searchYes
flightsYes
currencyNo
followupsNo
sortRanksNo
disclaimerNo
flightPairsNo
moreFlightsNo
returnFlightsNo
serverProcessingMsNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantive behavior: nearby airports excluded server-side and counted in search.excludedAlternateAirports, invalid filter values rejected with an error, round-trip pair validity rules (no overlap, ≥2h buffer), international itineraries only as pre-stitched combos, and that every filter is echoed in structured_content.search.

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-loads purpose and filters before deep sections, and nearly every sentence carries actionable constraint detail (buckets, airports, budget, refinement). It is nonetheless very long and could be tightened, with some redundancy between the schema descriptions and the prose transport of the same rules.

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 restated; the description instead covers the complex behaviors an agent needs — date resolution, time-window mapping, airport exclusion, budget scope, and refinement semantics. Nothing material for correct invocation is missing.

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

Parameters5/5

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

Schema coverage is 100% (baseline 3), but the description adds real meaning beyond it: time_slot buckets with no night slot and outbound-only scope, depart_before exclusivity with worked examples, midnight-crossing rule, return-leg equivalents, and that max_price is the COMBINED both-legs total on round trips.

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?

Opens with a specific verb+resource+output: 'Searches live flights on Paytm and shows an interactive results card (airlines, logos, timings, stops, fares).' It explicitly claims the 'show/find/list flights' intent and distinguishes itself from fare_calendar, get_fare_family, and get_flight_details, so an agent can route 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 trigger phrasing ('show me flights HYD to BLR'), an explicit exclusion ('fare_calendar on its own covers cheapest dates and lists no flights'), and named alternatives for fare-family and policy questions. It also states that refining results is a new search with changed filters, not a pointer to suggestion chips.

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. 11 tool updates
    • First observedapply_bus_summaries
    • First observedcombine_roundtrip_fare
    • First observedfare_calendar
    • First observedget_bus_ai_summaries
    • First observedget_bus_details
    • First observedget_fare_family
    • First observedget_flight_details
    • First observedget_flight_review
    • First observedrelay_pulse_batch
    • First observedsearch_buses
    • First observedsearch_flights

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables multi-modal travel planning for India, aggregating flights, trains, buses, cabs, and personal vehicles across 117 cities with multi-leg routing and weighted scoring.
    2 npm
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Search flights, compare prices, check visas, look up airports, get travel advisories through a single endpoint.
    -
  • A
    license
    B
    quality
    A
    maintenance
    Official MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.
    12
    41
    212 npm
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources