{
 "name": "roundtrips",
 "title": "RoundTrips",
 "description": "Plan and coordinate a group trip from your AI assistant: start a trip, invite friends with one link, add and vote on ideas, build the days, RSVP and split costs. Also plans a few free hours or a few days in a city, in walking order.",
 "version": "1.1.0",
 "url": "https://mcp.roundtrips.org/mcp",
 "transport": "streamable-http",
 "authentication": {
  "type": "oauth2",
  "authorization_server": "https://mcp.roundtrips.org",
  "notes": "Sign in with your RoundTrips account (email or Google). Dynamic client registration and PKCE."
 },
 "public_url": "https://mcp.roundtrips.org/public",
 "public_authentication": "none",
 "tools": [
  {
   "name": "my_trips",
   "description": "Answers: \"Which trips am I planning?\" Lists the signed-in user's RoundTrips trips with their role, who's in, and how far along each one is. No inputs. Example: {}"
  },
  {
   "name": "trip_status",
   "description": "Answers: \"Where does our trip stand, and what's still undecided?\""
  },
  {
   "name": "start_trip",
   "description": "Answers: \"Start a trip for us.\" Creates a RoundTrips trip owned by the user. Either pass plan (the save_plan object from day_itinerary, which brings every stop in as ideas already placed on their days), or from_zoe (a published trip slug such as \"lisbon-without-the-checklist\" to copy Zoe's trip), or just destination and days for an empty trip. Dates are optional. Inputs: destination, days (1–14), title, start_date (YYYY-MM-DD), plan, from_zoe. Example: {\"destination\":\"Lisbon, Portugal\",\"days\":4}"
  },
  {
   "name": "invite_link",
   "description": "Answers: \"Give me a link to invite my friends.\""
  },
  {
   "name": "add_ideas",
   "description": "Answers: \"Add these places to our trip.\" Adds 1–20 ideas to the trip's dream board for the group to vote on. Each idea: name (required), note, where, url, kind (museum, restaurant, viewpoint, …). Organizers and co-planners only. Inputs: trip, ideas. Example: {\"trip\":\"Lisbon\",\"ideas\":[{\"name\":\"Time Out Market\",\"note\":\"Lunch on day one\",\"kind\":\"market\"}]}"
  },
  {
   "name": "vote",
   "description": "Answers: \"I'm in for that one.\" Adds (or with on=false removes) the user's vote on an idea. Everyone on the trip can vote. Inputs: idea_id (from trip_status), on (default true). Example: {\"idea_id\":\"…\",\"on\":true}"
  },
  {
   "name": "schedule",
   "description": "Answers: \"Put that on day 2.\" Adds an idea (idea_id) or anything else (title) to a day of the trip, at the end of that day, optionally at a time. Organizers and co-planners only. Inputs: trip, day, idea_id or title, time (HH:MM), note. Example: {\"trip\":\"Lisbon\",\"day\":2,\"idea_id\":\"…\",\"time\":\"10:00\"}"
  },
  {
   "name": "unschedule",
   "description": "Answers: \"Take that off the plan.\" Removes one item from the day-by-day plan (the idea stays on the dream board). Organizers and co-planners only. Inputs: item_id (timeline id from trip_status). Example: {\"item_id\":\"…\"}"
  },
  {
   "name": "rsvp",
   "description": "Answers: \"Count me in.\" Sets the user's answer for a trip: in, maybe or out. Inputs: trip, answer. Example: {\"trip\":\"Lisbon\",\"answer\":\"in\"}"
  },
  {
   "name": "comment",
   "description": "Answers: \"Tell the group…\" Posts a message to the trip's comment thread, as the user. Only send words the user asked to send. Inputs: trip, message. Example: {\"trip\":\"Lisbon\",\"message\":\"Booked the tram tour for Tuesday\"}"
  },
  {
   "name": "add_expense",
   "description": "Answers: \"I paid for dinner, split it.\" Logs an expense the user paid, split equally across everyone on the trip (the payer absorbs rounding). USD for now. Organizers and co-planners only. Inputs: trip, amount (dollars), description, category (stays, transport, food, activity, other), date (YYYY-MM-DD). Example: {\"trip\":\"Lisbon\",\"amount\":84.5,\"description\":\"Dinner at Taberna\",\"category\":\"food\"}"
  },
  {
   "name": "settle_up",
   "description": "Answers: \"Who owes who on this trip?\" Works out the fewest payments that settle every shared cost. Inputs: trip. Example: {\"trip\":\"Lisbon\"}"
  },
  {
   "name": "free_time_plan",
   "description": "Answers: \"We're in this city with a few free hours, what do we do?\""
  },
  {
   "name": "day_itinerary",
   "description": "Answers: \"We have N days in this city, what should each day look like?\" Where RoundTrips has a published trip for the city (Lisbon, Tokyo, Amalfi Coast), returns Zoe's real day-by-day plan and the link to fork it. Elsewhere, groups the city's best-documented places into one walkable area per day; for cities it doesn't cover it may return an AI suggestion, clearly labelled, with every stop checked on OpenStreetMap. Every answer includes save_plan, ready to become a RoundTrips trip. Inputs: city (required), days (1–14, required), group (couple | friends | kids), pace (relaxed | moderate | packed), vibe (interests). Example: {\"city\":\"Lisbon\",\"days\":3}"
  },
  {
   "name": "whats_near",
   "description": "Answers: \"What's worth walking to from right here?\""
  },
  {
   "name": "list_cities",
   "description": "Answers: \"Which cities can RoundTrips plan for, and how deep is the coverage?\""
  }
 ],
 "documentation": "https://roundtrips.org/connect/",
 "privacy_policy": "https://roundtrips.org/privacy/",
 "support": "partnership@thehowtonetwork.com",
 "rate_limit": "120 requests per minute per IP; 429 with retry_after"
}