Goyondo

run.goyondo由 goyondo.run 发布官方发布者v0.3.0更新于 Nov 14, 2026

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

已验证Streamable HTTP可网页运行位置与生活

概览

AI 生成的概览

Goyondo 是一个面向智能体的行程规划服务,让 AI 助手规划旅行并把行程集中保存在一处。

可以做什么
  • 与助手一起规划旅行,并把生成的行程集中保存在一处
  • 可通过远程端点使用,也可通过 stdio 运行本地 npm 包
  • 首次使用时通过 OAuth 设备流程登录,或使用已有的 API 密钥
  • 未公布工具清单,因此具体可执行的操作在此无法说明
适用场景
当你希望助手协助规划旅行,并把计划保存在专门的行程规划服务中而不是零散笔记里时,可以考虑使用。
运行要求
需要一个 Goyondo 账户。可使用远程端点,或本地 npm 包 goyondo-mcp(stdio)。必须进行身份验证:首次使用时走 OAuth 设备流程,或通过 GOYONDO_API_KEY 提供已有的 gyd_ 密钥。
安装前请注意
使用需要身份验证,服务器可能保存 GOYONDO_API_KEY 密钥,请妥善保管。公开材料未说明有哪些工具,也未说明是否会创建、修改或删除行程数据,因此在让助手写入你的行程前请先确认可用操作。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Goyondo,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/run.goyondo%2Fgoyondo/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

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

工具

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.

无需输入参数。

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

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.

输入参数limitoffset

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").

输入参数trip_id必填

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.

输入参数originchildrenend_date必填timezoneintereststravelersstart_date必填destination必填fixed_plansarrival_timetravel_stylegroupTripCode另有 5 个

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.

输入参数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_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.

输入参数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

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.

输入参数confirm必填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

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.

输入参数pacelimitmonthoffsetinterestsdestination

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.

输入参数listing_id必填

版本历史

1
  1. v0.3.0最新Nov 14, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。

其他 Goyondo 集成