Goyondo

run.goyondoPublished by goyondo.runOfficial publisherv0.3.0Updated Nov 14, 2026

Agent-native trip planner: your AI plans the trip, and Goyondo keeps it all in one place.

VerifiedStreamable HTTPWeb executableLocation & Lifestyle

Overview

AI-generated overview

Goyondo is an agent-native trip planner that lets an AI assistant plan a trip and keep the itinerary in one place.

What you can do
  • Plan trips with the assistant and keep the resulting itinerary in one place
  • Work from a remote endpoint or a local npm package over stdio
  • Sign in with an OAuth device flow on first use, or with an existing API key
  • No tool list is published, so the exact actions available are not documented here
When to use it
Worth considering when you want an assistant to help plan travel and hold the plan in a dedicated trip-planning service rather than in loose notes.
Requirements
A Goyondo account. Either the remote endpoint or the local npm package goyondo-mcp (stdio). Authentication is required: OAuth device flow on first use, or an optional existing gyd_ API key supplied as GOYONDO_API_KEY.
Before you install
Authentication is required and the server may hold a GOYONDO_API_KEY secret; keep that key private. The published material does not describe which tools exist or whether they create, change or delete trip data, so review the available actions before letting an assistant write to your trips.

Installation

In SourceWeft

  1. Open Goyondo in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/run.goyondo%2Fgoyondo/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "goyondo": {
      "type": "http",
      "url": "https://goyondo.run/mcp"
    }
  }
}

Tools

53

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

List trips

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_trip

Get trip

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_trip

Create trip

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

Update trip

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_activity

Add activity

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

delete_trip

Delete trip

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

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

list_community_itineraries

Browse community itineraries

Browse published itineraries shared by Goyondo travelers in the Community Hub, newest first. Filter by destination, month, pace or interests. Use get_community_itinerary for the full day-by-day plan.

Parameterspacelimitmonthoffsetinterestsdestination

get_community_itinerary

Get community itinerary

Get one published Community Hub itinerary with its day-by-day plan. The user can adapt it into their own trip with create_trip and save_itinerary.

Parameterslisting_idrequired

Version history

1
  1. v0.3.0LatestNov 14, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.

Other Goyondo integrations