Plany
Organize travel itineraries by creating detailed trips with scheduled events like flights, hotels, and activities.
От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноТолько чтение
Что умеет
- Whoami: Return the authenticated user's profile (user_id, full_name, username, avatar_url). No parameters required.
- List Trips: List all calendars (trips) accessible to the token owner — owned and shared. Returns id, name, description, start_date, end_date, created_at, banner_image_url, and role ('owner' | 'collabo
- Get Trip: Get a single trip by calendar ID, including its events and segment metadata. Works for owned and shared calendars. Segments are named itinerary groupings stored in the segments table (id, na
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Organize travel itineraries by creating detailed trips with scheduled events like flights, hotels, and activities. Enhance your plans with rich location data, photos, and customizable banners for a visual travel schedule. Manage and share trip calendars to keep all your travel details organized in one place.
Список инструментов сервера (14)
Технические названия из tools/list. Нужны только разработчикам.
| whoami | Return the authenticated user's profile (user_id, full_name, username, avatar_url). No parameters required. |
| list_trips | List all calendars (trips) accessible to the token owner — owned and shared. Returns id, name, description, start_date, end_date, created_at, banner_image_url, and role ('owner' | 'collaborator') per trip. No parameters. No pagination or filters — all accessible trips are returned in a single response. |
| get_trip | Get a single trip by calendar ID, including its events and segment metadata. Works for owned and shared calendars. Segments are named itinerary groupings stored in the segments table (id, name, city, country, region, color, timezone, latitude, longitude, place_id, image_url). Segments do NOT store start_date or end_date columns in the database. Day-level segment assignment is stored separately in the day_segments table keyed by (calendar_id, date) → segment_id. Events do NOT carry a segment_id field. An event relates to a segment indirectly when its (calendar_id, date) matches a day_segments row. |
| get_day | Return all events (with photos) for a specific calendar and date. Shared calendars return only non-private events. |
| search_events | Search events by text query, calendar_id, or event_type. At least one filter is required. Returns up to 100 results ordered by date. |
| create_trip | Create a new trip (calendar). The authenticated user becomes the owner. |
| upsert_events | Create or update up to 50 events in a single owned calendar. Partial updates only write supplied fields — existing data is not clobbered. Supports optional per-event location resolution via resolve_location flag. EventInput fields: Required: - date (string, YYYY-MM-DD) - label (string, short title) - event_type (string, one of: flight | hotel | activity | note | hike | mall | drive | restaurant | cafe | other | train | spa | museum) Optional: - id (UUID — include to update existing event, omit to create) - time (string, start time only — no end_time field) - description (string, longer context, tips, or notes) - photos (Photos are auto-generated if location, city, and country are provided.) - location (The name of the venue (e.g. "Madison Square Garden").) - address (string) - city (string) - country (string) - region (string) - latitude (number, -90..90; must pair with longitude) - longitude (number, -180..180; must pair with latitude) - maps_url (string, valid URL) - place_id (string, Google Place ID if available; if left blank, the system will automatically process and resolve it using location.) - place_rating (number) - place_price_level (number) - place_types (string[]) - place_photo_ref (string) - resolve_location (boolean — opt-in to server-side Google Places geocoding when place_id/lat/lng are absent) Important behavior when using resolve_location: - If place_id is already provided, Google resolution will be skipped. - If latitude and longitude are provided, the system assumes the location has already been resolved and will NOT run Google Places lookup, even if resolve_location is true. - Do NOT send placeholder coordinates such as 0,0 when using resolve_location. Recommended usage for AI agents: When using resolve_location: true, provide only the place information needed for lookup such as: - location - city - country - address (optional) and omit: - latitude - longitude - place_id This allows the server to perform Google Places resolution and automatically populate: place_id, coordinates, map links, and place photos when available. Guidance: Use label for a short title; use description for richer context, tips, or notes. Avoid duplicating structured fields (date, time, location) inside the description. Transit event types are: flight, train, drive. |
| move_event | Move an event to a different date and/or a different owned calendar. Both source and target calendars must be owned. If the target day has no segment, the server may auto-assign one using the moved event's location. |
| delete_event | Permanently delete an event by ID. The event must belong to an owned calendar. Cannot be undone. |
| add_event_photo | Add a photo URL to an event. HTTPS only, no private hosts, max 2048 chars. Max 5 photos per event. URL is stored directly — no server-side fetch or compression. |
| resegment_day | Recompute (or clear) the segment assignment for a specific day based on that day's current events. Use this when events have shifted to a different city or when events were deleted and the day's segment is stale. Normal event creation does not require this tool because segments are only auto-assigned when a day has no segment. In force mode, this tool may overwrite an existing day segment assignment. |
| edit_trip_dates | Update the start and/or end date of an existing owned trip. This is a trip-level operation that changes only the trip's date boundaries — it does NOT modify, move, reschedule, or adjust any existing events within the trip. Use this tool to extend a trip (move start_date earlier or end_date later), shorten a trip, or correct an incorrect date range. Important: Events always remain on their original dates. Changing trip dates does NOT cascade updates to events. If the new date range no longer includes certain events, those events will fall outside the trip bounds. Before shortening a trip, warn the user that events may fall outside the new range and advise using move_event first if needed. At least one of start_date or end_date must be provided. If both are provided, end_date must be >= start_date. |
| set_trip_banner | Set or replace the banner image for an existing owned trip. The caller supplies an HTTPS URL; the server fetches, compresses (2400×1350, JPEG, 85% quality), and uploads to Plany storage. The returned banner_image_url is the internal Plany storage URL, not the original URL. If the trip already has a banner, the old file is cleaned up from storage. |
| set_day_title | Set or clear the title for a specific day in an owned trip. The title appears as a label for the day in the itinerary (e.g. 'Arrival & Shibuya Explore', 'Mount Fuji Hike Day'). Pass an empty string to clear an existing title. Does not affect segment assignment. |