Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Changed the definition of "display_card", "explore_trips", "get_trip" and 7 more
⟨63 unchanged words⟩ or charge. If a snapshot has expired,refresh it withuse aread-onlynon-charging lookuprathertothanretainrepeatinga new result; never repeat awrite.trip/account edit, import or charge merely to display it. This is the only tool that opens a ⟨30 unchanged words⟩
Authorization not required, issuer https://api.dreamfare.app
Changed the definition of "add_to_trip", "create_trip", "delete_trip" and 5 more
{"destructiveHint":falsetrue,"openWorldHint":falsetrue,"readOnlyHint":false}
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false}
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Authorization not required, issuer https://api.dreamfare.app
Changed the definition of "plan_trip"
⟨245 unchanged words⟩ items":{"additionalProperties":false,"properties":{"address":{"maxLength":400,"minLength":1,"type":"string"},"area":{"maxLength":200,"minLength":1, ⟨128 unchanged words⟩
Authorization not required, issuer https://api.dreamfare.app
Added "add_to_trip", "display_card", "edit_library" and 3 more; removed "add_flight_to_trip", "add_option_to_trip", "add_receipt" and 34 more; changed the definition of "create_trip", "delete_trip", "edit_trip" and 12 more (52 tools before, 21 now)
⟨19 unchanged words⟩ the full day-by-day plan in one call via`days`.days;Stopsstops are enriched shortly after creation (photos, map pins, booking links), so.re-readUsewithplan_tripget_tripinsteadifwhen the traveleraskswants
Authorization not required, issuer https://api.dreamfare.app
Added "add_train_to_trip", "display_results", "display_trip" and 5 more; changed the definition of "add_flight_to_trip", "add_option_to_trip", "add_receipt" and 41 more (44 tools before, 52 now)
⟨47 unchanged words⟩ which opens the site that quoted the price. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit.
⟨22 unchanged words⟩ tool; kind 'place' takes a search_places result's itemDraft.EchoPreferobjects
Certificate recorded, valid to 2026-12-03
Authorization not required, issuer https://api.dreamfare.app
First tool surface recorded: 44 tools (server version 1.0.0)
Showing the latest 27 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨43 unchanged words⟩ live prices. Continue the same search with nextOffset. Retains an account-bound result for 30 minutes for later display; does not copy, publish or change a trip. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":truefalse}
⟨88 unchanged words⟩ silently while planning; show the plan with display_card. Retains an account-bound result for 30 minutes for later display; does not edit the trip, mark chat read or make a booking. Returns data plus display.resultId; call display_card to show it.
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":truefalse}
⟨115 unchanged words⟩ , or plan days around them with plan_trip. Retains an account-bound result for 30 minutes for later display; does not start an import, spend credits or change library entries. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":truefalse}
⟨217 unchanged words⟩ 'search_result', reusing the same resultId and optionId.Read-onlyRetains an account-bound research result for 30 minutes for later display. Does not reserve,andpurchaseitorcostsspendnothing.credits. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":truefalse}
⟨108 unchanged words⟩ productId; attach the pick with add_to_trip source 'search_result'.Read-onlyRetains an account-bound result for 30 minutes for later display,andresearchitorcostsattachment.nothing.Does not purchase or spend credits. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":truefalse}
⟨90 unchanged words⟩ a failed source never means no cars exist.Read-only,Retainsandanitaccount-boundcostsresultnothing.for 30 minutes for later display. Does not reserve a car or spend credits. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":truefalse}
⟨126 unchanged words⟩ its pin, photo and any partner bookability.Read-onlyRetains an account-bound result for 30 minutes for later display,andresearchitorcostsattachment.nothing.Does not save library entries, edit trips or spend credits. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":truefalse}
⟨165 unchanged words⟩ , and present the returned bookingUrl for booking.Read-onlyRetains an account-bound result for 30 minutes for later display,andresearchitorcostsattachment.nothing.Does not reserve, book or spend credits. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":truefalse}
⟨100 unchanged words⟩ 'train', this searchId and the unchanged journeyId.Read-only,Stores fresh quotes under searchId for later refinement or attachment anditretainscostsannothing.account-bound display result for 30 minutes. Does not reserve a seat, issue tickets or spend credits. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":truefalse}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false}
⟨12 unchanged words⟩ balance (commission earned through tracked bookings). Reading also initializes or reconciles membership and credit allowance records: expired membership can end, the monthly credit period can roll, and the grant can change with the tier. This does not spend credits, purchase travel, or change the wallet balance. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
{"destructiveHint":falsetrue,"openWorldHint":false,"readOnlyHint":truefalse}
⟨131 unchanged words⟩ app, and a failed import refunds them. Identical input within 10 minutes returns the same importId without another charge, including a failed job. Poll that job instead of starting it again. Use a new operationId only when the traveler explicitly asks for a fresh extraction; keep it unchanged when retrying. Returns data plus display.resultId; call display_card to show ⟨25 unchanged words⟩
⟨47 unchanged words⟩ "minLength":64,"type":"string"},"operationId":{"description":"Normally omit. Only for an explicitly requested fresh extraction of the same input within 10 minutes: choose a new operation ID once, then reuse it for retries. Different input is always a separate import.","maxLength":100,"minLength":1,"type":"string"},"presentation":{"additionalProperties":false,"properties":{" ⟨91 unchanged words⟩
⟨12 unchanged words⟩ notebook, and the results of an import. Topic/area search can refresh missing or expired venue photos from public place providers without changing the saved entries. Pass importId to follow an import started by ⟨110 unchanged words⟩
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":true}
⟨8 unchanged words⟩ and dates, or re-read an earlier board. A fresh search starts a server-side provider search job and retains its board; it does not book or purchase a flight. origin and destination take an IATA airport or ⟨207 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":truefalse}
⟨44 unchanged words⟩ "maxItems":12,"type":"array"},"copyFromPublicationId":{"description":"Copy a published trip (publicationId from explore_trips) into the traveler's account","format":"uuid","type":"string"},"copyFromTripId":{"description":"Duplicate one of the traveler's own trips","format":"uuid","type":"string"},"currency":{"description":"Trip budgeting currency; defaults ⟨127 unchanged words⟩ only: departure airport IATA code (e.g. 'JFK')—; gives the stop a live fare search link ⟨175 unchanged words⟩ ,"type":"string"},"title":{"description":"Required unless copying","maxLength":120,"minLength":1,"type":"string"}},"required":["title"],"type":"object"}
⟨11 unchanged words⟩ . Requires echoing the exact trip title asconfirmTitle —confirmTitle; only call this after the traveler explicitly asks to delete the trip.This working tool returnsReturns dataand a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs topluschoose,display.resultId; calldisplay_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operationdisplay_card todisplay its details. Optional presentation controls customize the visible result without changing the action; use compact/full layout and only the sections or result selection advertised by thisshowtool.it.
⟨12 unchanged words⟩ as confirmation","type":"string"},"presentation":{"additionalProperties":false,"properties":{"layout":{"description":"Compact cards or the full view; keeps booking, add and error actions available.","enum":["compact","full"],"type":"string"}},"type":"object"},"tripId":{"format":"uuid","type": ⟨6 unchanged words⟩
EditEveryanythingchangeontoaan existing trip in one batchedcallcall. Structural actions:tripupdate_trip (details and notes(update_trip),stops (update_stop / remove_stop / move_stop,(by stopId from get_trip),days (add_day / update_day / remove_day,(by 0-based dayIndex),.andSide actions: packing (theplanningpackingstagelist), mark_booked (finalizerecordlocksa booking thetriptravelerformade),sharingvote_stopand(crewbooking;votes),reopenrefresh_stay_pricesunlocks(re-quoteitpartner-priced stays).OmittedStagefieldsactions,keepattheirmostvalue;onenullperclears.callfinalize/reopenand runAFTER thelast:otherfinalizeactionslocks—theatripfinalizedfortripsharingrejectsandeditsbooking,soreopenit in its own call first.unlocksReturnsit,datapublishandputs acompactfinalizedsummary.tripFinishonthearequestedpublicplanninglink andeditsExplore,then callunpublishdisplay_triptakesonceitforoff.theOmittedlatestfieldsitinerary.keepUsetheirdisplay_resultsvalue;withnulldisplay.resultIdclears.onlyAwhenfinalizedthetriptravelerrejectsneedsstructuralthisedits,exactsosavedreopenresult.itChooseinoneitsdisplayown callforfirst.theremove_stopfinalandresult,remove_daynotdeleteboth,data.andReturnsneverdatadisplaypluseverydisplay.resultId;intermediatecalledit.display_cardOptionalto show it. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
before
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"actions":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"action":{"const":"update_trip","type":"string"},"adults":{"description":"Adults travelling; partySize becomes adults + children","maximum":20,"minimum":1,"type":"integer"},"bookingDeadline":{"anyOf":[{"$ref":"#/properties/actions/items/anyOf/0/properties/startDate"},{"type":"null"}],"description":"Book-by date: the crew is reminded a week out, the day before and on the day while stays or flights are unbooked; null clears"},"cabinClass":{"anyOf":[{"enum":["economy","premium_economy","business","first"],"type":"string"},{"type":"null"}],"description":"Cabin that flight searches open in; null means economy"},"childrenAges":{"description":"One age per child travelling; partner booking links pre-fill from these","items":{"maximum":17,"minimum":0,"type":"integer"},"maxItems":12,"type":"array"},"coverImageUrl":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}],"description":"Cover photo URL (a stop's imageUrl works); null goes back to the automatic cover"},"currency":{"maxLength":3,"minLength":3,"type":"string"},"description":{"maxLength":2000,"type":"string"},"destinationCountryCode":{"maxLength":2,"minLength":2,"type":"string"},"destinationName":{"maxLength":120,"type":"string"},"endDate":{"$ref":"#/properties/actions/items/anyOf/0/properties/startDate"},"notes":{"anyOf":[{"maxLength":20000,"type":"string"},{"type":"null"}],"description":"The trip notebook; null clears"},"partySize":{"maximum":20,"minimum":1,"type":"integer"},"rooms":{"description":"Hotel rooms to search for","maximum":8,"minimum":1,"type":"integer"},"startDate":{"description":"Days shift with the trip","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"status":{"description":"draft | planned | booked | completed (owner only)","enum":["draft","planned","booked","completed"],"type":"string"},"title":{"maxLength":120,"minLength":1,"type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"update_stop","type":"string"},"address":{"anyOf":[{"maxLength":400,"type":"string"},{"type":"null"}]},"cost":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"MAJOR units; null clears"},"costCurrency":{"$ref":"#/properties/actions/items/anyOf/0/properties/currency"},"description":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"endTime":{"anyOf":[{"$ref":"#/properties/actions/items/anyOf/1/properties/time/anyOf/0"},{"type":"null"}]},"lat":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}]},"lng":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}]},"locationName":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"stopId":{"format":"uuid","type":"string"},"time":{"anyOf":[{"pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","type":"string"},{"type":"null"}],"description":"HH:MM; null clears the time"},"title":{"maxLength":200,"minLength":1,"type":"string"},"type":{"enum":["flight","train","transport","stay","activity","food","note"],"type":"string"}},"required":["action","stopId"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"remove_stop","type":"string"},"stopId":{"format":"uuid","type":"string"}},"required":["action","stopId"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"move_stop","type":"string"},"position":{"description":"0-based position in the day; omit = end","minimum":0,"type":"integer"},"stopId":{"format":"uuid","type":"string"},"toDayIndex":{"maximum":59,"minimum":0,"type":"integer"}},"required":["action","stopId","toDayIndex"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"add_day","type":"string"},"date":{"$ref":"#/properties/actions/items/anyOf/0/properties/startDate"},"title":{"maxLength":200,"type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"update_day","type":"string"},"date":{"anyOf":[{"$ref":"#/properties/actions/items/anyOf/0/properties/startDate"},{"type":"null"}]},"dayIndex":{"maximum":59,"minimum":0,"type":"integer"},"notes":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]}},"required":["action","dayIndex"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"remove_day","type":"string"},"dayIndex":{"maximum":59,"minimum":0,"type":"integer"}},"required":["action","dayIndex"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"finalize","type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"reopen","type":"string"}},"required":["action"],"type":"object"}]},"maxItems":50,"minItems":1,"type":"array"},"presentation":{"additionalProperties":false,"properties":{"layout":{"description":"Compact cards or the full view; keeps booking, add and error actions available.","enum":["compact","full"],"type":"string"}},"type":"object"},"tripId":{"format":"uuid","type":"string"}},"required":["tripId","actions"],"type":"object"}Trips other travelers published on Dreamfare, by destinationand/orand free text—: real itineraries with stops, photos and creator credit.Copy one intoGive thetraveler's account with copy_trip (publicationId). Sorttraveler'popular'theirorown'newest',editablethencopyusewithnextOffsetcreate_triptocopyFromPublicationId.continueUsetheitsameforsearch.inspirationThisandworkingfortoolhowreturnslocalsdataactuallyandroute acompact summarycity,without opening detailed visuals. When the requestednotworkforislivecompleteprices.orContinue thetraveler needs to choose, callsamedisplay_resultssearch withthis result's display.resultId to present the details. Do not display every intermediate result. NevernextOffset.repeatReturnsadatawriteplusordisplay.resultId;paidcalloperationdisplay_card todisplay its details.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"destination":{"description":"City, region or country the trip goes to.","maxLength":80,"minLength":2,"type":"string"},"limit":{"default":8,"description":"How many trips to return.","maximum":12,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Skip this many trips. Pass the nextOffset from the previous call.","maximum":1000,"minimum":0,"type":" ⟨95 unchanged words⟩ {"description":"Words in the title orsummarysummary.","maxLength":80,"minLength":1,"type":"string"},"sort":{"default":"popular","description":"popular: most liked, saved and copied first. newest: most recently published first.","enum":["popular","newest"], ⟨4 unchanged words⟩
The traveler's Dreamfare account snapshot: profile, membership tier,AIStardust credits, and wallet balance (commission earned through tracked bookings).This working tool returnsReturns dataand a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs topluschoose,display.resultId; calldisplay_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operationdisplay_card todisplay its details.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
Read a trip, or list tripsReadtripadatatrip,silentlyorforlistplanningtheandtraveler'seditingtripswithout(ownopeningandashared,visualnewestwidget.first)TowhenshowtripIdtheisplanomitted.toAthetriptraveler,comesusebackdisplay_trip.withReturnsits days,and stops (withstopIds for edit_trip), the packing list,and per-stop booking links.tipsWhenfor thetraveler wants todestination,booktheasharingstopstate,give themanditsper-stopbookingUrlbooking—links; bookings made throughita stop's bookingUrl earnthemthe traveler commission back.Returnsincludedataaddsandessentialsa(trackedcompactpartnersummary.linksFinishfortheanrequestedeSIM,planningrental cars andeditstransfers),thencrewcall(members,display_triproles,onceopenforinvites),thereceiptslatest(fileditinerary.bookingUseconfirmations)display_resultsandwithchatdisplay.resultId(theonlycrewwhenchat,thenewesttravelerlast;needschatBeforethispagesexactback).savedReadresult.silentlyChoosewhileoneplanning;displayshowcalltheforplanthewithfinaldisplay_card.result,Returnsnotdataboth,plusanddisplay.resultId;nevercalldisplaydisplay_cardeverytointermediateshowedit.it.
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"tripIdchatBefore":{"description":"With include chat: only messages before this ISO timestamp, to page further back","format":"uuiddate-time","type":"string"},"chatLimit":{"description":"With include chat: how many messages","maximum":100,"minimum":1,"type":"integer"},"requiredinclude":{"description":"Extra sections to fold in: essentials = tracked eSIM, rental-car and transfer links for the destination; crew = owner, collaborators with roles, and open invites; receipts = booking confirmations filed on the trip; chat = the crew chat's latest messages, including polls","items":{"enum":["tripIdessentials","crew","receipts","chat"],"type":"string"},"maxItems":4,"type":"array"},"tripId":{"description":"Omit to list the traveler's trips instead","format":"uuid","type":"string"}},"type":"object"}
Change,removeaortrip'srevokecrewonoratalktrip'stocrewit
Owner-onlyEverything that changes who is on a trip, plus the crewhousekeepingchat, in one call: invite someone, change a member's role, remove a member,orleave the trip, revoke an openinvite.invite,Aandmemberpostmayaremovemessage.themselvesRead(leave)thewithoutcrewbeingand theowner.chatIdsfirstcomewithfromget_triplist_crewinclude(crew and include chat: collaboratorId, inviteid).idsThisandworkingmembertooluserIdsreturnsalldatacomeandfromathere.compactAnyonesummary,whowithoutcanopeningeditdetailedthevisuals.tripWhenmay invite and post, only therequestedownerworkmayissetcompleteroles, remove members ortherevoketravelerinvites,needsandtoanychoose,membercallotherdisplay_resultsthanwiththethisownerresult'smaydisplay.resultIdleave.toAnpresentemailed invite leaves Dreamfare. Returns thedetails.crew,Doplusnotinvitedisplayandeverypostedintermediateforresult.theNeverpartsrepeatthataran.writeReturnsordatapaidplusoperationdisplay.resultId;tocalldisplaydisplay_carditstodetails.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"invite":{"additionalProperties":false,"description":"Create an invite link. With no email, the returned link is what to share.","properties":{"email":{"description":"Email the invite to this address; they must sign in with it to accept.","format":"email","type":"string"},"expiresInDays":{"description":"Let the link stop working after this many days.","maximum":90,"minimum":1,"type":"integer"},"maxUses":{"description":"Link invites: how many people may use it.","maximum":1000,"minimum":1,"type":"integer"},"role":{"default":"editor","description":"What the invite grants. editor: plans with the traveler. viewer: only looks.","enum":["viewer","editor"],"type":"string"}},"type":"object"},"leave":{"description":"Remove yourself from the trip. The owner cannot leave; delete the trip instead.","type":"boolean"},"post":{"additionalProperties":false,"description":"Say something to the crew in the trip's chat.","properties":{"mentionIds":{"description":"Member userIds to mention, so they get notified.","items":{"type":"string"},"maxItems":20,"type":"array"},"text":{"description":"The message. Starting it with @dreamfare summons the in-app planner into the thread.","maxLength":4000,"minLength":1,"type":"string"}},"required":["text"],"type":"object"},"presentation":{"additionalProperties":false,"properties":{" ⟨21 unchanged words⟩ :"object"},"remove":{"description":"Owner only: collaboratorIds toremovetake off the trip.","items":{"format":"uuid"," ⟨5 unchanged words⟩ :"array"},"revokeInvites":{"description":"Owner only: invite ids to kill, so the links stop working.","items":{"format":"uuid"," ⟨4 unchanged words⟩ ,"type":"array"},"setRole":{"description":"Owner only: change what these members may do.","
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false}
Build a complete day-by-day trip in one callusingwith Dreamfare's own planner: real venues(with their opening hours), a stay, activities from partner inventory, the traveler's saved places woven in, pins, photos and booking links—, all stitched server-side,in about 10 seconds.Costs Stardust credits like planning in the app (get_profile shows the balance).Preferthisit for 'plan me N days inX' requests;X'.useUse create_trip when the travelerhasdictated theexactstops themselves. The traveler'sSAVEDsaved places at the destination count even when theydon'tdo not mention them: passsavedPlaceIds/folderNamesavedPlaceIds or folderName for the ones they want in, or includeSavedPlaces ⟨23 unchanged words⟩ unbuilt and uncharged so you can ask first.Give the traveler the trip URL. Returns dataCostsandStardustacreditscompactlikesummary.planningFinishin therequested planning and editsapp,then call display_tripandonceget_profileforshows thelatest itinerary. Use display_results with display.resultId onlybalance.whenGive the travelerneeds this exact saved result. Choose one display call forthefinaltripresult,URL.notReturnsboth,dataandplusneverdisplay.resultId;displaycalleverydisplay_cardintermediatetoedit.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
⟨25 unchanged words⟩ ,"type":"string"},"currency":{"description":"ISO currency code for the trip's prices; defaults to the traveler's home currency.","maxLength":3,"minLength":3,"type":"string"},"destinationCountryCode":{"description":"ISO alpha-2 country code of the destination.","maxLength":2,"minLength":2,"type":" ⟨110 unchanged words⟩ the planner keeps these fixed and plans aroundthemthem.","properties":{"flightLegs":{"items": ⟨100 unchanged words⟩ ,"type":"object"},"partySize":{"description":"How many people travel; sizes the stay and the costs.","maximum":20,"minimum":1,"type":" ⟨28 unchanged words⟩ description":"Saved places to weave into thedaysdays;(list_saved_places)ids come from list_library.","items":{"format":"uuid"," ⟨15 unchanged words⟩ ","type":"string"},"title":{"description":"Trip title; defaults to the destination.","maxLength":120,"minLength":1,"type": ⟨6 unchanged words⟩
BookableSearch bookable activities, tours and experiences for a destination.Research, compare or attach with resultId from display.resultId and the returned productId as optionId. Legacy callersSaycanwhatattachkind withadd_option_to_tripq (kind 'activity'). Plain activity stops added'foodviatour',add_stops'sunsetalsocruise',get'daymatchedtrip topartners automatically,Sintra')soandsearchnarrowherewithonlycategory,whenflags,thetags,travelerdurationwantsoroptions.minRating. Default order is partner relevance: for a budget or a 'cheaper'asksask setmaxPrice/minPricemaxPrice or minPrice and sort'cheapest'cheapest instead of repeating thesearch; priceRange summarizes what was found. Say what kind of experience with q ('food tour', 'sunset cruise'search,'day trip to Sintra')andnarrow with category /readflagspriceRange/fordurationwhat/wasminRating.found. Each result carries tags, flags and a shortdescription; get_details ondescription.onePlainreturnsactivitythestopsfulladdedcontentwith(inclusions,add_to_tripitinerary,sourcecancellation'stops'policy,aremeetingmatchedpoint,tolanguages,partnersgallery)automatically,compare_options weighsso2–5.searchThishereworkingonlytoolwhenreturnsthedatatravelerandwantsaoptions.compactResearchsummaryone,without opening detailed visuals. When the requested work is completeorthe travelerweighneedstwo tochoosefive,callwithdisplay_resultsresearch_optionswithusing thisresult'sreply's display.resultIdtoandpresenteach productId; attach thedetails.pickDowithnotadd_to_tripdisplaysourceevery'search_result'.intermediateRead-only,result.andNeveritrepeatcostsanothing.writeReturnsordatapaidplusoperationdisplay.resultId;tocalldisplaydisplay_carditstodetails.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
⟨53 unchanged words⟩ ":{"default":"cheapest","description":"WhenWhatnotoactivitydomatches:when nothing matches. cheapestreturns= return the cheapest available, labeledalternatives;as alternatives (default) | nonepreserves=strictkeep the filtersandstrictreturnsandnoreturnresults.nothing
Search Trip.com rental carsusingfor an airport pickup and drop-off, with exact localdates/timesdates and times,driverthe driver's age andlicencetheissuinglicence'scountryissuing(ISO2).country. Ask for a missingage/licenceage or licence country; neverguess.guess either. Trip.com quotes a30–6030 to 60 driver-age band for thatrange;range, while supplier eligibility uses theactualreal age. Returned prices are rental totals, not dailyrates. Deposits are separate from the rental total. Search links require confirming the selected vehiclerates,policiesandfinal price.depositsNositin-appoutsidebookingthem.orLinksinferredopenavailabilityawhensearch thesource fails. This working tool returnstravelerdatacompletes:andtheyaconfirmcompactthesummaryvehicle,without opening detailedthevisuals.policiesWhenand therequested work isfinalcompletepriceorthere.theTheretravelerisneedsnotoin-appchoosebooking,call display_results with thisandresult'sadisplay.resultIdfailedtosourcepresentneverthemeansdetails.noDocarsnotexist.displayRead-only,everyandintermediateitresult.costsNevernothing.repeatReturnsadatawriteplusordisplay.resultId;paidcalloperationdisplay_card todisplay its details.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
⟨13 unchanged words⟩ ,"type":"string"},"driverAge":{"description":"The driver's actual age; ask, never guess","maximum":99,"minimum":18,"type":"integer"},"dropoffAirport":{"description":"Drop-off airport IATA code; defaults to the pickup airport","pattern":"^[A-Z]{3}$","type ⟨2 unchanged words⟩ {"$ref":"#/properties/pickupDate"},"dropoffTime":{"$refdescription":"#/properties/pickupTimeLocal drop-off time, HH:MM","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","type":"string"},"licenseCountry":{"description":"The driving licence's issuing country, ISO2; ask, never guess","pattern":"^[A-Z]{2}$","type":"string"},"maxTotalAmount":{"description":"Rental-total ceiling in integer minor units of currency","maximum":9007199254740991,"minimum":0,"type":"integer"},"minSeats":{"description":"Keep only cars with at least this many seats","maximum":9,"minimum":1,"type":"integer"},"pickupAirport":{"description":"Pickup airport, exact IATA code. Resolve a city name with search_flights first.","pattern":"^[A-Z]{3}$","type ⟨10 unchanged words⟩ ,"type":"string"},"pickupTime":{"description":"Local pickup time, HH:MM","pattern":"^([01]\\d|2[0-3]):[ ⟨28 unchanged words⟩ },"type":"object"},"transmission":{"description":"automatic = self-shifting gearbox | manual = stick shift","enum":["automatic","manual"],"type ⟨11 unchanged words⟩
Search and compare real flights for a route anddate from the configured sourcesdates,including direct Kiwi.com search.orSetre-readlimitantoearliertheboard.requestedoriginnumber:and1destinationfortakeoneanflight,IATA3airportfororthreemetro(thecode,default);orneverapadplainmissingcityresults.orKeepairportthenamerequestedthatsortisorder.resolvedComparehere;returnedwhenitinerariesseveralwithcities`comparison.cheapest`,match`fastest`orandnone`best`does,andthetheirreplyprice/timeisdifferences.anPriceserrorbycarryingbookingcandidates,sitesoexistaskonlythewhentravelerthatandsitesearchactuallyagainsuppliedwith aquote; never implycode.thatPassansearchIdunlistedtovendorfilter,wassortsearched.or`bookingUrl`re-readopensatheboardattributedwithoutexactanotheritineraryscrape;ona`bookOn`;partial`bookingPrice`boardiscanthatgainsite'sfaresownwhenquotereadandagain.canEverydifferfarefromcarries theheadline. `sourceUrl` is only supporting source/searchquoteevidence.ofResolveeachplacesitenamesthatwithanswered.search_airportsNeverfirstimply(LasaVegassiteisthatLAS;didSeattlenotisanswerSEA).wasAllsearched.returnedReturned amounts, minTotalAmount andminTotalAmount/maxTotalAmountmaxTotalAmount are whole-partyMINOR units. For a budgetintegersuchminorasunits;USDmaxTotal300,anduseminTotalmaxTotal:300takewithnormal currency:USD;priceBasis:totalunitsisandthepriceBasisdefault,saysorwhetherper_persontheymultipliesmean thebudget by adults plus children. Per-person output is an average over adult/child seats including any infant costs, not a separately quoted childparty oradultafare.seat. Lead with the per-seat price(`perSeatDisplay`)and its`seats`seats multiplier when the party buys more than one seat, then name`totalDisplay` once asthe whole-partytotal. Narrowtotalbyonce.priceClockrange,filterssorting,arestopslocalonto eachdirection, included/excluded airlines, outbound/returndepartureandor arrivalclock windows, duration per direction, each connection's layover, cabin/checked bags and self-transfer. Times are local to each departure/arrivalairport. Foran arrivala deadline such as home by Sunday evening,resolve the exact date and usereturnArriveBy (YYYY-MM-DDTHH:MM, local at home), not just returnArriveBefore.returnArriveBy; arriveBy is the outbound equivalent.AskbookingUrlforopens thedeparture airport and dates when absent; clarify what eveningexactmeansitineraryifonnobookOn,cutoffitineraryUrl issupplied. Search earlier return departures too when an overnight journey would otherwise missthattheprovider'sdeadline.ownTopage,comparesourceUrlroutesisorresearchdates,evidencesearchonly.eachAttachrequestedaoptionfare withthe sameadd_to_tripparty,sourcecabin'flight',currency andthisfilterssearchId andcompare onlythereturnedfare'sfares.offerId. Prices are indicative untilbooking; disclose separate tickets when recommending self-transfer. Use add_flight_to_trip withthesearchId and fare id to save one. For a smaller view or named fares already returned, call get_flights with searchId and presentation.ids. presentation.limit overrides limit; layout and sections shape the widget without removing essential actions. This workingtravelertoolbooks.returnsReturns dataand a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs topluschoose,display.resultId; calldisplay_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operationdisplay_card todisplay itsshowdetails.it.
⟨88 unchanged words⟩ },"cabin":{"default":"economy","description":"economy = the standard cabin | premium_economy = the extra-legroom cabin | business = lie-flat or wide seat | first = the top cabin","enum":["economy","premium_economy","business", ⟨101 unchanged words⟩ at the outbound origin"},"departDate":{"description":"Outbound date, YYYY-MM-DD, within 330 days. Omit only when refining with searchId.","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"destination":{"description":"Where it lands: an IATA airport or metro code, or a city or airport name. Omit only when refining with searchId.","maxLength":360,"minLength":32,"type":"string"},"excludedAirlines":{" ⟨235 unchanged words⟩ separate-ticket itineraries"},"origin":{"description":"Where the flight starts: an IATA airport or metrocode;coderesolve(LHR,placeLON),namesor a city or airport name resolved here ('Lisbon' becomes LIS). Omit only when refining withsearch_airports
RealFind real venues for a destination—: restaurants, activities, hotels, landmarks,shoppingand—shopping, with ratings, pins,and photos,(from partner inventory+plus cached GooglePlaces, the app's own Explore surface).Places. Use it to ground a plan in real places.Each resultForcarrieshotelsanpassidcheckIn anditemDraft: prefer resultId (this reply's display.resultId) + optionId (the result's id) for research, comparison or attachment. Legacy callers can attach with add_option_to_trip (kind 'place', echoing the itemDraft unchanged) to keep its pin, photocheckOut,and any partner bookability. For hotels pass checkIn/checkOut (or use search_stays): without them pricesare forcover a sample window a month out,and the reply says so inpricedWindow.pricedWindow,Hotelsand a hotel added to a dayareis re-datedto that dayandre-quoted automatically.re-quoted.FinerNarrowasks:with openNow/or openAtfor 'open now' / 'open Friday at 8pm', priceLevelsfor '$'–'$$$$' budgets, minRating,near + radiusKm for 'around the cathedral'. A result's placeId (Google places) or itemDraft goes to get_details for hours, summary, reviews, features, photosand— at landmarks — tours and ticketsnear withprices; compare_options weighs 2–5 side by side.radiusKm. minRatinghere is the score onreads each source's own scale: hotels run0–100 to 10, Google places and tours0–5. The0planner'stoown5.search_placesResearchinsideatheresult,DreamfareorappweighistwoGoogle-onlytoandfive,0–5.withThisresearch_optionsworkingusingtoolthisreturnsreply'sdatadisplay.resultId anda compact summary, without opening detailed visuals. Whentherequested work isresult'scompleteid;orattach thetraveler needs topickchoose,withcalladd_to_tripdisplay_resultssourcewith'search_result',thiswhichresult'skeepsdisplay.resultIditstopin,presentphototheanddetails.anyDopartnernotbookability.displayRead-only,everyandintermediateitresult.costsNevernothing.repeatReturnsadatawriteplusordisplay.resultId;paidcalloperationdisplay_card todisplay its details.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
⟨93 unchanged words⟩ boolean"},"kind":{"description":"activity = tours and experiences | hotel = places to stay | restaurant = places to eat | shopping = shops and markets | landmark = sights and attractions","enum":["activity","hotel"," ⟨340 unchanged words⟩ :"best = relevance (default) | cheapest = lowest price first | rating = best rated first","enum":["best","cheapest"," ⟨8 unchanged words⟩
Search stays for a city and exact dates. Prices include taxes and fees for the quoted accommodation, and guests is the party sharing it, not a room count. Use budget {amount, currency, basis:per_night'per_night'} or maxNightlyAmount in integerMINORminor units (USD 15000=is $150), and sort cheapestforwhencheapertheoptions.traveler wants cheaper. Set constraintMode strict for real requirements; prefer allows labeled alternatives.Prices include taxes and fees for the quoted accommodation. guests is the party sharing it, not a room count.near searches around alandmark;landmark, nameisfinds one namedproperty;property, and keywords matches style words in listing names. For hotelsaroundnear food, galleries or other interests,pass interestsinstead.:Eacheachinterestone is resolved to real places at the destination ⟨4 unchanged words⟩ straight-line distance. Never call that distance a walkingtime. No verifiedtime,placesandorclaimcoordinatesnomeansmatchnowithoutclaimedverifiedmatch.places. Property type is inferred,not supplier-certified; unknownPolicy controls unknown typefromevidence.listinglimitevidence,controlsnotreturnedcertifiedresults,bydefaultthe8.supplier. No matches and a providerfailuresfailure aredistinct;different answers; never invent a matching quote. Researchoptions with get_details or compare_options.aResearchpropertyorwithsaveresearch_options using this reply's display.resultIdas resultIdandathe property's propertyIdas,optionId.attachAttachit withadd_option_to_trip;add_to_tripusesource 'search_result', and present the returned bookingUrl for booking.This working tool returns data and a compact summaryRead-only,without opening detailed visuals. When the requested work isandcompleteitorcoststhenothing.travelerReturnsneedsdatatopluschoose,display.resultId; calldisplay_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operationdisplay_card todisplay its details.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
⟨90 unchanged words⟩ {"type":"null"}],"description":"Usestrictfor=requirements:everynofilterrelaxation.is a requirement, nothing is relaxed | preferpermits= labeledalternatives.alternativesOmittedareusesallowedpreferwhenfornothingcompatibility.matches exactly (the default)"},"currency":{"anyOf":[{"pattern ⟨57 unchanged words⟩ type":"null"}],"description":"Legacyfallbackalias
RetrieveSearch real dated train fares for a route, or re-read an earlier search. Results carry departures, arrivals, operators, durations and changes. Prices cover the requestedadults;adults, and returnOptions are separate one-way quotes.SortPassbysearchIdcheapest,alonefastesttoorfilterearliest,orandsortfilterawhole-partysearchpricewithoutandaskingchanges.theUsesellerstheagain;returnedpass searchIdandwith journeyId fordetails, refinements and saving a train. Source failures do not meanonenofare'strainsstoredexist.details.Search-pageStartlinksaarefreshprohibited;searchneverwhensubstitutethearoute,promotionaldate,from-pricecurrency orapassengergenericcountsellerchanges.cardAforsourceanfailureindividualdoesfare.notThismeanworkingnotooltrainsreturnsrun.dataNeverandsubstitute acompactpromotionalsummaryfrom-price,withoutaopeningsellerdetailedsearchvisuals.pageWhenorthearequestedgenericworklistingisforcompleteanorindividualthefare.travelerAttachneedsatofarechoose,withcalladd_to_tripdisplay_resultssourcewith'train', thisresult's display.resultId tosearchIdpresentand thedetails. DounchangednotjourneyId.displayRead-only,everyandintermediateitresult.costsNevernothing.repeatReturnsadatawriteplusordisplay.resultId;paidcalloperationdisplay_card todisplay its details.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
⟨12 unchanged words⟩ ,"type":"string"},"departAfter":{"description":"Earliest outbound departure, HH:MM local, including the time it takes to reach the station","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","type":"string"},"departBefore":{"description":"Latest outbound departure, HH:MM local","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","type":"string"},"departDate":{"description":"Outbound travel date, YYYY-MM-DD. Omit only when refining with searchId.","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"destination":{"description":"Where it ends, as a city or station name. Omit only when refining with searchId.","maxLength":160,"minLength":2,"type":"string"},"journeyId":{"description":"With searchId: return the stored details of that one fare, exactly as it was quoted.","type":"string"},"limit":{"default":6,"maximum":20,"minimum":1,"type":"integer"},"maxChanges":{"description":"Most changes of train allowed on a journey; 0 means direct","maximum":8,"minimum":0,"type":"integer"},"maxDurationMinutes":{"description":"Longest acceptable journey, in minutes","exclusiveMinimum":0,"type":"integer"},"maxTotalAmount":{"description":"Whole-party one-way fare ceiling in integer minor units","minimum":0,"type":"integer"},"origin":{"description":"Where the journey starts, as a city or station name. Rail has no universal station codes. Omit only when refining with searchId.","maxLength":160,"minLength":2,"type":"string"},"passengers":{"default":1,"description":"Adult travelers; adult quotes never cover children","maximum":9,"minimum":1,"type":" ⟨26 unchanged words⟩ object"},"returnDate":{"$ref":"#/properties/departDate","description":"Explicit return travel date. Omit for one way; never repeat the outbound date."
⟨6 unchanged words⟩ , home currency, nationality, and the visited-countrieslist (a FULL replacement — read get_profile first when adding to it).list. Omitted fields keep their value.This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is completevisitedCountriesorreplaces thetraveler needs towholechooselist,callsodisplay_resultsreadwithget_profilethisfirstresult'swhendisplay.resultIdadding topresent the details. Do not display every intermediate result. Neverit.repeatReturnsadatawriteplusordisplay.resultId;paidcalloperationdisplay_card todisplay its details.showOptionalit. presentationcontrols(optional)customizeshapesthewhatvisibleisresultshown without changing theaction;action:usecompactcompact/fullor full layout, and only thesections or resultlimit,selectionidsadvertisedorbysections thistool.tool advertises.
⟨12 unchanged words⟩ {"type":"null"}],"description":"Short profile blurb; null clears it."},"displayName":{"description":"The name other travelers see.","maxLength":60,"minLength":1,"type":"string"},"homeCurrency":{"description":"ISO currency code new trips and prices default to.","maxLength":3,"minLength":3,"type":" ⟨9 unchanged words⟩ type":"null"}],"description":"ISOalpha-2;alpha-2 country code of the passport; null clears it."},"presentation":{"additionalProperties":false,"properties ⟨22 unchanged words⟩ },"visitedCountries":{"description":"ISO alpha-2codes;codes of every country visited; replaces the wholelistlist.","items":{"maxLength":2,"minLength" ⟨9 unchanged words⟩
Add to a trip — Put something on a trip as stops. source says what: stops (plain stops you describe in stops), saved_places (library places with their pins, photos and links; by savedPlaceIds, folderName, or importId for everything an import found), search_result (one option from search_stays, search_activities or search_places by resultId + optionId), flight (a fare from search_flights by searchId + offerId), train (a fare from search_trains by searchId + journeyId), receipt (a booking confirmation as text or base64 image/PDF; parsed, filed on the trip, and the matching stop marked booked). Say which day wi…
Display a card — Show a Dreamfare card to the traveler: a trip's itinerary (tripId) or the details of an earlier result (resultId, from that tool's display.resultId). Call it once, after the requested work is done or when the traveler asks to see something; never after every intermediate call. It reads a saved snapshot retained for 30 minutes and never repeats a search, edit, import, message or charge. If a snapshot has expired, refresh it with a read-only lookup rather than repeating a write. This is the only tool that opens a visual; every other tool returns data. presentation (optional) shapes what is show…
Save and tidy the traveler's library — Change what the traveler has saved, in one call: save a place, delete places, move places into a folder or out to unsorted, rename a place, create, rename or delete folders, and add or remove travel tips. Save a place when the traveler wants it remembered without putting it on a trip yet; put library places on a trip with add_to_trip source=saved_places. Ids and folder names come from list_library. Deleting a folder keeps its places as unsorted. Returns the places shelf, plus savedPlace and tips for the parts that ran. Returns data plus display.resultId; call display_card to show it. presenta…
Import places and tips from a link, text or file — Pull the real places and travel tips out of something the traveler shares and save them to their library. source url reads a TikTok, Instagram, YouTube, Facebook, Reddit, blog or other travel page on the Dreamfare server, subject to the source being reachable. source text reads words they pasted. source file reads a screenshot or travel PDF. Runs in the background: poll list_library with the returned importId until status is done or failed, about 20 to 90 seconds. Every place and tip is saved with its source, so list_library finds them later. Once done, add them to a trip with add_to_trip sou…
Read the traveler's saved library — Read what the traveler has saved: their places with folders, their travel-tips notebook, and the results of an import. Pass importId to follow an import started by import_places: while status is neither done nor failed, call again after about 15 seconds. Pass query or area to search places and tips together, with the source each one came from. Pass folderName, type or sort to browse the places shelf itself, and offset with the returned nextOffset to continue. Tips are advice, never itinerary stops. Put library places on a trip with add_to_trip source=saved_places (by savedPlaceIds, folderName…
Research one option, or compare a few — Research options from an earlier search: one in depth, or two to five side by side. Pass resultId (that search reply's display.resultId) with optionIds. One id returns everything known about that option: photos, an editorial summary and what reviewers say, key facts (stars, guest score, capacity, cancellation and instant-book policies, duration, languages, meeting point, inclusions, itinerary, opening hours, price level, phone, website), features, the exact location, and prices per booking site for stays plus tours and tickets at landmarks. Two to five ids return one table: price, rating and …
Put a searched fare on a trip — Attach one fare from search_flights to a trip as a flight stop. Pass the searchId and the fare's id exactly as returned. The stop lands on the day matching its departure date. It is a plan, not a booking: the traveler books through the stop's Book button, which opens the site that quoted the price. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never displa…
Attach a searched option to a trip — Attach one search result to a trip as a stop: kind 'stay' / 'activity' takes the option/offer object from the matching search tool; kind 'place' takes a search_places result's itemDraft. Prefer resultId (the search's display.resultId) + optionId instead of echoing an object: kind and searched dates/guests are restored server-side. References expire after 30 minutes; changed dates or occupancy require a new search. Legacy object callers need kind and stay checkIn/checkOut. Say which day with dayIndex or date (a stay defaults to its check-in date) and, when the traveler has one in mind, the sta…
Add a booking confirmation to a trip — Supply a booking confirmation as text or base64 image/PDF bytes (hotel, flight, tour, train — the email text or its key lines) and Dreamfare files it on the trip: provider, confirmation code, dates and amount are parsed, and when it clearly matches a stop that stop is marked booked. Pass stopId to link it to a specific stop instead of matching by name. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not…
Put saved places into a trip — Turn the traveler's library into itinerary stops WITH their pins, photos, tips and partner links intact (re-adding by name via add_stops would lose those). Pick places by id (list_saved_places), a whole folder, or everything a video import found (importId from import_video — the video's own day hints place each stop). Whole-city entries are skipped. Places land on dayIndex unless spreadAcrossDays is set. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the trav…
Add stops to a trip — Add stops (places, activities, meals, stays, transport) to an existing Dreamfare trip. dayIndex is 0-based; read the trip first with get_trip if unsure of its days. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without changing the action; use compact/full la…
Save an unchanged quoted train fare by searchId and journeyId to its departure day on a trip. This saves a plan, not a reservation. Requires tripId outside a trip chat. Never reconstruct price, dates or booking URLs from prose. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation contro…
Compare options side by side — Two to five options of one kind (stays, activities or places) in one table: price (per night / per person / total), rating and reviews, distance, duration, stops, cancellation, features — the best cell in each row is marked and `verdict` names the winners (cheapest, best rated, closest, fastest). Each is researched like get_details, so the table is exact, not a summary of the search screen. Use it whenever the traveler is weighing a few ('which of these', 'A or B', 'the cheapest that's still well rated'). Prefer resultId (the search reply’s display.resultId) + optionIds, ordered as requested.…
Copy a trip into the traveler's account — Make the traveler their own editable copy of a trip: a published one (publicationId from explore_trips — keeps the creator's attribution and re-bases flights on the traveler's home airport) or one of their own trips (tripId — dates, stops and the shared packing list come along). Returns the new trip. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never disp…
Display result details — Show the detailed visual for one previous tool result using its display.resultId. Call after completing the requested work, when the traveler needs to compare or choose, or when they ask to see details. Do not call after every intermediate lookup or mutation. This reads an account-bound snapshot retained for 30 minutes: it never repeats a search, mutation, import, message, or credit charge. Use display_trip with tripId for the latest itinerary. If a snapshot is unavailable, use a read-only lookup to refresh it; never repeat a mutation just to get a display ID. Optional presentation controls c…
Display a trip — Show the visual itinerary to the traveler. Call once after completing all requested planning or edits, or when they explicitly ask to see the trip. Do not call between intermediate edits. This is read-only and does not finalize or lock the trip. Returns days, stops (with stopIds for edit_trip), the packing list, and per-stop booking links. When the traveler wants to book a stop, give them its bookingUrl — bookings through it earn them commission back. Optional presentation controls customize the visible result without changing the action; use compact/full layout and only the sections or resul…
Research one option — Everything known about ONE hotel, tour or place, researched: a photo gallery, what's good about it (editorial summary, what reviewers say), key facts (stars, guest score, capacity, cancellation and instant-book policies; duration, languages, meeting point, inclusions and exclusions, itinerary; opening hours, price level, phone, website), features/amenities, the exact location, and prices — per booking site for hotels, tours & tickets with prices at landmarks. Use it when the traveler asks about a specific option ('tell me more about…', 'is it near…', 'what's included', 'can I cancel', 'is it …
Refine and compare a flight search — Read an existing search_flights board without another scrape. Use presentation.limit:1 or 3 for one or three fares; presentation.ids selects and orders exact offerId values before comparison. Keep the original searchId. Price, airline, stops, bags, local-time and duration filters narrow the retained candidates; sort changes their order. The original route, dates, party, cabin, currency and source constraints remain fixed. Start search_flights again to broaden the original search or change those fields. A partial board may gain fares when read again. Missing IDs and expired searches return exp…
Check an import's results — Status and results of a video/post import: the extracted places with their areas, notes, per-place tips, and day assignments. While status isn't 'done' (or 'failed'), poll again after ~15s. When done, add_saved_places_to_trip (importId) puts every place into a trip with its pin, photo and tips; plan_trip (savedPlaceIds) plans days around them. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display …
Show the stored details of one real train fare. Pass searchId and journeyId from search_trains. Never reconstruct a fare from prose. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without changing the action; use compact/full layout and only t…
Import places from a screenshot or PDF — Read a traveler-provided screenshot or travel PDF into saved places and tips. Supply raw base64 bytes (maximum 8,000,000 characters). Uses the same membership and import credits as import_video. Poll get_import using the returned id. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation …
Import places from pasted text — Extract the real places from text the traveler pastes — notes, a friend's list, a blog post, an itinerary email — and save them (with any tips) to their library, exactly like a video import. Runs asynchronously: poll get_import. Costs Stardust credits like importing in the app (failed imports refund). Needs at least 40 characters. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every interme…
Import travel places and tips from a link — Extract real places and travel tips from a TikTok, Instagram, YouTube, Facebook, Reddit, blog or other travel web page. Send the shared URL directly. The Dreamfare server reads the page or processes its video, subject to source availability. Use import_text for pasted text. Runs asynchronously: poll get_import for results. Found places and general tips are saved with recorded sources and can be found with list_saved_finds. Once done, add places to a trip with add_saved_places_to_trip (importId keeps pins, photos and tips) or plan around them with plan_trip. General travel tips are advice, not…
Invite someone to a trip — Create an invite link for a trip, optionally emailed to one person (they must sign in with that email to accept). Roles: editor plans with you, viewer only looks. Anyone who can edit the trip can invite; the link is what to share when no email is given. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Op…
Who is on a trip — The trip's crew: owner, collaborators with their roles, and (for the owner) the open invite links. Use it before inviting, removing, or @-mentioning someone in the chat. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without changing the actio…
Read a trip's booking confirmations — Every receipt filed on a trip with its parsed facts and the stop it's linked to. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without changing the action; use compact/full layout and only the sections or result selection advertised by this t…
Find saved places and travel tips — Search the traveler's saved places AND travel tips together, including text, Reddit and blogs, with recorded original sources. Use area for the destination and query for a short topic such as airport train. General tips accompany area searches. Use kind only to request places or tips alone, and nextOffset to continue. This already includes both kinds; do not repeat list_travel_tips for the same request. Tips are advice, never itinerary stops. Add a place only on request using add_saved_places_to_trip with its id. This working tool returns data and a compact summary, without opening detailed v…
List saved places — For mixed saved places and tips, use list_saved_finds. The traveler's saved-places library: folders and the places in them (optionally one folder, or 'unsorted'). Put them on a trip with add_saved_places_to_trip (ids or a folder) or plan a trip around them with plan_trip. Search titles and subtitles with q, separate saved areas from individual places, sort, and continue with nextOffset. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resu…
Read the traveler's tips notebook — The traveler's travel-tips notebook: their own notes plus per-place advice mined by video imports ('go before 8am', 'cash only'). Optionally filter by area name. Surface relevant tips when planning a destination they cover. For mixed saved places and tips or topic search, use list_saved_finds. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or …
List the traveler's trips — List the traveler's Dreamfare trips (own and shared), newest first — a lookup for trip ids. Use get_trip to read silently, or display_trip to show the itinerary after planning. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details.
Edit a trip's packing list — Add, check off, uncheck, or remove packing-list items on a trip. Item ids come from get_trip's packing array (or this tool's response). Personal items are visible only to this traveler; shared items belong to the whole crew. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls …
Tidy the saved-places library — Housekeeping for the traveler's library in one call: delete places, move places into a folder (or out to unsorted), rename a place, create/rename/delete folders (deleting a folder keeps its places as unsorted). Ids and folder names come from list_saved_places. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its deta…
Edit the traveler's tips notebook — Add or remove entries in the traveler's travel-tips notebook. Tips can be general or scoped to an area so they resurface when a trip goes there. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without changing the action; use compact/full layou…
Mark a stop as booked — Record that the traveler completed a booking for a stop (on the partner site or elsewhere). When they booked through the stop's tracked bookingUrl this also opens the commission credit that pays their share back once the partner reports it. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presen…
Post in the trip's group chat — Say something to the crew in the trip's chat. Mention members by userId (list_crew). Starting the text with @dreamfare summons the in-app planner into the thread. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without changing the action; use …
Read the trip's group chat — The latest messages in a trip's crew chat (newest last), including polls. Pass `before` (an ISO timestamp) to page further back. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without changing the action; use compact/full layout and only the s…
Filter or sort an existing train search without querying sellers again. Prices and budgets are whole-party one-way integer minor units. Outbound clock filters do not apply to the return. Use a new search when route, date, currency or passengers change. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Opt…
Re-check hotel prices on a trip — Re-quote every upcoming partner-priced stay on the trip against live rates and report what moved (previous → current). At most once per stay per day. Returns the refreshed trip. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without changing the action; use co…
Save a place for later — Save a place to the traveler's library without putting it on a trip yet — 'remember this for my next Lisbon trip'. Optionally file it into a named folder (created if new). Saved places go onto any trip later via add_saved_places_to_trip. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentat…
Find airport codes — Resolve a city or airport name to IATA codes for search_flights ('Lisbon' → LIS; 'London' → LON, the metro code covering LHR/LGW/STN/LTN, plus each airport). Call it whenever the traveler names a place rather than a code — never guess a code. A city (kind 'city') code searches every airport in that city and is the right pick unless a specific airport was named. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the detail…
Share a trip publicly — Publish a finalized trip to a public link (dreamfare.app/p/…) and Explore, republish it after edits, or unpublish it. Owner only. With no action it just reports the current share state and link. Bookings made from the public copy earn the author. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional …
Trip essentials: eSIM, rental car, transfers — Tracked partner links for the trip's destination country: a travel eSIM (data the moment they land), rental cars, airport pickup and private transfers. Booking through these links earns the traveler's commission share, like stops. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation con…
Vote on a stop — Thumbs up (1) or down (-1) on a stop the crew is deciding about, or 0 to take a vote back. Tallies appear on get_trip stops as votes {up, down, mine}. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without changing the action; use compact/full…
⟨100 unchanged words⟩ ), unchanged","type":"object"},"optionId":{"description":"Exact propertyId (stay), productId (activity), or id (place) from that search reply","maxLength":300,"minLength":1,"type":"string"},"presentation":{"additionalProperties":false,"properties":{" ⟨19 unchanged words⟩ "string"}},"type":"object"},"resultId":{"description":"The search reply's display.resultId; account-bound and retained for 30 minutes","format":"uuid","type":"string"},"time":{"anyOf":[{"pattern":"^ ⟨23 unchanged words⟩ type":"string"}},"required":["tripId","kind","option"],"type":"object"}
⟨55 unchanged words⟩ a specific stop instead of matching by name. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨56 unchanged words⟩ Places land on dayIndex unless spreadAcrossDays is set. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨18 unchanged words⟩ first with get_trip if unsure of its days. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨82 unchanged words⟩ , 'the cheapest that's still well rated').EchoPrefer resultId (the searchresultreply’s display.resultId) + optionIds, ordered as requested. Legacy callers can echo objects unchanged in`options`;options; everycolumn'scolumn’s itemDraft/option goes to add_option_to_trip. Use criteria to focus ⟨33 unchanged words⟩ , distance, features. Unavailable facts are reported explicitly. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨115 unchanged words⟩ "minLength":2,"type":"string"},"optionIds":{"description":"Exact IDs from the same search result, in comparison order; do not combine with options","items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":5,"minItems":2,"type":"array"},"options":{"items":{"additionalProperties":{},"description":" ⟨78 unchanged words⟩ ":"array"}},"type":"object"}},"requiredresultId":[{"kinddescription":"The search reply's display.resultId; account-bound and retained for 30 minutes","optionsformat"]:"uuid","type":"string"}},"type":"object"}
⟨43 unchanged words⟩ list come along). Returns the new trip. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨87 unchanged words⟩ URL — always give the traveler that URL. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨49 unchanged words⟩ {"description":"Trip budgeting currency; defaults to the traveler's home currency, then USD","maxLength":3,"minLength":3," ⟨320 unchanged words⟩
⟨25 unchanged words⟩ the traveler explicitly asks to delete the trip. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨68 unchanged words⟩ so reopen it in its own call first. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨34 unchanged words⟩ then use nextOffset to continue the same search. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨87 unchanged words⟩ it open Sunday') or before recommending one.PassPrefer resultId (the search reply’s display.resultId) + optionId to restore the exact option and search window. Legacy callers can pass the search result object as `option` (or a search_places result's ⟨23 unchanged words⟩ dates. The reply's itemDraft/option go to add_option_to_trip unchanged. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨150 unchanged words⟩ result's itemDraft","type":"object"},"optionId":{"description":"Exact propertyId (stay), productId (activity), or id (place) from that search reply","maxLength":300,"minLength":1,"type":"string"},"presentation":{"additionalProperties":false,"properties":{" ⟨55 unchanged words⟩ ":"array"}},"type":"object"}},"requiredresultId":[{"kinddescription"]:"The search reply's display.resultId; account-bound and retained for 30 minutes","format":"uuid","type":"string"}},"type":"object"}
⟨100 unchanged words⟩ provider page, and sourceUrl is only research/search evidence. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details.
⟨53 unchanged words⟩ :MM local at the outbound destination"},"arriveBy":{"description":"Absolute outbound arrival deadline YYYY-MM-DDTHH:MM in the arrival airport local calendar","pattern":"^\\d{4}-\\d{2}-\\d{2}T([01]\\d|2[0-3]):[0-5]\\d$","type":"string"},"cabinBag":{"anyOf":[{"anyOf":[{ ⟨428 unchanged words⟩ :MM local at the return destination; requires returnDate"},"returnArriveBy":{"$ref":"#/properties/arriveBy","description":"Absolute home arrival deadline YYYY-MM-DDTHH:MM in the home airport local calendar; requires returnDate. Use for home by Sunday evening instead of a clock-only filter."},"returnDepartAfter":{"$ref":"#/properties/departAfter/anyOf/0/anyOf/1", ⟨69 unchanged words⟩
⟨44 unchanged words⟩ tips; plan_trip (savedPlaceIds) plans days around them. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨12 unchanged words⟩ balance (commission earned through tracked bookings). This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
ReadonetripDreamfaredatatrip:silently for planning and editing without opening a visual widget. To show the plan to the traveler, use display_trip. Returns days, stops (with stopIds for edit_trip), ⟨19 unchanged words⟩ — bookings through it earn them commission back.OptionalReturnspresentationdatacontrolsandcustomizea compact summary. Finish thevisiblerequestedresultplanningwithoutandchangingedits, then call display_trip once for theaction;latestuseitinerary.compact/fullUselayoutdisplay_resultsandwith display.resultId only when thesectionstravelerorneeds this exact saved result. Choose one display call for the final result,selectionnotadvertisedboth,byandthisnevertool.display every intermediate edit.
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"presentation":{"additionalProperties":false,"properties":{"layout":{"description":"Compact cards or the full view; keeps booking, add and error actions available.","enum":["compact","full"],"type":"string"},"sections":{"description":"Show only these optional sections. Identity and essential actions remain available; omit to keep the full view.","items":{"enum":["itinerary","budget","packing","tips"],"type":"string"},"maxItems":4,"minItems":1,"type":"array"}},"type":"object"},"tripId":{"format":"uuid","type": ⟨5 unchanged words⟩
⟨29 unchanged words⟩ as import_video. Poll get_import using the returned id. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨48 unchanged words⟩ imports refund). Needs at least 40 characters. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
Import travel placesfromandatipsvideofromorapostlink
Extractthereal places and travel tips from a TikTok, Instagram, YouTube, Facebook,orReddittravel link — watched,transcribed, and geocoded.blogWhenortheothertravelertravelshareswebsuchpage.aSendlink,thecallsharedthisURLtooldirectly.withThetheDreamfareURLserverdirectly:reads theDREAMFARE SERVER fetchespageandorwatchesprocessestheits video,so never claim yousubjectcannottoopensourcelinksavailability.orUseaskimport_text foranpastedupload.text. Runs asynchronously(~30–90s): poll get_import fortheresults. Found places(withandtheirgeneral tips)landareinsavedthewithtraveler'srecordedsaved-placessourceslibrary;andoncecan be found with list_saved_finds. Once done,dropaddthemplacesintoto a trip with add_saved_places_to_trip (importId—keeps pins, photos and tips) or plan around them with plan_trip. General travel tips are advice, not stops. Costs Stardust credits, exactly like importing in the app (failed imports refund). This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨31 unchanged words⟩ object"},"url":{"description":"Thevideo/postvideo,linkpost or blog URL, as shared","format":"uri"," ⟨8 unchanged words⟩
⟨41 unchanged words⟩ what to share when no email is given. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨20 unchanged words⟩ removing, or @-mentioning someone in the chat. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨8 unchanged words⟩ parsed facts and the stop it's linked to. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
For mixed saved places and tips, use list_saved_finds. The traveler's saved-places library: folders and the places ⟨37 unchanged words⟩ individual places, sort, and continue with nextOffset. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨26 unchanged words⟩ relevant tips when planning a destination they cover. For mixed saved places and tips or topic search, use list_saved_finds. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨8 unchanged words⟩ newest first — a lookup for trip ids.ToUse get_trip to read silently, or display_trip to show the itinerary after planning. This working tool returns data and atripcompact summary,followwithoutwithopeningget_tripdetailed visuals. When the requested work is complete or the traveler needs to choose,whichcallrendersdisplay_results with this result's display.resultId to present thetripdetails.card.Do not display every intermediate result. Never repeat a write or paid operation to display its details.
⟨29 unchanged words⟩ come from list_crew (collaboratorId, invite id). This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨30 unchanged words⟩ traveler; shared items belong to the whole crew. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨32 unchanged words⟩ . Ids and folder names come from list_saved_places. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨18 unchanged words⟩ so they resurface when a trip goes there. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨33 unchanged words⟩ their share back once the partner reports it. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨128 unchanged words⟩ ask first. Give the traveler the trip URL. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨50 unchanged words⟩ "minLength":2,"type":"string"},"endDatedurationDays":{"$ref":"#/properties/startDate","description":"UpNumbertoof14itinerarydays;days,datelesseventripswithoutgetcalendar dates. With one date, derives the other; with both dates, must equal their inclusive span. Default 4dayswhen dates do not determine duration.","maximum":14,"minimum":1,"type":"integer"},"endDate":{"$ref":"#/properties/startDate"},"folderName":{"description":"Weave in every place ⟨35 unchanged words⟩ it before you've asked.","type":"boolean"},"logistics":{"additionalProperties":false,"description":"Already-booked stays and flights; the planner keeps these fixed and plans around them","properties":{"flightLegs":{"items":{"additionalProperties":false,"properties":{"carrier":{"pattern":"^[A-Za-z0-9]{2,3}$","type":"string"},"date":{"$ref":"#/properties/startDate"},"leg":{"enum":["outbound","inbound"],"type":"string"},"number":{"maxLength":20,"minLength":2,"type":"string"}},"required":["number","leg"],"type":"object"},"maxItems":8,"type":"array"},"flights":{"additionalProperties":false,"properties":{"inbound":{"maxLength":20,"minLength":2,"type":"string"},"outbound":{"maxLength":20,"minLength":2,"type":"string"}},"type":"object"},"stay":{"$ref":"#/properties/logistics/properties/stays/items"},"stays":{"items":{"additionalProperties":false,"properties":{"area":{"maxLength":200,"minLength":1,"type":"string"},"checkIn":{"$ref":"#/properties/startDate"},"checkOut":{"$ref":"#/properties/startDate"},"kind":{"enum":["hotel","rental","friends"],"type":"string"},"name":{"maxLength":200,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},"maxItems":6,"type":"array"}},"type":"object"},"partySize":{"maximum":20,"minimum ⟨71 unchanged words⟩
⟨19 unchanged words⟩ @dreamfare summons the in-app planner into the thread. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨14 unchanged words⟩ (an ISO timestamp) to page further back. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨22 unchanged words⟩ per stay per day. Returns the refreshed trip. Returns data and a compact summary. Finish the requested planning and edits, then call display_trip once for the latest itinerary. Use display_results with display.resultId only when the traveler needs this exact saved result. Choose one display call for the final result, not both, and never display every intermediate edit. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨34 unchanged words⟩ places go onto any trip later via add_saved_places_to_trip. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
Bookable activities, tours and experiences for a destination.AttachResearch,onecompare or attach with resultId from display.resultId and the returned productId as optionId. Legacy callers can attach with add_option_to_trip (kind 'activity'). Plain activity stops added ⟨88 unchanged words⟩ point, languages, gallery), compare_options weighs 2–5. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨57 unchanged words⟩ right pick unless a specific airport was named. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details.
⟨222 unchanged words⟩ self-transfer. Times are local to each departure/arrival airport. For an arrival deadline such as home by Sunday evening, resolve the exact date and use returnArriveBy (YYYY-MM-DDTHH:MM, local at home), not just returnArriveBefore. arriveBy is the outbound equivalent. Ask for the departure airport and dates when absent; clarify what evening means if no cutoff is supplied. Search earlier return departures too when an overnight journey would otherwise miss the deadline. To compare routes or dates, search each requested ⟨56 unchanged words⟩ sections shape the widget without removing essential actions. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details.
⟨53 unchanged words⟩ :MM local at the outbound destination"},"arriveBy":{"description":"Absolute outbound arrival deadline YYYY-MM-DDTHH:MM in the arrival airport local calendar","pattern":"^\\d{4}-\\d{2}-\\d{2}T([01]\\d|2[0-3]):[0-5]\\d$","type":"string"},"cabin":{"default":"economy","enum": ⟨548 unchanged words⟩ :MM local at the return destination; requires returnDate"},"returnArriveBy":{"$ref":"#/properties/arriveBy","description":"Absolute home arrival deadline YYYY-MM-DDTHH:MM in the home airport local calendar; requires returnDate. Use for home by Sunday evening instead of a clock-only filter."},"returnDate":{"anyOf":[{"anyOf ⟨68 unchanged words⟩
⟨34 unchanged words⟩ plan in real places. Each result carries an id and itemDraft:attachpreferoneresultIdto(thisareply'stripdisplay.resultId) + optionId (the result's id) for research, comparison or attachment. Legacy callers can attach with add_option_to_trip (kind 'place', echoing the itemDraft ⟨97 unchanged words⟩ with prices; compare_options weighs 2–5 side by side. minRating here is the score on each source's own scale: hotels run 0–10, Google places and tours 0–5. The planner's own search_places inside the Dreamfare app is Google-only and 0–5. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
Live hotel/stay inventory with realSearchpricesstays for adestinationcity anddateexactwindow.dates.EveryUse budget {amount,currency,basis:per_night}includesortaxesmaxNightlyAmountandinfees;integernightlyMINORisunitstotal(USD÷15000nights= $150),anandaveragesortthatcheapestreadsforhighercheaperthanoptions.theSetroom-onlyconstraintModeratestrictbookingforsitesrequirements;headline.preferTheallowsdefaultlabeledorderalternatives.isPricespartnerincluderelevance,taxesNOTandprice:feeswhenfor thetraveler wants something cheaper,quotednamesaccommodation.aguestsbudget,isortheaskspartytosharingcompareit,re-runnotwithamaxNightly/minNightlyroomandcount.sortnear'cheapest'searches(oraround'rating')ainsteadlandmark;ofnamerepeatingistheonesamenamedcallproperty;—keywordsamatchesplainstylerepeatwordsreturnsinthelistingsamenames.screen.ForpriceRangehotelssummarizesaroundthefood,nightlygalleriesratesorfound;othereachinterests,option'spasssuppliersinterestslistsinstead.everyEachbookinginterestsite'sistotalresolvedfortotherealsameplacesroomat(theoption's own price isdestinationtheandcheapestmatchedofbythem).verifiedTostraight-linemakedistance.anNeveroptioncallbookable,thatattachdistanceitatowalkingatime.tripNowithverifiedadd_option_to_tripplaces(kindor'stay',coordinatesechoingmeansthenooptionclaimedobjectmatch.unchanged)Property—typetheisstopinferred,thennotcarriessupplier-certified;theunknownPolicytrackedcontrolsbookingunknownlink.typeFinerevidence.askslimitmapcontrolstoreturnedfilters:results,'neardefaultthe8.castle'No→matchesnear,and'wellproviderreviewed'failures→areminRatingdistinct;8,never'freeinventcancellation'a→matchingfreeCancellation,quote.'apartmentResearchforoptions4'with→get_detailsminBedrooms,or'familycompare_options.suite'Research or'familysaveroom'using→thispropertyTypereply's'hotel'display.resultId+asminGuestsresultId(neverand ahostel), 'hostel'property's→propertyIdpropertyTypeas'hostel',optionId.aAttachhotelwiththeadd_option_to_trip;traveleruseNAMEDthe→returnedname,bookingUrlaforSTYLEbooking.('ryokan',This'boutique')working→toolkeywords.returnsdestinationdataisand acitycompactorsummary,townwithout(aopeningregiondetailedgeocodesvisuals.toWhenonethepoint).requestednearworkkeepsisresultscompletewithinor5thekmtravelerunlessneedsmaxDistanceKmtosayschoose,otherwise.callTodisplay_resultsresearchwithONEthisoptionresult's(photos,display.resultIdwhattoreviewerspresentsay,thepolicies,details.priceDoonnoteverydisplaysite)everycallintermediateget_detailsresult.withNeverit;repeattoaweighwriteaorfewpaidsideoperationbytosidedisplaycallitscompare_options.details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"budget":{"anyOf":[{"additionalProperties":false,"properties":{"amount":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"basis":{"const":"per_night","type":"string"},"currency":{"$ref":"#/properties/currency/anyOf/0"}},"required":["amount","currency","basis"],"type":"object"},{"type":"null"}],"description":"Nightly ceiling for the quoted accommodation, including taxes/fees. Integer MINOR units: USD 15000 = $150. Do not combine with maxNightlyAmount."},"checkIn":{"description":"Check-in calendar date, YYYY-MM-DD","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"checkOut":{"$ref":"#/properties/checkIn","description":"Check-out calendar date, YYYY-MM-DD; must be after checkIn"},"currencyconstraintMode":{"anyOf":[{"enum":["strict","prefer"],"type":"string"},{"type":"null"}],"description":"PricingUsecurrency;strictdefaultsfortorequirements:thenotraveler'srelaxation.homeprefercurrency
⟨33 unchanged words⟩ made from the public copy earn the author. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨27 unchanged words⟩ earns the traveler's commission share, like stops. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨22 unchanged words⟩ to it). Omitted fields keep their value. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
⟨26 unchanged words⟩ as votes {up, down, mine}. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without ⟨17 unchanged words⟩
Save an unchanged quoted train fare by searchId and journeyId to its departure day on a trip. This saves a plan, not a reservation. Requires tripId outside a trip chat. Never reconstruct price, dates or booking URLs from prose. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation contro…
Display result details — Show the detailed visual for one previous tool result using its display.resultId. Call after completing the requested work, when the traveler needs to compare or choose, or when they ask to see details. Do not call after every intermediate lookup or mutation. This reads an account-bound snapshot retained for 30 minutes: it never repeats a search, mutation, import, message, or credit charge. Use display_trip with tripId for the latest itinerary. If a snapshot is unavailable, use a read-only lookup to refresh it; never repeat a mutation just to get a display ID. Optional presentation controls c…
Display a trip — Show the visual itinerary to the traveler. Call once after completing all requested planning or edits, or when they explicitly ask to see the trip. Do not call between intermediate edits. This is read-only and does not finalize or lock the trip. Returns days, stops (with stopIds for edit_trip), the packing list, and per-stop booking links. When the traveler wants to book a stop, give them its bookingUrl — bookings through it earn them commission back. Optional presentation controls customize the visible result without changing the action; use compact/full layout and only the sections or resul…
Show the stored details of one real train fare. Pass searchId and journeyId from search_trains. Never reconstruct a fare from prose. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Optional presentation controls customize the visible result without changing the action; use compact/full layout and only t…
Find saved places and travel tips — Search the traveler's saved places AND travel tips together, including text, Reddit and blogs, with recorded original sources. Use area for the destination and query for a short topic such as airport train. General tips accompany area searches. Use kind only to request places or tips alone, and nextOffset to continue. This already includes both kinds; do not repeat list_travel_tips for the same request. Tips are advice, never itinerary stops. Add a place only on request using add_saved_places_to_trip with its id. This working tool returns data and a compact summary, without opening detailed v…
Filter or sort an existing train search without querying sellers again. Prices and budgets are whole-party one-way integer minor units. Outbound clock filters do not apply to the return. Use a new search when route, date, currency or passengers change. This working tool returns data and a compact summary, without opening detailed visuals. When the requested work is complete or the traveler needs to choose, call display_results with this result's display.resultId to present the details. Do not display every intermediate result. Never repeat a write or paid operation to display its details. Opt…
Search rental cars — Search Trip.com rental cars using airport pickup and drop-off, exact local dates/times, driver age and licence issuing country (ISO2). Ask for missing age/licence country; never guess. Trip.com quotes a 30–60 driver-age band for that range; supplier eligibility uses the actual age. Returned prices are rental totals, not daily rates. Deposits are separate from the rental total. Search links require confirming the selected vehicle, policies and final price. No in-app booking or inferred availability when the source fails. This working tool returns data and a compact summary, without opening det…
Search trains — Retrieve real dated train fares, departures, arrivals, operators, durations and changes. Prices cover the requested adults; returnOptions are separate one-way quotes. Sort by cheapest, fastest or earliest, and filter whole-party price and changes. Use the returned searchId and journeyId for details, refinements and saving a train. Source failures do not mean no trains exist. Search-page links are prohibited; never substitute a promotional from-price or a generic seller card for an individual fare. This working tool returns data and a compact summary, without opening detailed visuals. When the…
after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"actions":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"action":{"const":"update_trip","description":"Change trip details; omitted fields keep their value, null clears","type":"string"},"adults":{"description":"Adults travelling; partySize becomes adults + children","maximum":20,"minimum":1,"type":"integer"},"bookingDeadline":{"anyOf":[{"$ref":"#/properties/actions/items/anyOf/0/properties/startDate"},{"type":"null"}],"description":"Book-by date: the crew is reminded a week out, the day before and on the day while stays or flights are unbooked; null clears"},"cabinClass":{"anyOf":[{"enum":["economy","premium_economy","business","first"],"type":"string"},{"type":"null"}],"description":"Cabin that flight searches open in; null means economy"},"childrenAges":{"description":"One age per child travelling; partner booking links pre-fill from these","items":{"maximum":17,"minimum":0,"type":"integer"},"maxItems":12,"type":"array"},"coverImageUrl":{"anyOf":[{"format":"uri","type":"string"},{"type":"null"}],"description":"Cover photo URL (a stop's imageUrl works); null goes back to the automatic cover"},"currency":{"maxLength":3,"minLength":3,"type":"string"},"description":{"maxLength":2000,"type":"string"},"destinationCountryCode":{"maxLength":2,"minLength":2,"type":"string"},"destinationName":{"maxLength":120,"type":"string"},"endDate":{"$ref":"#/properties/actions/items/anyOf/0/properties/startDate"},"notes":{"anyOf":[{"maxLength":20000,"type":"string"},{"type":"null"}],"description":"The trip notebook; null clears"},"partySize":{"maximum":20,"minimum":1,"type":"integer"},"rooms":{"description":"Hotel rooms to search for","maximum":8,"minimum":1,"type":"integer"},"startDate":{"description":"Days shift with the trip","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"status":{"description":"draft | planned | booked | completed (owner only)","enum":["draft","planned","booked","completed"],"type":"string"},"title":{"maxLength":120,"minLength":1,"type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"update_stop","description":"Change one stop by stopId","type":"string"},"address":{"anyOf":[{"maxLength":400,"type":"string"},{"type":"null"}]},"cost":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"MAJOR units; null clears"},"costCurrency":{"$ref":"#/properties/actions/items/anyOf/0/properties/currency"},"description":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"endTime":{"anyOf":[{"$ref":"#/properties/actions/items/anyOf/1/properties/time/anyOf/0"},{"type":"null"}]},"lat":{"anyOf":[{"maximum":90,"minimum":-90,"type":"number"},{"type":"null"}]},"lng":{"anyOf":[{"maximum":180,"minimum":-180,"type":"number"},{"type":"null"}]},"locationName":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"stopId":{"format":"uuid","type":"string"},"time":{"anyOf":[{"pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","type":"string"},{"type":"null"}],"description":"HH:MM; null clears the time"},"title":{"maxLength":200,"minLength":1,"type":"string"},"type":{"enum":["flight","train","transport","stay","activity","food","note"],"type":"string"}},"required":["action","stopId"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"remove_stop","description":"Delete one stop","type":"string"},"stopId":{"format":"uuid","type":"string"}},"required":["action","stopId"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"move_stop","description":"Move a stop to another day","type":"string"},"position":{"description":"0-based position in the day; omit = end","minimum":0,"type":"integer"},"stopId":{"format":"uuid","type":"string"},"toDayIndex":{"maximum":59,"minimum":0,"type":"integer"}},"required":["action","stopId","toDayIndex"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"add_day","description":"Append a day","type":"string"},"date":{"$ref":"#/properties/actions/items/anyOf/0/properties/startDate"},"title":{"maxLength":200,"type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"update_day","description":"Change a day's title, date or notes","type":"string"},"date":{"anyOf":[{"$ref":"#/properties/actions/items/anyOf/0/properties/startDate"},{"type":"null"}]},"dayIndex":{"$ref":"#/properties/actions/items/anyOf/3/properties/toDayIndex"},"notes":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]}},"required":["action","dayIndex"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"remove_day","description":"Delete a day and its stops","type":"string"},"dayIndex":{"$ref":"#/properties/actions/items/anyOf/3/properties/toDayIndex"}},"required":["action","dayIndex"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"packing","description":"Edit the packing list: add labels, tick, untick or remove item ids from get_trip","type":"string"},"add":{"description":"Labels to add: plain strings, or {label, personal} for an item only this traveler sees","items":{"anyOf":[{"maxLength":120,"minLength":1,"type":"string"},{"additionalProperties":false,"properties":{"label":{"maxLength":120,"minLength":1,"type":"string"},"personal":{"default":false,"type":"boolean"}},"required":["label"],"type":"object"}]},"maxItems":40,"type":"array"},"check":{"description":"Item ids to tick","items":{"format":"uuid","type":"string"},"maxItems":60,"type":"array"},"remove":{"description":"Item ids to delete","items":{"format":"uuid","type":"string"},"maxItems":60,"type":"array"},"uncheck":{"description":"Item ids to untick","items":{"format":"uuid","type":"string"},"maxItems":60,"type":"array"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"mark_booked","description":"Record that the traveler booked a stop, on the partner site or elsewhere; a booking made through the stop's bookingUrl opens its commission credit","type":"string"},"stopId":{"format":"uuid","type":"string"},"travelers":{"description":"How many travelers the booking covers (group trips)","maximum":16,"minimum":1,"type":"integer"}},"required":["action","stopId"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"vote_stop","description":"Vote on a stop the crew is deciding about","type":"string"},"stopId":{"format":"uuid","type":"string"},"value":{"description":"1 = thumbs up, -1 = thumbs down, 0 = take the vote back","enum":[1,-1,0],"type":"number"}},"required":["action","stopId","value"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"refresh_stay_prices","description":"Re-quote every upcoming partner-priced stay against live rates and report what moved; at most once per stay per day","type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"finalize","description":"Lock the trip for sharing and booking (owner only); a finalized trip rejects edits until reopened","type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"reopen","description":"Unlock a finalized trip for editing (owner only); unpublish first if it is public","type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"publish","description":"Publish a finalized trip to a public link and Explore, or republish it after edits (owner only); bookings from the public copy earn the author","type":"string"},"summary":{"maxLength":2000,"type":"string"},"tags":{"items":{"maxLength":40,"minLength":1,"type":"string"},"maxItems":10,"type":"array"},"title":{"description":"Public title; defaults to the trip's","maxLength":120,"type":"string"}},"required":["action"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"unpublish","description":"Take the trip off its public link and Explore (owner only)","type":"string"}},"required":["action"],"type":"object"}]},"maxItems":50,"minItems":1,"type":"array"},"presentation":{"additionalProperties":false,"properties":{"layout":{"description":"Compact cards or the full view; keeps booking, add and error actions available.","enum":["compact","full"],"type":"string"}},"type":"object"},"tripId":{"format":"uuid","type":"string"}},"required":["tripId","actions"],"type":"object"}