← WebMCP Directory

Tool tree

replan-phi.vercel.app

Travel & EventsTools verified
Website
Replan
Explore capabilities
    pingAction

    Connectivity smoke test for this page's agent tool channel. Takes no required arguments (optionally pass a short echo string) and returns { ok, pong, echo, received_at_utc }.

    View tool JSON
    {
      "name": "ping",
      "kind": "act",
      "impl": "imperative",
      "description": "Connectivity smoke test for this page's agent tool channel. Takes no required arguments (optionally pass a short echo string) and returns { ok, pong, echo, received_at_utc }.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "echo": {
            "type": "string",
            "description": "Optional text (max 200 chars) echoed back in the response."
          }
        },
        "additionalProperties": false
      }
    }
    search_flightsAnswer

    Search rebooking flights from Lima (LIM) after the cancellation. Required: destination — "MIA" (Miami) or "FLL" (Fort Lauderdale, ground-reachable). Optional filters, omit any to leave it unconstrained: arrive_before (ISO 8601 with UTC offset), max_price (USD), max_layover_hours. Returns cheapest flights first; empty results are valid — loosen a filter or try the other airport. Follow with hold_reservation(flight_id) to hold a result.

    View tool JSON
    {
      "name": "search_flights",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search rebooking flights from Lima (LIM) after the cancellation. Required: destination — \"MIA\" (Miami) or \"FLL\" (Fort Lauderdale, ground-reachable). Optional filters, omit any to leave it unconstrained: arrive_before (ISO 8601 with UTC offset), max_price (USD), max_layover_hours. Returns cheapest flights first; empty results are valid — loosen a filter or try the other airport. Follow with hold_reservation(flight_id) to hold a result.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string",
            "enum": [
              "MIA",
              "FLL"
            ],
            "description": "Destination airport code: MIA or FLL."
          },
          "arrive_before": {
            "type": "string",
            "description": "Arrive at or before this instant. ISO 8601 with UTC offset (Lima -05:00, Miami -04:00)."
          },
          "max_price": {
            "type": "number",
            "description": "Maximum total price in USD (> 0)."
          },
          "max_layover_hours": {
            "type": "number",
            "description": "Maximum total layover in hours (>= 0)."
          }
        },
        "required": [
          "destination"
        ],
        "additionalProperties": false
      }
    }
    hold_reservationSensitive Action

    Place a 15-minute hold on a flight found via search_flights, keeping the seat while the traveler decides. Input: { flight_id } (e.g. "FL-001"). Returns the hold’s expiry time. One active hold per flight: holding the same flight twice while the first hold is alive fails — either wait for it to expire or book with confirm_booking. Holds are simulated (no backend): they expire after 15 minutes wall-clock and do not survive a page reload.

    View tool JSON
    {
      "name": "hold_reservation",
      "kind": "transact",
      "impl": "imperative",
      "description": "Place a 15-minute hold on a flight found via search_flights, keeping the seat while the traveler decides. Input: { flight_id } (e.g. \"FL-001\"). Returns the hold’s expiry time. One active hold per flight: holding the same flight twice while the first hold is alive fails — either wait for it to expire or book with confirm_booking. Holds are simulated (no backend): they expire after 15 minutes wall-clock and do not survive a page reload.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "flight_id": {
            "type": "string",
            "description": "Flight id from search_flights results, e.g. \"FL-011\"."
          }
        },
        "required": [
          "flight_id"
        ],
        "additionalProperties": false
      }
    }
    update_constraintsAction

    Change the traveler’s rebooking constraints and re-search immediately — returns new results, not just an acknowledgment. Provide any subset: max_price (USD), max_layover_hours, preferred_time (ISO 8601 with UTC offset; reorders results by departure closest to that time; null clears it back to cheapest-first). Unmentioned constraints persist; {} re-runs with the current set. Returns { ok, constraints (complete effective set), count, results }. The page’s constraints and results update live.

    View tool JSON
    {
      "name": "update_constraints",
      "kind": "act",
      "impl": "imperative",
      "description": "Change the traveler’s rebooking constraints and re-search immediately — returns new results, not just an acknowledgment. Provide any subset: max_price (USD), max_layover_hours, preferred_time (ISO 8601 with UTC offset; reorders results by departure closest to that time; null clears it back to cheapest-first). Unmentioned constraints persist; {} re-runs with the current set. Returns { ok, constraints (complete effective set), count, results }. The page’s constraints and results update live.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "max_price": {
            "type": "number",
            "description": "New maximum total price in USD (> 0). Optional."
          },
          "max_layover_hours": {
            "type": "number",
            "description": "New maximum total layover in hours (>= 0). Optional."
          },
          "preferred_time": {
            "type": "string",
            "description": "Preferred departure instant, ISO 8601 with UTC offset (e.g. 2026-09-12T22:00:00-05:00). Reorders results by departure closeness."
          }
        },
        "additionalProperties": false
      }
    }
    confirm_bookingSensitive Action

    Book a flight that has an active hold from hold_reservation — this commits the rebooking and returns the final itinerary with a confirmation reference. Input: { flight_id }. No active hold → error with how to get one; expired hold → error saying when it lapsed. Calling again on an already-booked flight is safe: returns the same confirmation (idempotent). The page switches to the reservation-confirmed view.

    View tool JSON
    {
      "name": "confirm_booking",
      "kind": "transact",
      "impl": "imperative",
      "description": "Book a flight that has an active hold from hold_reservation — this commits the rebooking and returns the final itinerary with a confirmation reference. Input: { flight_id }. No active hold → error with how to get one; expired hold → error saying when it lapsed. Calling again on an already-booked flight is safe: returns the same confirmation (idempotent). The page switches to the reservation-confirmed view.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "flight_id": {
            "type": "string",
            "description": "Flight id with an active hold, e.g. \"FL-003\"."
          }
        },
        "required": [
          "flight_id"
        ],
        "additionalProperties": false
      }
    }
    search_hotelsAnswer

    Search hotels for the recovery stay. Required: city ("Miami" or "Fort Lauderdale"). Optional: near_airport ("MIA"/"FLL") and check_in + check_out (ISO 8601 with offset, whole nights) to price the stay and skip sold-out hotels. Cheapest first; empty results are valid.

    View tool JSON
    {
      "name": "search_hotels",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search hotels for the recovery stay. Required: city (\"Miami\" or \"Fort Lauderdale\"). Optional: near_airport (\"MIA\"/\"FLL\") and check_in + check_out (ISO 8601 with offset, whole nights) to price the stay and skip sold-out hotels. Cheapest first; empty results are valid.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "enum": [
              "Miami",
              "Fort Lauderdale"
            ],
            "description": "City: \"Miami\" or \"Fort Lauderdale\"."
          },
          "check_in": {
            "type": "string",
            "description": "Stay start. ISO 8601 with UTC offset (Miami -04:00). Provide together with check_out; stays are whole 24 h nights."
          },
          "check_out": {
            "type": "string",
            "description": "Stay end, after check_in by whole 24 h nights. ISO 8601 with UTC offset."
          },
          "near_airport": {
            "type": "string",
            "enum": [
              "MIA",
              "FLL"
            ],
            "description": "Nearest airport: \"MIA\" or \"FLL\" — the same airports the flight tools serve; independent of city."
          }
        },
        "required": [
          "city"
        ],
        "additionalProperties": false
      }
    }
    update_hotel_reservationSensitive Action

    Shift the check-in of the traveler’s existing hotel reservation. Input: { reservation_id, new_check_in }. Check-out moves to keep the same nights; price unchanged. Must not precede the confirmed flight’s arrival. Re-sending the current date is safe (idempotent).

    View tool JSON
    {
      "name": "update_hotel_reservation",
      "kind": "transact",
      "impl": "imperative",
      "description": "Shift the check-in of the traveler’s existing hotel reservation. Input: { reservation_id, new_check_in }. Check-out moves to keep the same nights; price unchanged. Must not precede the confirmed flight’s arrival. Re-sending the current date is safe (idempotent).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "reservation_id": {
            "type": "string",
            "description": "Reservation id, e.g. \"HTL-R001\"."
          },
          "new_check_in": {
            "type": "string",
            "description": "New stay start. ISO 8601 with UTC offset (Miami -04:00). Must not precede the confirmed flight’s arrival date."
          }
        },
        "required": [
          "reservation_id",
          "new_check_in"
        ],
        "additionalProperties": false
      }
    }
    book_ground_transportSensitive Action

    Book the airport-to-hotel ground leg once a flight is confirmed. Input: { type, pickup_time }. type: "taxi", "shuttle" (shared, cheapest), or "rideshare". Pickup must be 15 min to 8 h after the flight lands; route and price derive from the arrival airport and hotel zone. Re-booking replaces. Simulated.

    View tool JSON
    {
      "name": "book_ground_transport",
      "kind": "transact",
      "impl": "imperative",
      "description": "Book the airport-to-hotel ground leg once a flight is confirmed. Input: { type, pickup_time }. type: \"taxi\", \"shuttle\" (shared, cheapest), or \"rideshare\". Pickup must be 15 min to 8 h after the flight lands; route and price derive from the arrival airport and hotel zone. Re-booking replaces. Simulated.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "taxi",
              "shuttle",
              "rideshare"
            ],
            "description": "Vehicle: \"taxi\", \"shuttle\" (shared, cheapest), or \"rideshare\"."
          },
          "pickup_time": {
            "type": "string",
            "description": "Pickup at the arrival airport. ISO 8601 with UTC offset. Must be 15 min to 8 h after the confirmed flight lands."
          }
        },
        "required": [
          "type",
          "pickup_time"
        ],
        "additionalProperties": false
      }
    }
    notify_contactSensitive Action

    Compose a heads-up about the new arrival for someone meeting the traveler. Input: { contact, new_arrival_time }. contact: { name?, phone? | email?, relationship? } — phone (sms) or email required. SIMULATED: nothing is transmitted; the response shows what would have been sent.

    View tool JSON
    {
      "name": "notify_contact",
      "kind": "transact",
      "impl": "imperative",
      "description": "Compose a heads-up about the new arrival for someone meeting the traveler. Input: { contact, new_arrival_time }. contact: { name?, phone? | email?, relationship? } — phone (sms) or email required. SIMULATED: nothing is transmitted; the response shows what would have been sent.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "description": "Recipient: { name?, phone? | email?, relationship? } — provide a phone (sms) or an email.",
            "properties": {
              "name": {
                "type": "string"
              },
              "phone": {
                "type": "string"
              },
              "email": {
                "type": "string"
              },
              "relationship": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "new_arrival_time": {
            "type": "string",
            "description": "The arrival time to announce. ISO 8601 with UTC offset."
          }
        },
        "required": [
          "contact",
          "new_arrival_time"
        ],
        "additionalProperties": false
      }
    }
    calculate_total_costAction

    Running total across everything booked — flight, hotel, ground transport — checked against the budget update_constraints last set. Input: { items? } for a subset; omit for everything booked. Returns a per-item breakdown, the total, and budget fit.

    View tool JSON
    {
      "name": "calculate_total_cost",
      "kind": "act",
      "impl": "imperative",
      "description": "Running total across everything booked — flight, hotel, ground transport — checked against the budget update_constraints last set. Input: { items? } for a subset; omit for everything booked. Returns a per-item breakdown, the total, and budget fit.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "flight",
                "hotel",
                "transport"
              ]
            },
            "description": "Subset to total: \"flight\", \"hotel\", \"transport\". Omit for all booked items."
          }
        },
        "additionalProperties": false
      }
    }
    generate_itinerary_summaryAction

    One consolidated receipt of the recovery: flight, hotel, transport, notifications, and the total vs budget — plus what is still missing and which tool books it. Stale legs are flagged. Safe any time: partial trips return status "partial", never an error. No parameters.

    View tool JSON
    {
      "name": "generate_itinerary_summary",
      "kind": "act",
      "impl": "imperative",
      "description": "One consolidated receipt of the recovery: flight, hotel, transport, notifications, and the total vs budget — plus what is still missing and which tool books it. Stale legs are flagged. Safe any time: partial trips return status \"partial\", never an error. No parameters.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    search_flights_semanticAnswer

    Natural-language flight search over the same rebooking options as search_flights: describe what you want ("cheapest that lands early", "shortest layover", "red-eye is fine") and get matches ranked by semantic similarity via a live vector index. Falls back to errors-as-data if the index is unreachable.

    View tool JSON
    {
      "name": "search_flights_semantic",
      "kind": "answer",
      "impl": "imperative",
      "description": "Natural-language flight search over the same rebooking options as search_flights: describe what you want (\"cheapest that lands early\", \"shortest layover\", \"red-eye is fine\") and get matches ranked by semantic similarity via a live vector index. Falls back to errors-as-data if the index is unreachable.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free text (max 200 chars) describing the flight you want — price, timing, layovers, vibe. Not a structured filter."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      }
    }