{"ok":true,"site":{"host":"commonground-travel.a-deghiedy.chatgpt.site","url":"https://commonground-travel.a-deghiedy.chatgpt.site/","type":"live","desc":"A WebMCP-native group travel workspace where humans and AI agents reach fair, auditable hotel decisions together.","tools":[{"name":"get_collaboration_status","kind":"answer","impl":"imperative","description":"Read whether this is a sample demo or a durable private workspace, the current access role, traveler capacity, and which traveler profile the current visitor can edit. Use before collaboration or mutation actions.","title":"Get Collaboration Status","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_workspace_state","kind":"answer","impl":"imperative","description":"Read the full shared trip workspace: travelers, their constraints and priorities, current scenarios, conflicts, and recent activity. Use first to orient before any other CommonGround tool.","title":"Get Workspace State","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_travelers_and_constraints","kind":"answer","impl":"imperative","description":"List each traveler with their per-night budget and all constraints (label, category, priority, locked). Use when weighing whose needs conflict or before changing priorities/locks.","title":"List Travelers And Constraints","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_hotel_inventory","kind":"answer","impl":"imperative","description":"Query the live hotel inventory API (/api/inventory) and return normalized structured hotel data (price, rating, cancellation policy, amenities, distance, availability). Read-only; use whenever the group asks what hotels exist or match a budget.","title":"Search Hotel Inventory","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"maxTotalPrice":{"type":"number","description":"Optional cap on total price for the stay."},"minReviewScore":{"type":"number","description":"Optional minimum review score (0-10)."}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_scenarios","kind":"act","impl":"imperative","description":"Compare the three generated scenarios (consensus, value, compromise): top hotels, fairness, rationale, and per-traveler scores. Use when the group asks which option is best or fairest.","title":"Compare Scenarios","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"explain_conflicts","kind":"act","impl":"imperative","description":"Explain conflicts between travelers (budget gaps, opposing amenity preferences) with severity and suggested resolutions, plus which constraints are locked. Use before proposing compromises.","title":"Explain Conflicts","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_onboarding_status","kind":"answer","impl":"imperative","description":"Read setup progress for the current workspace: capacity, invitations or traveler seats, completed priority profiles, inventory readiness, and whether a scenario and hotel are selected.","title":"Get Onboarding Status","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"open_workspace_setup","kind":"act","impl":"imperative","description":"Open the visible, human-controlled form for creating a durable private trip workspace. This tool does not submit or create anything itself; the human reviews the trip name, destination, nights, and organizer name.","title":"Open Workspace Setup","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_workspace","kind":"act","impl":"imperative","description":"Create a durable private CommonGround workspace from confirmed trip details, save organizer access in this browser, and navigate to the guided setup. State-changing; confirm all values with the human before calling.","title":"Create Workspace","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Workspace name, 2 to 80 characters."},"destination":{"type":"string","description":"Destination, 2 to 120 characters."},"checkIn":{"type":"string","description":"Check-in date in YYYY-MM-DD format."},"nights":{"type":"integer","minimum":1,"maximum":30,"description":"Length of stay."},"organizerName":{"type":"string","description":"Organizer name, 1 to 60 characters."},"travelerLimit":{"type":"integer","minimum":2,"maximum":30,"description":"Traveler seats including organizer."}},"required":["name","destination","checkIn","nights","organizerName","travelerLimit"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"open_invite_traveler","kind":"act","impl":"imperative","description":"Open the visible organizer-only invitation form. It creates no invitation until the human enters a name and submits; CommonGround then produces a private traveler-scoped link for manual sharing.","title":"Open Invite Traveler","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_invitations","kind":"answer","impl":"imperative","description":"List organizer-visible traveler invitations and their invited or active status. Does not expose private invite tokens.","title":"List Invitations","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_invitation","kind":"act","impl":"imperative","description":"Create one private traveler-scoped invitation link. Organizer-only. Returns the link for human review and manual sharing; never sends email, WhatsApp, or any external message automatically.","title":"Create Invitation","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Traveler name."},"email":{"type":"string","description":"Optional email address stored with the invitation; no message is sent."}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"revoke_invitation","kind":"act","impl":"imperative","description":"Remove an invited traveler and permanently invalidate their private access link. Organizer-only and destructive; require explicit human confirmation before calling.","title":"Revoke Invitation","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"travelerId":{"type":"string","description":"Traveler invitation to revoke, from list_invitations."}},"required":["travelerId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"open_workspace_settings","kind":"act","impl":"imperative","description":"Open the visible organizer-only workspace settings where the human can adjust the planned traveler capacity between 2 and 30. This tool never changes the limit itself.","title":"Open Workspace Settings","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"open_workspace_onboarding","kind":"act","impl":"imperative","description":"Open the visible organizer setup guide at the requested step: invite travelers, choose predefined priorities, compare scenarios, or connect an agent. Use this to guide a human through the workspace without making hidden changes.","title":"Open Workspace Onboarding","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"step":{"type":"string","enum":["invite","priorities","compare","agent"],"description":"Wizard step to open. One of: invite, priorities, compare, agent."}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"configure_trip_workspace","kind":"act","impl":"imperative","description":"Configure an existing private workspace's destination, number of nights, and traveler capacity, then open the visible setup guide. Organizer-only and immediately visible. Confirm the values with the organizer before calling.","title":"Configure Trip Workspace","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"destination":{"type":"string","description":"Destination name, 2 to 120 characters."},"checkIn":{"type":"string","description":"Check-in date in YYYY-MM-DD format."},"nights":{"type":"integer","minimum":1,"maximum":30,"description":"Length of stay in nights."},"travelerLimit":{"type":"integer","minimum":2,"maximum":30,"description":"Total traveler seats, including the organizer."}},"required":["destination","checkIn","nights","travelerLimit"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_workspace_capacity","kind":"act","impl":"imperative","description":"Set traveler capacity between 2 and 30 for an existing private workspace. Organizer-only and visible; cannot reduce below the current traveler count.","title":"Set Workspace Capacity","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"travelerLimit":{"type":"integer","minimum":2,"maximum":30,"description":"New total seat capacity."}},"required":["travelerLimit"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_traveler_profile","kind":"act","impl":"imperative","description":"Update an authorized traveler's display name and/or maximum nightly budget. Visible and permission-scoped; recalculates scenarios. Ask the traveler before changing values.","title":"Update Traveler Profile","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"travelerId":{"type":"string","description":"Traveler to update."},"name":{"type":"string","description":"Optional new display name."},"budgetPerNight":{"type":"number","minimum":20,"maximum":5000,"description":"Optional nightly budget in euros."}},"required":["travelerId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_constraint","kind":"act","impl":"imperative","description":"Add a decision constraint to an authorized traveler profile. Visible and permission-scoped; recalculates scenarios. Confirm label, category, and priority with the traveler.","title":"Add Constraint","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"travelerId":{"type":"string","description":"Traveler to update."},"label":{"type":"string","description":"Constraint label."},"category":{"type":"string","enum":["accessibility","family","amenity","location","budget","cancellation","rating"],"description":"Constraint category. One of: accessibility, family, amenity, location, budget, cancellation, rating."},"priority":{"type":"string","enum":["must","prefer","flexible","exclude"],"description":"Priority. One of: must, prefer, flexible, exclude."},"locked":{"type":"boolean","description":"Whether the new rule is locked."}},"required":["travelerId","label","category","priority"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_constraint","kind":"act","impl":"imperative","description":"Remove an unlocked constraint from an authorized traveler profile. Destructive and visible; require explicit traveler confirmation. Locked constraints must be unlocked first.","title":"Remove Constraint","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"travelerId":{"type":"string","description":"Owning traveler."},"constraintId":{"type":"string","description":"Constraint to remove."}},"required":["travelerId","constraintId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_constraint_priority","kind":"act","impl":"imperative","description":"Change one traveler's constraint priority (must/prefer/flexible/exclude). State-changing: updates the visible board, recalculates scenarios, and logs activity. Ask the traveler first when ambiguous.","title":"Set Constraint Priority","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"travelerId":{"type":"string","description":"Traveler to update, e.g. from list_travelers_and_constraints."},"constraintId":{"type":"string","description":"Constraint to change."},"priority":{"type":"string","enum":["must","prefer","flexible","exclude"],"description":"New priority. One of: must, prefer, flexible, exclude."}},"required":["travelerId","constraintId","priority"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"lock_constraint","kind":"act","impl":"imperative","description":"Lock or unlock one traveler's constraint. A locked constraint cannot have its priority changed until the owner unlocks it. State-changing: recalculates scenarios and logs activity. Confirm with the owning traveler.","title":"Lock Constraint","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"travelerId":{"type":"string","description":"Owning traveler ID."},"constraintId":{"type":"string","description":"Constraint to lock/unlock."},"locked":{"type":"boolean","description":"True to lock (default true)."}},"required":["travelerId","constraintId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"veto_hotel","kind":"act","impl":"imperative","description":"Veto (remove) a hotel from all scenarios, or un-veto it. State-changing and visible on the board; logs activity. Only veto when a traveler explicitly rejects the hotel.","title":"Veto Hotel","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"hotelId":{"type":"string","description":"Hotel to veto/un-veto."},"vetoed":{"type":"boolean","description":"True to veto (default toggles)."}},"required":["hotelId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_scenarios","kind":"act","impl":"imperative","description":"Regenerate the three scenarios (consensus/value/compromise) from current travelers, constraints, and hotels. Use after several constraint changes to refresh rankings; logs activity.","title":"Create Scenarios","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"select_scenario","kind":"act","impl":"imperative","description":"Switch the visible scenario board to consensus, value, or compromise. State-changing and visible in the UI; logs activity.","title":"Select Scenario","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"scenarioId":{"type":"string","enum":["consensus","value","compromise"],"description":"Scenario to show. One of: consensus, value, compromise."}},"required":["scenarioId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"select_hotel","kind":"act","impl":"imperative","description":"Select or clear a hotel on the visible board without preparing a booking draft. Organizer-only for private workspaces; cannot select a vetoed hotel.","title":"Select Hotel","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"hotelId":{"type":"string","description":"Hotel to select. Pass 'none' to clear selection."}},"required":["hotelId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prepare_booking_draft","kind":"act","impl":"imperative","description":"Open a human-confirmation booking draft UI for a hotel. Does NOT book, purchase, or charge anything — it only surfaces a draft the humans must approve. Optionally sets hotel/scenario first.","title":"Prepare Booking Draft","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"hotelId":{"type":"string","description":"Hotel to draft. Defaults to the currently selected hotel."},"scenarioId":{"type":"string","enum":["consensus","value","compromise"],"description":"Optional scenario context. One of: consensus, value, compromise."}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Travel & Events","favicon":"/favicons/commonground-travel.a-deghiedy.chatgpt.site.png","apiSurface":"spec","toolCount":27}}