connect_goyondo
Connect Goyondo
Connect this assistant to the user's Goyondo account, or check the connection. Returns a sign-in link for the user to approve when not connected. Other Goyondo tools start the same sign-in automatically, so call this only when the user asks to connect, or to confirm the connection after they approve.
Takes no parameters.
describe_capabilities
Describe capabilities
Describe available Goyondo agent capabilities, including input schemas, enum values, and supported interfaces. Use this for introspection before calling other capabilities.
Parametersnamecapability
get_schema
Get capability schema
Return the JSON input schema for one Goyondo capability, or all schemas if no capability is provided.
Parametersnamecapability
List trips for the authenticated user, newest first. Returns trip id, destination, dates and status. Pages with limit and offset: when has_more is true, call again with offset set to next_offset.
Parameterslimitoffset
Get a single trip by id including full itinerary (days and activities). trip.origin is where the trip starts and trip.journey the estimated flight hours and time difference (estimates; say "about").
Parameterstrip_idrequired
Create a new trip and optionally generate an AI itinerary, which can take up to a few minutes. Returns the created trip and itinerary. Pass fixed_plans for tickets, reservations and must-sees. To write the itinerary yourself, pass skip_ai_generation: true and then call save_itinerary with all the days in one call.
Parametersoriginchildrenend_daterequiredtimezoneintereststravelersstart_daterequireddestinationrequiredfixed_plansarrival_timetravel_stylegroupTripCode+5 more
Update trip metadata such as dates, title, traveler count, budget, or status. When start_date or end_date changes, the response includes itinerary_dates showing the first and last day dates after the shift — verify these match your intended dates before proceeding.
Parametersnotestitleoriginstatustrip_idrequiredchildrencurrencyend_datetravelersstart_datedestinationarrival_time+7 more
regenerate_itinerary
Regenerate itinerary
Regenerate the AI itinerary for an existing trip. Replaces AI suggestions only: fixed plans and activities the user or an agent added or edited are kept, and removed activities are not suggested again.
Parameterstrip_idrequired
Add an activity to a trip. To assign to a specific day use itinerary_id (UUID from get_trip itinerary days — most reliable), date (YYYY-MM-DD), or day_number (1-based). If none are provided the activity lands on Day 1. The result includes warnings (duplicates, time overlaps) for the new activity; fix them or tell the user. To add several activities, use save_itinerary.
Parameterswhydatenotestitlerequiredaddresstrip_idrequiredend_timelocationmetadatapriorityday_numberstart_time+6 more
update_activity
Update activity
Update an existing activity. All fields except trip_id and activity_id are optional. The result includes warnings (duplicates, time overlaps) involving the activity. Changing anything other than status marks the activity as the user's, so regenerate_itinerary keeps it.
Parameterswhydatenotestitleaddresstrip_idrequiredend_timelocationmetadatapriorityday_numberstart_time+6 more
save_itinerary
Save itinerary
Save an itinerary you wrote to an existing trip in one call: every day and its activities. Use it after create_trip with skip_ai_generation: true, or to add to a trip. Give each activity a why (and matches_preference when it serves a stated interest) so the user sees why it is in their plan. Append only: existing activities are kept, so call get_trip first and do not resend them. All activities are checked before anything is saved; if any is invalid nothing is saved and the error lists each problem. The result includes warnings (duplicates, time overlaps, repeats across days). Fix them with update_activity or delete_activity, then call get_trip_alerts. Limits: 31 days, 20 activities per day, 150 activities per call.
Parametersdaysrequiredtrip_idrequired
list_activities
List activities
List all activities for a trip as a flat array.
Parameterstrip_idrequired
search_places
Search places
Find a venue by name and return matching places with their place_id, for use in create_trip fixed_plans.
Parametersqueryrequired
get_trip_alerts
Get trip alerts
Check a trip's plan and return its alerts: venues closed or outside opening hours, public holidays, too much travel or backtracking, duplicates, time overlaps, pace, and fixed plans that clash, leave too little travel time, fall outside the trip or could not be placed. Each alert has a scope (activity, day or trip) and affected_activity_ids: the activities it is about, every activity on that day for a day alert, or an empty list for a trip alert. Call it after you finish editing an itinerary and fix or report what it finds. Read-only.
Parametersmodetrip_idrequired
delete_activity
Delete activity
Delete an activity from a trip. Regeneration will not suggest it again. If the activity belongs to a fixed plan, that day is removed from the plan, or the whole plan if it was the last day.
Parameterstrip_idrequiredactivity_idrequired
get_user_preferences
Get travel preferences
Get the authenticated user's travel preferences (interests, dietary, accessibility, etc.). home_base is where they usually travel from (city and airport), or null.
Takes no parameters.
list_itinerary_segments
List itinerary segments
List the bookings saved on a trip: flights, hotel stays, transport (trains, buses, ferries, car rentals, transfers), restaurant reservations, attraction tickets and tours, and legacy meetings. They usually come from forwarded or pasted confirmations. Works on any trip; an empty list means none were added.
Parameterstrip_idrequired
get_trip_document
Get trip document
Get a document saved on a trip, such as a boarding pass or booking PDF, by id or by name (e.g. boarding pass for flight SQ321). Works on any trip.
Parametersnametrip_idrequireddocument_id
get_trip_expense_summary
Get trip expense summary
Get the expense summary for a business trip (trip_mode: business), for expense reports. Do not use it for leisure trips.
Parameterstrip_idrequired
submit_group_preferences
Submit group trip preferences
Submit group trip preferences for alignment (Group Harmony). Use trip_code from the share link.
The caller must already be a member (call join_group_trip first).
Canonical preferences shape (all keys optional, but alignment only reconciles dates, destination, and budget):
dates: { ideal_start: "YYYY-MM-DD", ideal_end: "YYYY-MM-DD", flexibility_days: integer, blackout_dates: ["YYYY-MM-DD"] }
destination: { top_choices: ["City, Country", ...], veto: ["City, Country", ...] }
budget: { min: number, max: number } — MUST be an object. A scalar budget (e.g. 2000) is ignored by alignment and treated as 0.
accommodation: string activities: [string, ...]
Full example:
{"dates":{"ideal_start":"2026-04-10","ideal_end":"2026-04-17","flexibility_days":3,"blackout_dates":["2026-04-13"]},
"destination":{"top_choices":["Tokyo, Japan","Osaka, Japan"],"veto":["Bangkok, Thailand"]},
"budget":{"min":1500,"max":2500},"accommodation":"hotel","activities":["food tours","museums"]}
Response echoes trip_code and join_url so agents can persist context.
Parameterstrip_coderequiredpreferencesrequired
submit_group_inspiration
Add to group inspiration board
Submit a link, raw text, or explicit place to a group inspiration board. Use trip_code from the group share link. Provide exactly one of url, text, or place.
Parametersurltextplacetrip_coderequired
get_group_board
Get group inspiration board
Get the collaborative inspiration board for a group trip, including candidates, reactions, review lane, and readiness signals.
readiness signals report whether the board is ready to generate an itinerary, evaluated against readiness_policy:
alignment_min_score (number) — required alignment_score before generation
min_locked_in_places (integer) — how many "locked_in" candidates are required
unresolved_splits / failed_imports / review_candidates — each "block" | "warn" | "ignore"
creator_override (boolean) — when true, blockers become warnings
The response carries ready (boolean), blockers[], warnings[], and counts. The creator sets readiness_policy on the group trip page in Goyondo.
Parameterstrip_coderequired
react_to_place
React to a place
Vote on a place candidate in a group inspiration board. Agent votes are advisory until the human member confirms them.
Parametersvoterequiredreasonstarredtrip_coderequiredcandidate_idrequired
update_place_candidate
Edit place candidate
Edit or ignore a review-lane place candidate on a group inspiration board. Agents cannot use action="confirm" (403): a human member confirms the place in Goyondo, which makes it binding. An agent edit corrects the fields and leaves the place in review.
Parameterscitynameblurbactionrequiredcategorytrip_coderequiredcandidate_idrequiredneighborhood
update_user_preferences
Update travel preferences
Update the authenticated user's travel preferences. Only the fields you send change. You cannot set the home base: if the user asks, pass home_base and Goyondo returns confirmation_required with a confirm_url; give that link to the user so they confirm it in the app. Nothing is saved until they do.
Parametershome_baseinterestsbudget_rangetravel_styledefault_childrenaccommodation_typeaccessibility_needsdietary_restrictionspreferred_destinations
create_group_trip
Create group trip
Create a new group trip. Returns trip_code and join_url that members use to join. The caller becomes the creator (and default lead agent). Agent actions on this trip are attributed to the creating member.
Parameterstitlebudget_maxbudget_mintentative_datesdestination_options
list_group_trips
List group trips
List all group trips the authenticated user belongs to. Returns an array of { trip_code, status, role, title, id, ... }. role is one of "creator" or "member". Requires the group_trips:read scope.
Takes no parameters.
delete_group_trip
Delete group trip
Delete a group trip and its members, preferences, and alignment data. Creator only — other members receive a 403. Members are not notified; a generated itinerary is kept. Requires the group_trips:write scope.
Parameterstrip_coderequired
join_group_trip
Join group trip
Join an existing group trip using its trip_code.
Parameterstrip_coderequired
get_group_trip
Get group trip
Get a group trip by its trip_code, including members and current preferences. Call join_group_trip first if the user has not joined; otherwise this returns 403 not_a_member.
Parameterstrip_coderequired
run_alignment
Run group alignment
Trigger Group Harmony alignment — AI reconciles all member preferences (only dates, destination, and budget are reconciled) and produces a consensus plan. Lead agent only. Each call runs the next round; the default max is 2 rounds before the trip moves to escalation_pending (the creator can then call extend-rounds). Every round sets a response_deadline 48h out; the next round can run once every member has responded or that deadline has passed (before then it returns 409 round_still_open with pending_members). Members still silent after the deadline are auto-accepted and returned in timed_out_members.
Parameterstrip_coderequired
get_alignment
Get group alignment
Get the latest Group Harmony alignment result for a group trip: consensus_items, conflicts, proposed_destination, proposed_dates, round_number, response_deadline (48h per round), and alignment_score (20/45/70/95 for 0/1/2/3 of dates+destination+budget reconciled). Use get_alignment_history for every round with each member's response, plus pending and timed-out members.
Parameterstrip_coderequired
list_proposals
List change proposals
List pending change proposals for a trip (editors and owners only).
Parameterstrip_idrequired
approve_proposal
Approve change proposal
Approve a pending change proposal on a trip.
Parameterstrip_idrequiredproposal_idrequired
reject_proposal
Reject change proposal
Reject a pending change proposal on a trip.
Parameterstrip_idrequiredproposal_idrequired
get_edit_log
Get trip edit log
Get the edit history for a trip, including agent and human changes.
Parameterstrip_idrequired
set_user_preference
Record a travel preference
Record a travel preference on behalf of the authenticated user. Use this when the user states a preference during conversation (e.g. "I prefer window seats", "I am vegetarian", "I like boutique hotels"). The preference is stored as a signal and their AI travel profile is updated automatically.
Parameterstyperequiredvaluerequiredconfidence
get_preference_profile
Get travel preference profile
Get the authenticated user's AI-rendered travel preference profile (full markdown doc). Useful before creating a trip or making personalised recommendations.
Takes no parameters.
update_day_notes
Update day notes
Set or replace the notes for a specific itinerary day. Day notes are free-text and visible in the travel view. Use this to record how a day went, note plan deviations, or add context for a day. Provide either itinerary_id (the day's UUID from get_trip, the same id add_activity uses) or day_number (1-based integer); itinerary_id is preferred when available.
Parametersnotesrequiredday_idtrip_idrequiredday_numberitinerary_id
Permanently delete a trip and its itinerary. Only for trips the user owns. Ask the user first, then pass confirm: true; without it nothing is deleted.
Parametersconfirmrequiredtrip_idrequired
get_share_link
Get share link
Get the share link for a trip the user owns: url, whether it is enabled, when it expires, and joinRole (null = view only; otherwise the owner has let signed-in visitors join with that role).
Parameterstrip_idrequired
create_share_link
Create share link
Turn on (or renew) the view-only share link for a trip the user owns and return its url. Give the url to the user to send; Goyondo does not email anyone. Anyone with the link can view the trip until it expires. Agents cannot let people join through the link; the owner chooses that in the Goyondo app, and renewing keeps their choice.
Parameterstrip_idrequiredexpires_in_days
disable_share_link
Turn off share link
Turn off the view-only share link for a trip the user owns. The old url stops working.
Parameterstrip_idrequired
list_fixed_plans
List fixed plans
List a trip's fixed plans (tickets, reservations and must-sees the itinerary is built around), with their ids and any clashes between them.
Parameterstrip_idrequired
add_fixed_plan
Add fixed plan
Add a fixed plan (ticket, reservation or must-see) to an existing trip. Ask the user for the place and timing; never guess them. Get place_id from search_places. Clashes are reported by get_trip_alerts; existing activities are never overwritten.
Parameterscitytitlerequiredtimingrequiredtrip_idrequiredcategoryplace_idsessions
update_fixed_plan
Update fixed plan
Replace a fixed plan with new details. Send the whole plan (title, timing, place and sessions), not just the changed fields; get the current values from list_fixed_plans.
Parameterscitytitlerequiredtimingrequiredtrip_idrequiredcategoryplace_idsessionsfixed_plan_idrequired
delete_fixed_plan
Delete fixed plan
Remove a fixed plan from a trip.
Parameterstrip_idrequiredfixed_plan_idrequired
respond_to_alignment
Respond to group alignment
Respond to an open Group Harmony alignment round for the user. decision: accept, reject or partial_accept; feedback is required for reject and partial_accept. A human member's own response overrides their agent's. Get round_id from get_alignment or get_alignment_history.
Parametersdecisionrequiredfeedbackround_idrequiredtrip_coderequiredaccepted_components
extend_alignment_rounds
Extend alignment rounds
Give a Group Harmony trip more alignment rounds after it reaches escalation_pending. Creator only.
Parameterstrip_coderequiredadditional_roundsrequired
get_alignment_history
Get alignment history
Get every Group Harmony alignment round for a group trip with each member's response, plus the current round's status: who has responded, who is pending and who timed out.
Parameterstrip_coderequired
get_inspiration
Get destination inspiration
Get destination ideas from Goyondo's Inspiration page. view: featured (editor picks), trending, hidden_gems (reviewed lesser-known places) or calendar (where to go by month). Use it when the user has not picked a destination.
Parametersviewrequiredlimit