{"items":[{"name":"search_trips","title":"Search travel companions","description":"Find travelers looking for companions. Works without an account. Filter by destination, origin, dates, needs (share_room, split_costs...), languages, sex, age range. Free text `q` matches plans and interests semantically. Results are ranked by compatibility and include masked traveler cards (first name + initial, age range, city).","category":"discover","minTrust":0,"readOnly":true,"method":"POST","path":"/v1/tools/search_trips","inputSchema":{"type":"object","properties":{"to":{"description":"Destination filter","type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radiusKm":{"default":100,"type":"number","minimum":1,"maximum":2000}}},"from":{"description":"Origin filter","type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radiusKm":{"default":100,"type":"number","minimum":1,"maximum":2000}}},"startDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"minOverlapDays":{"default":1,"type":"integer","minimum":1,"maximum":60},"kind":{"type":"string","enum":["solo","group","meetup"]},"needs":{"description":"Match trips that list any of these needs","maxItems":10,"type":"array","items":{"description":"Short snake_case tag, e.g. share_room or hiking","type":"string"}},"languages":{"description":"Travelers who speak any of these languages","maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$","description":"ISO 639-1 language code, e.g. en, es, pt-br"}},"sex":{"description":"Traveler sex filter, e.g. [\"female\"] for women-only","maxItems":5,"type":"array","items":{"type":"string","enum":["female","male","non_binary","other","prefer_not_to_say"]}},"ageMin":{"type":"integer","minimum":18,"maximum":99},"ageMax":{"type":"integer","minimum":18,"maximum":99},"verifiedOnly":{"default":false,"type":"boolean"},"q":{"description":"Free text, semantically matched against plans and interests","type":"string","maxLength":300},"limit":{"default":20,"type":"integer","minimum":1,"maximum":50},"cursor":{"type":"string"}}}},{"name":"search_travelers","title":"Search travelers","description":"Browse masked traveler cards (not trip posts). Filter by destination of their open trips, languages, age, nationality, interests, or free text. Useful when the user asks who is going somewhere rather than for a specific date window.","category":"discover","minTrust":0,"readOnly":true,"method":"POST","path":"/v1/tools/search_travelers","inputSchema":{"type":"object","properties":{"to":{"description":"Travelers with open trips to this destination","type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radiusKm":{"default":100,"type":"number","minimum":1,"maximum":2000}}},"languages":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$","description":"ISO 639-1 language code, e.g. en, es, pt-br"}},"sex":{"maxItems":5,"type":"array","items":{"type":"string","enum":["female","male","non_binary","other","prefer_not_to_say"]}},"ageMin":{"type":"integer","minimum":18,"maximum":99},"ageMax":{"type":"integer","minimum":18,"maximum":99},"nationality":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"interests":{"description":"Match travelers listing any of these interests","maxItems":10,"type":"array","items":{"description":"Short snake_case tag, e.g. share_room or hiking","type":"string"}},"verifiedOnly":{"default":false,"type":"boolean"},"q":{"description":"Free text matched against bio, interests and trip plans","type":"string","maxLength":300},"limit":{"default":20,"type":"integer","minimum":1,"maximum":50},"cursor":{"type":"string"}}}},{"name":"get_trip","title":"Get a trip","description":"Get the public view of one trip by id, including the masked traveler card.","category":"discover","minTrust":0,"readOnly":true,"method":"POST","path":"/v1/tools/get_trip","inputSchema":{"type":"object","properties":{"tripId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"}},"required":["tripId"]}},{"name":"get_traveler_card","title":"Get a traveler card","description":"Get the public, masked card of a traveler by their public id.","category":"discover","minTrust":0,"readOnly":true,"method":"POST","path":"/v1/tools/get_traveler_card","inputSchema":{"type":"object","properties":{"publicId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"}},"required":["publicId"]}},{"name":"list_popular_destinations","title":"Popular destinations","description":"Destinations with the most open trips right now. Useful to suggest where companions are easiest to find.","category":"discover","minTrust":0,"readOnly":true,"method":"POST","path":"/v1/tools/list_popular_destinations","inputSchema":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"limit":{"default":10,"type":"integer","minimum":1,"maximum":50}}}},{"name":"list_needs_taxonomy","title":"List suggested needs","description":"Suggested `needs` tags. Any snake_case tag is accepted, but these are the common ones.","category":"discover","minTrust":0,"readOnly":true,"method":"POST","path":"/v1/tools/list_needs_taxonomy","inputSchema":{"type":"object","properties":{}}},{"name":"get_my_status","title":"Get my account status","description":"Tells the agent what the current user can do: trust level, plan, whether a profile exists, and the next steps to unlock more (create profile, accept terms, verify ID).","category":"account","minTrust":0,"readOnly":true,"method":"POST","path":"/v1/tools/get_my_status","inputSchema":{"type":"object","properties":{}}},{"name":"create_or_update_profile","title":"Create or update my profile","description":"Create the traveler profile on first call (all required fields) or update parts of it later. Birth date and postal code stay private; others see an age range and city only.","category":"profile","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/create_or_update_profile","inputSchema":{"type":"object","properties":{"displayName":{"type":"string","minLength":2,"maxLength":60,"description":"Full name or first name. Public view shows first name + last initial."},"birthDate":{"type":"string","format":"date","description":"Private. Used to derive a public age range. Must be 18+."},"sex":{"type":"string","enum":["female","male","non_binary","other","prefer_not_to_say"]},"nationality":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"languages":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$","description":"ISO 639-1 language code, e.g. en, es, pt-br"}},"home":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"A place. Provide lat/lon when known for better geo matching."},"bio":{"type":"string","maxLength":600},"interests":{"maxItems":25,"type":"array","items":{"description":"Short snake_case tag, e.g. share_room or hiking","type":"string"}},"travelStyle":{"default":"flexible","type":"string","enum":["budget","mid","luxury","backpacker","flexible"]},"smoker":{"type":"boolean"},"companionPreferences":{"type":"object","properties":{"sex":{"description":"Acceptable companion sexes; empty means any","maxItems":5,"type":"array","items":{"type":"string","enum":["female","male","non_binary","other","prefer_not_to_say"]}},"ageMin":{"type":"integer","minimum":18,"maximum":99},"ageMax":{"type":"integer","minimum":18,"maximum":99},"languages":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$","description":"ISO 639-1 language code, e.g. en, es, pt-br"}},"verifiedOnly":{"type":"boolean"}}},"preferredLanguage":{"description":"Language the user prefers to be addressed in","type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$"},"extra":{"description":"Free-form additional attributes","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}},{"name":"get_my_profile","title":"Get my profile","description":"Return the full profile of the authenticated user.","category":"profile","minTrust":1,"readOnly":true,"method":"POST","path":"/v1/tools/get_my_profile","inputSchema":{"type":"object","properties":{}}},{"name":"post_trip","title":"Post a trip","description":"Publish a trip to find companions. kind=solo (default) for a traveler seeking companions, kind=group to organize a group with N spots, kind=meetup when already at the destination. Requires a profile.","category":"trips","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/post_trip","inputSchema":{"type":"object","properties":{"kind":{"default":"solo","description":"solo: looking for 1+ companions; group: organizer with N spots; meetup: already at destination","type":"string","enum":["solo","group","meetup"]},"from":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"Where the traveler departs from"},"to":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"Destination"},"startDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"flexibilityDays":{"default":0,"description":"How many days the dates can shift","type":"integer","minimum":0,"maximum":14},"needs":{"description":"What the traveler wants from a companion, e.g. share_room, split_costs","maxItems":15,"type":"array","items":{"description":"Short snake_case tag, e.g. share_room or hiking","type":"string"}},"plans":{"default":"","description":"Free text plans and expectations","type":"string","maxLength":2000},"budgetRange":{"type":"string","enum":["under_500","500_1500","1500_4000","over_4000","flexible"]},"groupSizeWanted":{"default":1,"description":"How many companions wanted","type":"integer","minimum":1,"maximum":20},"companionPreferences":{"type":"object","properties":{"sex":{"description":"Acceptable companion sexes; empty means any","maxItems":5,"type":"array","items":{"type":"string","enum":["female","male","non_binary","other","prefer_not_to_say"]}},"ageMin":{"type":"integer","minimum":18,"maximum":99},"ageMax":{"type":"integer","minimum":18,"maximum":99},"languages":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$","description":"ISO 639-1 language code, e.g. en, es, pt-br"}},"verifiedOnly":{"type":"boolean"}}},"visibility":{"default":"public","type":"string","enum":["public","link_only","private"]},"exactDatesPublic":{"default":false,"description":"If false, public views show the week range instead of exact dates","type":"boolean"},"extra":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["from","to","startDate","endDate"]}},{"name":"update_trip","title":"Update a trip","description":"Update fields of one of my trips.","category":"trips","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/update_trip","inputSchema":{"type":"object","properties":{"tripId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"changes":{"type":"object","properties":{"kind":{"default":"solo","description":"solo: looking for 1+ companions; group: organizer with N spots; meetup: already at destination","type":"string","enum":["solo","group","meetup"]},"from":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"Where the traveler departs from"},"to":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"Destination"},"startDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"flexibilityDays":{"default":0,"description":"How many days the dates can shift","type":"integer","minimum":0,"maximum":14},"needs":{"description":"What the traveler wants from a companion, e.g. share_room, split_costs","maxItems":15,"type":"array","items":{"description":"Short snake_case tag, e.g. share_room or hiking","type":"string"}},"plans":{"default":"","description":"Free text plans and expectations","type":"string","maxLength":2000},"budgetRange":{"type":"string","enum":["under_500","500_1500","1500_4000","over_4000","flexible"]},"groupSizeWanted":{"default":1,"description":"How many companions wanted","type":"integer","minimum":1,"maximum":20},"companionPreferences":{"type":"object","properties":{"sex":{"description":"Acceptable companion sexes; empty means any","maxItems":5,"type":"array","items":{"type":"string","enum":["female","male","non_binary","other","prefer_not_to_say"]}},"ageMin":{"type":"integer","minimum":18,"maximum":99},"ageMax":{"type":"integer","minimum":18,"maximum":99},"languages":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$","description":"ISO 639-1 language code, e.g. en, es, pt-br"}},"verifiedOnly":{"type":"boolean"}}},"visibility":{"default":"public","type":"string","enum":["public","link_only","private"]},"exactDatesPublic":{"default":false,"description":"If false, public views show the week range instead of exact dates","type":"boolean"},"extra":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}},"required":["tripId","changes"]}},{"name":"close_trip","title":"Close a trip","description":"Close or cancel one of my trips so it no longer appears in search.","category":"trips","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/close_trip","inputSchema":{"type":"object","properties":{"tripId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"reason":{"default":"other","type":"string","enum":["found_companion","cancelled","other"]}},"required":["tripId"]}},{"name":"list_my_trips","title":"List my trips","description":"List the authenticated user's trips, optionally filtered by status.","category":"trips","minTrust":1,"readOnly":true,"method":"POST","path":"/v1/tools/list_my_trips","inputSchema":{"type":"object","properties":{"status":{"type":"string","enum":["open","full","closed","cancelled"]}}}},{"name":"get_my_matches","title":"Get matches for my trip","description":"Ranked compatible travelers for one of my trips, with reasons. Uses my profile preferences and the other side's preferences.","category":"trips","minTrust":1,"readOnly":true,"method":"POST","path":"/v1/tools/get_my_matches","inputSchema":{"type":"object","properties":{"tripId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"limit":{"default":10,"type":"integer","minimum":1,"maximum":50}},"required":["tripId"]}},{"name":"create_group_trip","title":"Create a group trip","description":"Create a group trip with multiple open spots. Same fields as post_trip; kind is forced to group.","category":"trips","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/create_group_trip","inputSchema":{"type":"object","properties":{"from":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"Where the traveler departs from"},"to":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"Destination"},"startDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"flexibilityDays":{"default":0,"description":"How many days the dates can shift","type":"integer","minimum":0,"maximum":14},"needs":{"description":"What the traveler wants from a companion, e.g. share_room, split_costs","maxItems":15,"type":"array","items":{"description":"Short snake_case tag, e.g. share_room or hiking","type":"string"}},"plans":{"default":"","description":"Free text plans and expectations","type":"string","maxLength":2000},"budgetRange":{"type":"string","enum":["under_500","500_1500","1500_4000","over_4000","flexible"]},"groupSizeWanted":{"default":4,"type":"integer","minimum":2,"maximum":20},"companionPreferences":{"type":"object","properties":{"sex":{"description":"Acceptable companion sexes; empty means any","maxItems":5,"type":"array","items":{"type":"string","enum":["female","male","non_binary","other","prefer_not_to_say"]}},"ageMin":{"type":"integer","minimum":18,"maximum":99},"ageMax":{"type":"integer","minimum":18,"maximum":99},"languages":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$","description":"ISO 639-1 language code, e.g. en, es, pt-br"}},"verifiedOnly":{"type":"boolean"}}},"visibility":{"default":"public","type":"string","enum":["public","link_only","private"]},"exactDatesPublic":{"default":false,"description":"If false, public views show the week range instead of exact dates","type":"boolean"},"extra":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["from","to","startDate","endDate"]}},{"name":"meet_at_destination","title":"Meet at destination","description":"Post a meetup for someone already at (or about to arrive at) a destination. kind is forced to meetup.","category":"trips","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/meet_at_destination","inputSchema":{"type":"object","properties":{"from":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"Where the traveler departs from"},"to":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"region":{"description":"State/province, optional","type":"string","maxLength":120},"zip":{"description":"Postal code. Never shown publicly in full.","type":"string","maxLength":16},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180}},"required":["city","country"],"description":"Destination"},"startDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"flexibilityDays":{"default":0,"description":"How many days the dates can shift","type":"integer","minimum":0,"maximum":14},"needs":{"description":"What the traveler wants from a companion, e.g. share_room, split_costs","maxItems":15,"type":"array","items":{"description":"Short snake_case tag, e.g. share_room or hiking","type":"string"}},"plans":{"default":"","description":"Free text plans and expectations","type":"string","maxLength":2000},"budgetRange":{"type":"string","enum":["under_500","500_1500","1500_4000","over_4000","flexible"]},"groupSizeWanted":{"default":1,"description":"How many companions wanted","type":"integer","minimum":1,"maximum":20},"companionPreferences":{"type":"object","properties":{"sex":{"description":"Acceptable companion sexes; empty means any","maxItems":5,"type":"array","items":{"type":"string","enum":["female","male","non_binary","other","prefer_not_to_say"]}},"ageMin":{"type":"integer","minimum":18,"maximum":99},"ageMax":{"type":"integer","minimum":18,"maximum":99},"languages":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z]{2}(-[a-z]{2})?$","description":"ISO 639-1 language code, e.g. en, es, pt-br"}},"verifiedOnly":{"type":"boolean"}}},"visibility":{"default":"public","type":"string","enum":["public","link_only","private"]},"exactDatesPublic":{"default":false,"description":"If false, public views show the week range instead of exact dates","type":"boolean"},"extra":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["from","to","startDate","endDate"]}},{"name":"join_group_trip","title":"Join a group trip","description":"Request to join an open group trip. Requires terms acceptance. Owner must accept via respond_to_connection.","category":"connect","minTrust":2,"readOnly":false,"method":"POST","path":"/v1/tools/join_group_trip","inputSchema":{"type":"object","properties":{"tripId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"message":{"default":"","type":"string","maxLength":500}},"required":["tripId"]}},{"name":"accept_terms","title":"Accept terms","description":"Record that the user is 18+ and accepts the Terms of Service. Required before connecting with other travelers. Send them {base}/terms first.","category":"connect","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/accept_terms","inputSchema":{"type":"object","properties":{"confirmAge18":{"type":"boolean","const":true},"acceptTerms":{"type":"boolean","const":true},"termsVersion":{"description":"Defaults to the current TERMS_VERSION","type":"string"}},"required":["confirmAge18","acceptTerms"]}},{"name":"request_connection","title":"Request a connection","description":"Send a connection request to the owner of a trip. Both sides must accept before contact is shared. Requires accept_terms first.","category":"connect","minTrust":2,"readOnly":false,"method":"POST","path":"/v1/tools/request_connection","inputSchema":{"type":"object","properties":{"targetTripId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"myTripId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"message":{"default":"","type":"string","maxLength":500}},"required":["targetTripId"]}},{"name":"respond_to_connection","title":"Respond to a connection","description":"Accept or decline an incoming connection request.","category":"connect","minTrust":2,"readOnly":false,"method":"POST","path":"/v1/tools/respond_to_connection","inputSchema":{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"decision":{"type":"string","enum":["accept","decline"]}},"required":["connectionId","decision"]}},{"name":"list_connections","title":"List my connections","description":"List incoming and outgoing connection requests and accepted connections.","category":"connect","minTrust":2,"readOnly":true,"method":"POST","path":"/v1/tools/list_connections","inputSchema":{"type":"object","properties":{"status":{"type":"string","enum":["pending","accepted","declined","expired","withdrawn"]}}}},{"name":"send_message","title":"Send a message","description":"Send a relayed message on an accepted connection. Emails stay private.","category":"connect","minTrust":2,"readOnly":false,"method":"POST","path":"/v1/tools/send_message","inputSchema":{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"body":{"type":"string","minLength":1,"maxLength":2000}},"required":["connectionId","body"]}},{"name":"get_messages","title":"Get messages","description":"List relayed messages on an accepted connection.","category":"connect","minTrust":2,"readOnly":true,"method":"POST","path":"/v1/tools/get_messages","inputSchema":{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"limit":{"default":50,"type":"integer","minimum":1,"maximum":100}},"required":["connectionId"]}},{"name":"reveal_contact","title":"Reveal contact","description":"Reveal the counterpart's email (and phone if set) after both sides accept. Requires ID verification (trust level 3).","category":"connect","minTrust":3,"readOnly":true,"method":"POST","path":"/v1/tools/reveal_contact","inputSchema":{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"}},"required":["connectionId"]}},{"name":"leave_review","title":"Leave a review","description":"Leave a 1-5 star review of a companion from an accepted connection, once the trip is over (from the day after its end date). One review per traveler per trip.","category":"connect","minTrust":2,"readOnly":false,"method":"POST","path":"/v1/tools/leave_review","inputSchema":{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"rating":{"type":"integer","minimum":1,"maximum":5},"text":{"type":"string","maxLength":1000}},"required":["connectionId","rating"]}},{"name":"subscribe_match_webhook","title":"Subscribe to match webhooks","description":"Register an HTTPS URL that receives signed POSTs when new matches or connection events fire for this user. Agents use this to proactively notify travelers. The signing secret is returned once.","category":"connect","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/subscribe_match_webhook","inputSchema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"events":{"default":["match.new","connection.requested","connection.accepted"],"minItems":1,"type":"array","items":{"type":"string","enum":["match.new","connection.requested","connection.accepted","message.received"]}}},"required":["url"]}},{"name":"report_user","title":"Report a traveler","description":"Report a traveler for spam, scam, harassment, fake profile or safety concerns.","category":"safety","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/report_user","inputSchema":{"type":"object","properties":{"publicId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"reason":{"type":"string","enum":["spam","scam","harassment","fake_profile","inappropriate","safety","other"]},"details":{"type":"string","maxLength":2000}},"required":["publicId","reason"]}},{"name":"block_user","title":"Block a traveler","description":"Block a traveler. Neither side will see the other in search or be able to connect.","category":"safety","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/block_user","inputSchema":{"type":"object","properties":{"publicId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"}},"required":["publicId"]}},{"name":"export_my_data","title":"Export my data","description":"Return everything stored about the authenticated user (GDPR/CCPA export).","category":"account","minTrust":1,"readOnly":true,"method":"POST","path":"/v1/tools/export_my_data","inputSchema":{"type":"object","properties":{}}},{"name":"delete_my_account","title":"Delete my account","description":"Permanently delete the account, profile, trips and messages. Irreversible. The agent must confirm with the user first.","category":"account","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/delete_my_account","inputSchema":{"type":"object","properties":{"confirm":{"type":"boolean","const":true}},"required":["confirm"]}},{"name":"start_id_verification","title":"Start ID verification","description":"Create a Stripe Identity verification session. Send the returned URL to the user. Unlocks the verified badge and contact reveal.","category":"billing","minTrust":2,"readOnly":false,"method":"POST","path":"/v1/tools/start_id_verification","inputSchema":{"type":"object","properties":{}}},{"name":"start_premium_checkout","title":"Start premium checkout","description":"Create a Stripe Checkout (Link-compatible) session for Premium. Send the returned URL to the user.","category":"billing","minTrust":1,"readOnly":false,"method":"POST","path":"/v1/tools/start_premium_checkout","inputSchema":{"type":"object","properties":{"plan":{"default":"premium","type":"string","enum":["premium","business"]}}}},{"name":"get_subscription","title":"Get subscription","description":"Return the current plan, status and usage limits.","category":"billing","minTrust":1,"readOnly":true,"method":"POST","path":"/v1/tools/get_subscription","inputSchema":{"type":"object","properties":{}}},{"name":"find_shared_stay","title":"Find a shared stay","description":"Affiliate search for hotels/villas near the destination that two matched travelers can share.","category":"booking","minTrust":2,"readOnly":true,"method":"POST","path":"/v1/tools/find_shared_stay","inputSchema":{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":64,"description":"Opaque identifier"},"city":{"type":"string","minLength":1,"maxLength":120},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"checkIn":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"checkOut":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"guests":{"default":2,"type":"integer","minimum":1,"maximum":20}},"required":["city","country","checkIn","checkOut"]}},{"name":"find_flights_together","title":"Find flights together","description":"Affiliate flight search for matched travelers sharing an itinerary.","category":"booking","minTrust":2,"readOnly":true,"method":"POST","path":"/v1/tools/find_flights_together","inputSchema":{"type":"object","properties":{"fromCity":{"type":"string","minLength":1,"maxLength":120},"toCity":{"type":"string","minLength":1,"maxLength":120},"date":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"passengers":{"default":2,"type":"integer","minimum":1,"maximum":9}},"required":["fromCity","toCity","date"]}},{"name":"find_travel_insurance","title":"Find travel insurance","description":"Affiliate link for travel insurance suitable for companion trips.","category":"booking","minTrust":1,"readOnly":true,"method":"POST","path":"/v1/tools/find_travel_insurance","inputSchema":{"type":"object","properties":{"startDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Calendar date, YYYY-MM-DD"},"travelers":{"default":1,"type":"integer","minimum":1,"maximum":10}},"required":["startDate","endDate"]}},{"name":"find_esim","title":"Find an eSIM","description":"Affiliate link for destination eSIMs.","category":"booking","minTrust":1,"readOnly":true,"method":"POST","path":"/v1/tools/find_esim","inputSchema":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code, e.g. US"},"days":{"default":7,"type":"integer","minimum":1,"maximum":90}},"required":["country"]}}]}