← Files Trip CaptainARCHIVED FILE
.codex-plugin/plugin.json
12 KB · Nov 11, 2026 · 13:27 UTC
{
"name": "trip-captain",
"version": "0.1.1",
"description": "Compare indicative fares, schedules, and flight routes with your AI assistant.",
"interface": {
"displayName": "Trip Captain",
"shortDescription": "Search and compare flights",
"longDescription": "Compare indicative fares, schedules, and flight routes with your AI assistant.",
"developerName": "Trip captain",
"category": "Travel",
"defaultPrompt": [
"Find one-way business flights DXB to GVA on 2026-11-15 for one adult in AED.",
"Find return economy flights DXB to GVA, 2026-11-15 to 2026-11-22, for two adults.",
"Find nonstop economy flights DXB to LHR on 2026-11-20 for one adult."
],
"websiteURL": "https://tpc-mcp.tpconnects.online/docs",
"supportURL": "https://tpc-mcp.tpconnects.online/docs",
"privacyPolicyURL": "https://tpc-mcp.tpconnects.online/privacy",
"logo": "./assets/captain-logo.png",
"composerIcon": "./assets/captain-logo.png",
"termsOfServiceURL": "https://tpc-mcp.tpconnects.online/docs",
"capabilities": []
},
"mcpServers": "./.mcp.json",
"extensions": {
"com.openai": {
"review": {
"prompts": [
"Find one-way business flights from DXB to GVA on 2026-11-15 for one adult, in AED, with at most two stops. Show prices, baggage and change/cancellation rules.",
"Find return economy flights DXB to GVA, departing 2026-11-15 and returning 2026-11-22, for two adults in AED, allowing at most two stops each way.",
"Find nonstop one-way economy flights DXB to LHR on 2026-11-20 for two adults, one child aged 7 and one infant under 2. Quote in AED.",
"Search one-way business flights DXB to GVA on 2026-11-15 for one adult, only from supplier 1S, in USD, with at most two stops.",
"Find the cheapest available economy fare using the cheapest-per-cabin option for a one-way DXB to GVA trip on 2026-11-15, one adult, AED, at most two stops."
],
"test_cases": {
"positive": [
{
"description": "P1 \u2014 One-way business search. Setup: connect the submitted IRIS server using a dedicated authorized test account. Use a fresh conversation for each case. Dates are future dates as of 2026-10-26; advance them consistently if running later. Live availability and prices vary. ",
"prompt": "Find one-way business flights from DXB to GVA on 2026-11-15 for one adult, in AED, with at most two stops. Show prices, baggage and change/cancellation rules.",
"tools_triggered": "iris_search_flights",
"expected_behavior": "Call iris_search_flights with origin=DXB, destination=GVA, departureDate=2026-11-15, tripType=OW, returnDate=\"\", cabin=\"2\", adults=1, children=0, infants=0, currency=AED, maxStops=2, cheapestPerCabin=false, suppliers=\"\". Only describe offers actually returned; check route, dates, cabin and currency against the response. Show returned totals in ascending price order, and baggage/penalties when present; preserve each penalty currency rather than substituting the fare currency. Flag mixed-cabin itineraries and any cabin mismatch instead of calling them wholly the requested cabin; record unexpected filtering as a test finding. Label absent fields unavailable. Do not invent availability or bookings. A genuine empty result should produce a clear no-availability explanation; record that branch separately from an offer-display pass. Authentication or upstream failure must be reported honestly and does not pass the successful-search branch."
},
{
"description": "P2 \u2014 Return economy itinerary. Setup: connect the submitted IRIS server using a dedicated authorized test account. Use a fresh conversation for each case. Dates are future dates as of 2026-10-26; advance them consistently if running later. Live availability and prices vary. ",
"prompt": "Find return economy flights DXB to GVA, departing 2026-11-15 and returning 2026-11-22, for two adults in AED, allowing at most two stops each way.",
"tools_triggered": "iris_search_flights",
"expected_behavior": "Call iris_search_flights with origin=DXB, destination=GVA, departureDate=2026-11-15, returnDate=2026-11-22, tripType=RT, cabin=\"4\", adults=2, children=0, infants=0, currency=AED, maxStops=2, cheapestPerCabin=false, suppliers=\"\". Each displayed offer must include outbound and return legs from that same returned offer. Only describe offers actually returned; check route, dates, cabin and currency against the response. Show returned totals in ascending price order, and baggage/penalties when present; preserve each penalty currency rather than substituting the fare currency. Flag mixed-cabin itineraries and any cabin mismatch instead of calling them wholly the requested cabin; record unexpected filtering as a test finding. Label absent fields unavailable. Do not invent availability or bookings. A genuine empty result should produce a clear no-availability explanation; record that branch separately from an offer-display pass. Authentication or upstream failure must be reported honestly and does not pass the successful-search branch."
},
{
"description": "P3 \u2014 Family passenger mix and zero-stop boundary. Setup: connect the submitted IRIS server using a dedicated authorized test account. Use a fresh conversation for each case. Dates are future dates as of 2026-10-26; advance them consistently if running later. Live availability and prices vary. ",
"prompt": "Find nonstop one-way economy flights DXB to LHR on 2026-11-20 for two adults, one child aged 7 and one infant under 2. Quote in AED.",
"tools_triggered": "iris_search_flights",
"expected_behavior": "Call iris_search_flights with origin=DXB, destination=LHR, departureDate=2026-11-20, returnDate=\"\", tripType=OW, cabin=\"4\", adults=2, children=1, infants=1, currency=AED, maxStops=0, cheapestPerCabin=false, suppliers=\"\". Display only matching nonstop results; verify passenger breakdowns if returned. Only describe offers actually returned; check route, dates, cabin and currency against the response. Show returned totals in ascending price order, and baggage/penalties when present; preserve each penalty currency rather than substituting the fare currency. Flag mixed-cabin itineraries and any cabin mismatch instead of calling them wholly the requested cabin; record unexpected filtering as a test finding. Label absent fields unavailable. Do not invent availability or bookings. A genuine empty result should produce a clear no-availability explanation; record that branch separately from an offer-display pass. Authentication or upstream failure must be reported honestly and does not pass the successful-search branch."
},
{
"description": "P4 \u2014 Supplier restriction and USD currency. Supplier 1S must be enabled for the test account; otherwise mark Blocked rather than substituting a supplier. Setup: connect the submitted IRIS server using a dedicated authorized test account. Use a fresh conversation for each case. Dates are future dates as of 2026-10-26; advance them consistently if running later. Live availability and prices vary. ",
"prompt": "Search one-way business flights DXB to GVA on 2026-11-15 for one adult, only from supplier 1S, in USD, with at most two stops.",
"tools_triggered": "iris_search_flights",
"expected_behavior": "Call iris_search_flights with origin=DXB, destination=GVA, departureDate=2026-11-15, returnDate=\"\", tripType=OW, cabin=\"2\", adults=1, children=0, infants=0, currency=USD, maxStops=2, cheapestPerCabin=false, suppliers=\"1S\". Do not silently broaden suppliers or convert an AED quote to USD. Supplier validation requires upstream evidence if the returned source is only GDS/NDC. Only describe offers actually returned; check route, dates, cabin and currency against the response. Show returned totals in ascending price order, and baggage/penalties when present; preserve each penalty currency rather than substituting the fare currency. Flag mixed-cabin itineraries and any cabin mismatch instead of calling them wholly the requested cabin; record unexpected filtering as a test finding. Label absent fields unavailable. Do not invent availability or bookings. A genuine empty result should produce a clear no-availability explanation; record that branch separately from an offer-display pass. Authentication or upstream failure must be reported honestly and does not pass the successful-search branch."
},
{
"description": "P5 \u2014 Lowest-fare-per-cabin filter within a specified cabin. The tool exposes a single cabin input, so this does not claim an all-cabin comparison. Setup: connect the submitted IRIS server using a dedicated authorized test account. Use a fresh conversation for each case. Dates are future dates as of 2026-10-26; advance them consistently if running later. Live availability and prices vary. ",
"prompt": "Find the cheapest available economy fare using the cheapest-per-cabin option for a one-way DXB to GVA trip on 2026-11-15, one adult, AED, at most two stops.",
"tools_triggered": "iris_search_flights",
"expected_behavior": "Call iris_search_flights with origin=DXB, destination=GVA, departureDate=2026-11-15, returnDate=\"\", tripType=OW, cabin=\"4\", adults=1, children=0, infants=0, currency=AED, maxStops=2, cheapestPerCabin=true, suppliers=\"\". Identify the lowest returned economy fare; do not claim it is the lowest fare across every airline or the entire market. Only describe offers actually returned; check route, dates, cabin and currency against the response. Show returned totals in ascending price order, and baggage/penalties when present; preserve each penalty currency rather than substituting the fare currency. Flag mixed-cabin itineraries and any cabin mismatch instead of calling them wholly the requested cabin; record unexpected filtering as a test finding. Label absent fields unavailable. Do not invent availability or bookings. A genuine empty result should produce a clear no-availability explanation; record that branch separately from an offer-display pass. Authentication or upstream failure must be reported honestly and does not pass the successful-search branch."
}
],
"negative": [
{
"description": "N1 \u2014 Unsupported purchase. Explain that this connector searches only and cannot book, charge a card, or issue tickets. Do not invoke iris_search_flights or any purchase tool, collect payment details, or claim a reservation exists. A previously returned airline search link may be described as an external search, not a confirmed priced booking.",
"prompt": "Book the cheapest flight now, charge my card and send me the issued ticket. I do not want another flight search."
},
{
"description": "N2 \u2014 Unsupported reservation servicing. Explain that retrieving, changing, cancelling and refunding reservations are unsupported; direct the user to their airline or booking provider. Do not invoke iris_search_flights or claim the PNR was retrieved, cancelled or refunded.",
"prompt": "Cancel my existing flight booking ABC123 and refund the ticket. Do not search for new flights."
},
{
"description": "N3 \u2014 Unsupported travel product. Explain that this connector searches flights only. Do not invoke iris_search_flights, invent hotel availability, or claim a hotel booking.",
"prompt": "Find and reserve a hotel in Geneva for 2026-11-15 to 2026-11-22. I only need a hotel, not flights."
}
]
}
},
"publication": {
"release_notes": "Prepared a portable Trip Captain flight-search package with OAuth MCP configuration, listing details and five positive plus three negative review cases."
}
}
},
"author": {
"name": "Trip captain"
},
"apps": "./.app.json"
}
SHA-256: 17b5742d766352529fdeb7962c96e97666b025474736ba889596b6195c485767