accueil / serveurs / Recherche & Web / com.paytm.travel/discovery
com.paytm.travel/discovery
serveur MCP (Model Context Protocol) · Paytm Travel 3.4.8
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.paytm.travel/discovery est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.paytm.travel/discovery » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 10 outils
- combine_roundtrip_fare≈ 370 tokens
Computes the combined round-trip fare for a chosen onward + return flight pair, reprices it, and returns the total plus a Paytm booking link. Used by the flight results card when both legs are selected.
Paramètres, retour & exemple (2)
Paramètresonward_offer_token· string · requisreturn_offer_token· string · requis
Exemple d'appel{"name": "combine_roundtrip_fare", "arguments": {"onward_offer_token": "texte", "return_offer_token": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"taxes": "texte", "currency": "texte", "bookingUrl": "texte", "checkinUrl": "texte", "onwardBase": "texte", "returnBase": "texte", "displayFare": "texte"}} - fare_calendar≈ 1348 tokens
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.
Paramètres, retour & exemple (9)
Paramètrescabin· string · optionnel
economy | premium economy | business | first.adults· integer · optionnel
Adult travellers (default 1).origin· string · requis
Origin IATA code, e.g. "DEL".infants· integer · optionnel
Infant travellers (default 0).children· integer · optionnel
Child travellers (default 0).end_date· string · requis
Last date of the range, YYYY-MM-DD.trip_type· string · optionnel
"oneway" or "roundtrip" (roundtrip also returns the return leg).start_date· string · requis
First date of the range, YYYY-MM-DD.destination· string · requis
Destination IATA code, e.g. "DXB".
Exemple d'appel{"name": "fare_calendar", "arguments": {"origin": "texte", "end_date": "texte", "start_date": "texte", "destination": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"stats": "texte", "onward": [], "return": "texte", "search": {}, "cheapest": "texte", "currency": "texte", "holidays": [], "disclaimer": "texte"}} - get_bus_ai_summaries≈ 663 tokens
Builds one differentiating line for each bus on the results card, from the search payload already fetched (no bus-details calls), using Azure OpenAI inside this server. An empty line is valid when nothing stands out. Used by the bus results card after it renders; it renders no card of its own. It prefers the search_context that search_buses returned, so no second search is needed, and re-fetches the route only when that handoff is missing.
Paramètres, retour & exemple (18)
Paramètresdate· string · requiscards· array · requissource· string · requissort_by· string · optionnelbus_type· ? · optionnelmax_price· ? · optionneloperators· ? · optionneltime_slot· ? · optionneltrip_refs· array · requismin_rating· ? · optionneldestination· string · requisdepart_after· ? · optionneldepart_before· ? · optionnelpaytm_assured· boolean · optionnelboarding_point· ? · optionnelsearch_context· ? · optionnelsource_city_id· ? · optionneldestination_city_id· ? · optionnel
Exemple d'appel{"name": "get_bus_ai_summaries", "arguments": {"date": "texte", "cards": [], "source": "texte", "trip_refs": [], "destination": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"summaries": []}} - get_bus_details≈ 1240 tokens
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.
Paramètres, retour & exemple (4)
Paramètressummary· string · optionnel
Optional AI summary line already shown on the card, so the details sheet shows the same line.trip_ref· string · requis
Opaque trip token from search_buses (`tripRef` on each card).booking_url· string · optionnel
Optional Paytm Checkin seat URL from the search card (dweb).booking_deeplink· string · optionnel
Optional H5/mweb/app deeplink (`paytmtr://bus-seat`).
Exemple d'appel{"name": "get_bus_details", "arguments": {"trip_ref": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rating": "texte", "busType": "texte", "summary": "texte", "tripRef": "texte", "currency": "texte", "operator": "texte", "amenities": [], "seatsLeft": "texte", "bookingUrl": "texte", "ratingCount": "texte", "boardingPoints": [], "droppingPoints": []}} - get_fare_family≈ 1492 tokens
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.
Paramètres, retour & exemple (2)
Paramètresoffer_token· string · requis
Offer token from search_flights — either the long signed token or the flight's short `offerRef`. Both resolve to the same offer.return_offer_token· string · optionnel
Optional return-leg token for a round trip, in either of the same two forms.
Exemple d'appel{"name": "get_fare_family", "arguments": {"offer_token": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"legs": [], "cabin": "texte", "fares": [], "origin": "texte", "heading": "texte", "currency": "texte", "tripType": "texte", "fareCount": 1, "requestId": "texte", "offerToken": "texte", "solutionId": "texte", "compareRows": []}} - get_flight_details≈ 1460 tokens
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.
Paramètres, retour & exemple (2)
Paramètresoffer_token· string · requis
Offer token from search_flights — either the long signed token or the flight's short `offerRef`. Both resolve to the same offer.return_offer_token· string · optionnel
Optional return-leg token for a round trip, in either of the same two forms.
Exemple d'appel{"name": "get_flight_details", "arguments": {"offer_token": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"fares": [], "header": "texte", "onward": "texte", "origin": "texte", "return": "texte", "airline": "texte", "logoUrl": "texte", "currency": "texte", "provider": "texte", "tripType": "texte", "minirules": "texte", "bookingUrl": "texte"}} - get_flight_review≈ 1644 tokens
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.
Paramètres, retour & exemple (7)
Paramètresprice· ? · optionnel
Selected 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_name· string · optionnel
Optional branded-fare name (Saver, Flexi, …) as a second match key when price is missing or no longer live.trip_type· string · optionnel
"oneway" (default) or "roundtrip". Set automatically when return_offer_token is present.offer_token· string · requis
Offer token from search_flights / get_fare_family — either the long signed token or the short `offerRef`.return_price· ? · optionnel
Selected return fare in INR (round trip only).return_fare_name· string · optionnel
Optional return-leg fare name.return_offer_token· string · optionnel
Optional return-leg token for a round trip.
Exemple d'appel{"name": "get_flight_review", "arguments": {"offer_token": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"base": "texte", "cabin": "texte", "notes": [], "stops": "texte", "taxes": "texte", "total": "texte", "origin": "texte", "return": "texte", "airline": "texte", "logoUrl": "texte", "currency": "texte", "duration": "texte"}} - relay_pulse_batch≈ 223 tokens
Sends the results cards' interaction analytics to Paytm's first-party Signal ingest. The cards' analytics script calls this because the card sandbox cannot reach that ingest on its own. The server chooses the ingest endpoint and accepts a Signal analytics batch.
Paramètres, retour & exemple (2)
Paramètresbody· string · requisheaders· object · requis
Exemple d'appel{"name": "relay_pulse_batch", "arguments": {"body": "texte", "headers": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": 1}} - search_buses≈ 3561 tokens
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.
Paramètres, retour & exemple (15)
Paramètresdate· string · requis
Travel date as YYYY-MM-DD. Mandatory — do not invent a date if the traveller omitted it; ask them first.source· string · requis
Departure city name, e.g. "Bengaluru".sort_by· string · optionnel
recommended | cheapest | fastest | earliest | rating.bus_type· ? · optionnel
"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_price· ? · optionnel
Budget cap in INR (per traveller, starting fare).operators· ? · optionnel
Restrict to these operator names.time_slot· ? · optionnel
early_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_rating· ? · optionnel
Minimum star rating (buses with under 15 ratings are excluded from this filter -- their rating isn't shown either).destination· string · requis
Arrival city name, e.g. "Hyderabad".depart_after· ? · optionnel
Earliest departure, e.g. 18 or "18:00" (inclusive). 7, "7", and "07:00" are the same instant.depart_before· ? · optionnel
Exclusive 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_assured· boolean · optionnel
Only Paytm Assured buses.boarding_point· ? · optionnel
Restrict to buses with a matching boarding-point area.source_city_id· ? · optionnel
Resolved Paytm city id for source -- only pass this after a prior call returned needsDisambiguation with sourceCityOptions, using the id the traveller picked.destination_city_id· ? · optionnel
Same, for destination.
Exemple d'appel{"name": "search_buses", "arguments": {"date": "texte", "source": "texte", "destination": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"buses": [], "search": {}, "currency": "texte", "followups": [], "moreBuses": "texte", "sortRanks": "texte", "summaries": "texte", "disclaimer": "texte", "summariesPending": "texte", "sourceCityOptions": "texte", "totalBeforeFilter": "texte", "serverProcessingMs": "texte"}} - search_flights≈ 4486 tokens
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).
Paramètres, retour & exemple (20)
Paramètrescabin· string · optionnel
economy | premium economy | business | first (default economy).origin· string · requis
Departure IATA code, e.g. "DEL".infants· integer · optionnel
Number of infant travellers (default 0).sort_by· string · optionnel
best | cheapest | fastest (default cheapest).airlines· ? · optionnel
Restrict to these airline names or codes, e.g. ["IndiGo","6E"].children· integer · optionnel
Number of child travellers (default 0).non_stop· boolean · optionnel
Only non-stop flights.max_price· ? · optionnel
Budget cap in INR. For one_way this is the per-flight fare; for round_trip it is the COMBINED both-legs total.time_slot· ? · optionnel
OUTBOUND 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_type· string · optionnel
"one_way" or "round_trip" (round_trip needs return_date).passengers· integer · optionnel
Number of adult travellers (default 1).refundable· boolean · optionnel
Only refundable fares.destination· string · requis
Arrival IATA code, e.g. "DXB".return_date· ? · optionnel
Return date YYYY-MM-DD (required for round_trip).depart_after· ? · optionnel
Earliest 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_before· ? · optionnel
Exclusive 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_date· string · requis
Outbound date as YYYY-MM-DD.return_time_slot· ? · optionnel
Same buckets, for the RETURN leg of a round trip. Omit to leave the return leg unfiltered by time.return_depart_after· ? · optionnel
Earliest RETURN departure hour, e.g. "19:00".return_depart_before· ? · optionnel
Latest RETURN departure hour, exclusive.
Exemple d'appel{"name": "search_flights", "arguments": {"origin": "texte", "destination": "texte", "departure_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"search": {}, "flights": [], "currency": "texte", "followups": [], "sortRanks": "texte", "disclaimer": "texte", "flightPairs": "texte", "moreFlights": "texte", "returnFlights": "texte", "serverProcessingMs": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».