MCP App Store
by KeenEthics
Travel
Travel 101: Trip Itineraries icon

Travel 101: Trip Itineraries

by Travel Vibes

Overview

Travel 101 helps you plan trips by turning your preferences into full itineraries. Get a day-by-day plan with flights, accommodation, activities, budget, maps, and more. Save and edit your itinerary in Scratchpad, and share it with travel buddies. No forms or rigid templates, just describe your vibe and get a ready-to-use plan.

Tools

plan_trip

ChatGPT
Use this when the user wants to plan a NEW trip. It opens the Travel Vibes scratchpad widget and renders the itinerary YOU provide. IMPORTANT — YOU write the itinerary. Do not expect our backend to generate it. Compose the COMPLETE itinerary yourself as TipTap-compatible HTML and pass it in the itinerary_html field; the widget renders it exactly as given. DEFAULT TO CALLING IT. The instant a destination is present and the user wants a trip there, call plan_trip — do NOT interview them first, and do NOT paste the itinerary into chat instead of calling the tool. TRIGGER plan_trip when BOTH hold: 1. a destination is present — a city, country, region, or park; AND 2. the user wants a trip/itinerary for it — a trip framing ("plan…", "trip to…", "X days in…", "weekend in…") OR a brief pairing the destination with trip attributes (duration, dates, who's going, interests, vibe). "Plan a trip to Tokyo" counts. Use sensible defaults for anything unspecified (dates, length, vibe, budget). Speed is the priority — produce a complete, polished first version in one call. The ONLY thing you ever ask first: - If there is NO destination at all ("help me plan a trip", "I want a holiday somewhere") → ask the single question "Where would you like to go?". As soon as they name a place, build it and call plan_trip. Never ask about dates, vibe, or budget before calling. Never run a multi-step questionnaire. WHEN NOT TO CALL plan_trip: - Destination brainstorming ("Where should I go?", "Best places for X") → suggest options in chat, don't trigger. - Travel facts / weather / visas / currency → answer in chat. A place named inside a factual question is NOT planning intent. - User already has a trip in this conversation and wants to MODIFY it → editing an existing trip is not available in ChatGPT yet. Do NOT call plan_trip to edit (it would create a separate new trip); tell the user to open their trip in the Travel Vibes app (the button on the widget) to refine it. === HOW TO BUILD itinerary_html === Output ONE self-contained HTML document (compact HTML, NOT markdown). Use ONLY these tags: h1, h2, h3, p, strong, em, ul, ol, li, table, colgroup, col, tbody, tr, th, td, br, span. For tickable checklists also use <ul data-type="taskList"> with <li data-type="taskItem"> + <label>/<input type="checkbox">/<div> (see Styling rules). Inline style is allowed ONLY for status colors / colored text via the CSS vars below. DO NOT include: <img> or photos, map blocks (<div data-node-type="mapBlock">), data-entity-id attributes, <script>, <style>, class attributes, or TipTap artifacts (no data-id, no default colspan/rowspan). Photos and maps are added later inside the app — omit them. Styling rules (match EXACTLY — TipTap keeps styles ONLY where shown): - Center the title, the date/route line, and the legend — put style="text-align: center;" on those <h1>/<p>. - Section headings in blue: <h1><span style="color: var(--tt-color-text-blue);">ACCOMMODATION</span></h1> - Status color goes on EACH <td>/<th> CELL, NEVER on <tr> (row-level color is dropped by the editor): - booked: <td style="background-color: var(--tt-color-highlight-green);"><p>…</p></td> - needs booking: <td style="background-color: var(--tt-color-highlight-red);"><p>…</p></td> - Wrap every table cell's content in <p>…</p> (e.g. <th><p>Dates</p></th>, <td><p>Apr 10</p></td>). - Colored text: <span style="color: var(--tt-color-text-blue);">…</span> (also -red, -gray, -green) - Tickable checklist (for the PACKING LIST): <ul data-type="taskList"><li data-checked="false" data-type="taskItem"><label><input type="checkbox"><span></span></label><div><p>Item text</p></div></li></ul> STRUCTURE (in this order): 1. <h1> trip title </h1> 2. <p> date range | duration | route </p> 3. <p> Legend: GREEN = booked, RED = needs booking </p> 4. Logistics (only the relevant ones): <h1>FLIGHT INFO</h1> / <h1>ACCOMMODATION</h1> / <h1>BOOKING CHECKLIST</h1> — each a <table> with a header row (<th>) and data rows (<td>); use a placeholder "…" row when the user gave no data; color the CELLS by status (see Styling rules — col…

refine_trip

ChatGPT
Use this when the user wants to change, update, or improve an EXISTING trip that was already created with plan_trip. WHEN TO CALL: - User asks to add, remove, or change anything in their trip - User wants different restaurants, activities, hotels, or timing - User says "make it more X" or "less Y" or "swap Z" - User provides new constraints (budget, dates, pace) - User asks "can you add..." or "what about..." regarding their trip WHEN NOT TO CALL: - User wants a completely NEW trip to a different destination → use plan_trip instead - User asks a general travel question not about modifying their trip → answer directly in chat - User is just chatting, saying thanks, or asking about what's in the widget → respond normally HOW TO CALL: Pass the user's exact words in the message field. The trip assistant will interpret the request, look up real places, and edit the itinerary. You do NOT need to restructure or rephrase — pass the request as-is. IMPORTANT: This tool dispatches the request asynchronously. The itinerary updates in the widget via real-time sync. You will NOT see the result in the tool response — the widget handles rendering. EXAMPLE: refine_trip({ "trip_id": "abc-123", "message": "Add more ramen spots in Shibuya and swap the temple on day 3 for a day trip to Kamakura" })

Example Prompts

Click any prompt to copy it.

App Stats

2

Tools

1

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily