Fortrip

Overview

Search hotels, compare live offers and create orders with a payment link from any MCP client. Each tool matches a CLI command and an HTTP endpoint.

Endpoint

https://mcp.fortrip.ai/

Streamable HTTP with OAuth sign-in to a Fortrip account; no API key. Clients that only launch local commands can run npx -y fortrip mcp, a stdio bridge to this server with the same tools, instead. Setup for each client is in Installation.

Tools

ToolDescriptionAccess
search_hotelsSearch hotelsRead-only
get_hotelGet hotel detailsRead-only
get_hotel_offersGet live hotel offersRead-only
book_hotelCreate hotel order and payment linkCreates an unpaid order
get_orderGet orderRead-only
list_ordersList ordersRead-only
cancel_orderCancel orderCancels an order
pay_orderPay order by token or Alipay/WeChat PayPays an order
get_planning_guideGet hotel planning guideRead-only

Results and errors

  • Success: structuredContent is the full response object, the same as the HTTP API's, and every tool but get_planning_guide declares its outputSchema. content holds the answer as compact text for the model: one line per hotel, offer or order with its ids, full descriptions and policies, every note, and "not listed" or "unknown" written out. Some tools add blocks before or after it, so find a block by its type (text, image), not by its position. By tool:
Toolcontent
get_planning_guidecontent[0] is the planning guide, as Markdown.
search_hotelscontent[0] is the answer as compact text, and content[1] is the presentation hint: how to show hotels to the user.
get_hotelcontent[0] is the answer as compact text, and content[1] is the presentation hint: how to show hotels to the user.
get_hotel_offerscontent[0] is the answer as compact text, and content[1] is the presentation hint: how to show hotels to the user.
book_hotelcontent[0] is the answer as compact text.
get_ordercontent[0] is the answer as compact text.
list_orderscontent[0] is the answer as compact text.
cancel_ordercontent[0] is the answer as compact text.
pay_orderWhen the answer holds a live WeChat Pay code, content[0] is the WeChat Pay code as a PNG image, and content[1] is the answer as compact text, unless the image couldn't be fetched; otherwise content[0] is the answer as compact text. Find the blocks by type, not by position.
  • The hotel tools' presentation hint asks the model to show only what Fortrip returned, as cards where the client can draw them. A WeChat Pay code comes as an image when pay_order's answer holds a live one and the image could be fetched; the code and its link are in structuredContent either way.
  • An answer of book_hotel, get_order and list_orders that holds a payment.url also carries nextStep in structuredContent, and its text states the same rule: show the user the total and terms and wait for a clear yes before giving them the link.
  • Failure: isError: true with no structuredContent. content[0] says what happened and the next call to make; content[1] is the error envelope as JSON text.
  • Input is checked by Fortrip, not by the client's SDK, so an invalid argument answers invalid_request with the field at fault.
  • _meta["ai.fortrip/requestId"] carries the request id, and _meta["ai.fortrip/replayed"] marks an order answered again for the same details.

See Errors & limits.

On this page