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.
无需输入参数。
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.
输入参数namecapability
get_schema
Get capability schema
Return the JSON input schema for one Goyondo capability, or all schemas if no capability is provided.
输入参数namecapability
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.
输入参数limitoffset
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").
输入参数trip_id必填
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.
输入参数originchildrenend_date必填timezoneintereststravelersstart_date必填destination必填fixed_plansarrival_timetravel_stylegroupTripCode另有 5 个
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.
输入参数notestitleoriginstatustrip_id必填childrencurrencyend_datetravelersstart_datedestinationarrival_time另有 7 个
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.
输入参数trip_id必填
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.
输入参数whydatenotestitle必填addresstrip_id必填end_timelocationmetadatapriorityday_numberstart_time另有 6 个
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.
输入参数whydatenotestitleaddresstrip_id必填end_timelocationmetadatapriorityday_numberstart_time另有 6 个
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.
输入参数days必填trip_id必填
list_activities
List activities
List all activities for a trip as a flat array.
输入参数trip_id必填
search_places
Search places
Find a venue by name and return matching places with their place_id, for use in create_trip fixed_plans.
输入参数query必填
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.
输入参数modetrip_id必填
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.
输入参数trip_id必填activity_id必填
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.
无需输入参数。
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.
输入参数trip_id必填
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.
输入参数nametrip_id必填document_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.
输入参数trip_id必填
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.
输入参数trip_code必填preferences必填
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.
输入参数urltextplacetrip_code必填
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.
输入参数trip_code必填
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.
输入参数vote必填reasonstarredtrip_code必填candidate_id必填
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.
输入参数citynameblurbaction必填categorytrip_code必填candidate_id必填neighborhood
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.
输入参数home_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.
输入参数titlebudget_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.
无需输入参数。
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.
输入参数trip_code必填
join_group_trip
Join group trip
Join an existing group trip using its trip_code.
输入参数trip_code必填
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.
输入参数trip_code必填
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.
输入参数trip_code必填
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.
输入参数trip_code必填
list_proposals
List change proposals
List pending change proposals for a trip (editors and owners only).
输入参数trip_id必填
approve_proposal
Approve change proposal
Approve a pending change proposal on a trip.
输入参数trip_id必填proposal_id必填
reject_proposal
Reject change proposal
Reject a pending change proposal on a trip.
输入参数trip_id必填proposal_id必填
get_edit_log
Get trip edit log
Get the edit history for a trip, including agent and human changes.
输入参数trip_id必填
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.
输入参数type必填value必填confidence
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.
无需输入参数。
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.
输入参数notes必填day_idtrip_id必填day_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.
输入参数confirm必填trip_id必填
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).
输入参数trip_id必填
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.
输入参数trip_id必填expires_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.
输入参数trip_id必填
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.
输入参数trip_id必填
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.
输入参数citytitle必填timing必填trip_id必填categoryplace_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.
输入参数citytitle必填timing必填trip_id必填categoryplace_idsessionsfixed_plan_id必填
delete_fixed_plan
Delete fixed plan
Remove a fixed plan from a trip.
输入参数trip_id必填fixed_plan_id必填
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.
输入参数decision必填feedbackround_id必填trip_code必填accepted_components
extend_alignment_rounds
Extend alignment rounds
Give a Group Harmony trip more alignment rounds after it reaches escalation_pending. Creator only.
输入参数trip_code必填additional_rounds必填
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.
输入参数trip_code必填
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.
输入参数view必填limit