MCP 서버

nomadpoint

app.nomadpoint/nomadpoint

이 MCP로 할 수 있는 일

Plans trips and itineraries, manages travel documents and expenses, and calculates visa requirements and stay-day allowances.

add_passport
Record a passport from its details alone (no scan needed). Also adds the country to the user's nationalities, which is what visa answers are computed from.
입력 스키마
{'type': 'object', 'required': ['country_code'], 'properties': {'title': {'type': 'string'}, 'is_primary': {'type': 'boolean'}, 'issue_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'expiry_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'country_code': {'type': 'string'}, 'passport_number': {'type': 'string'}}, 'additionalProperties': False}
create_accommodation
Add a booked place to stay (hotel/hostel/apartment) to a trip.
입력 스키마
{'type': 'object', 'required': ['journey_id', 'type'], 'properties': {'name': {'type': 'string', 'description': "The property's own name, e.g. 'Memmo Alfama'"}, 'type': {'type': 'string', 'description': 'hotel, hostel, airbnb, apartment, other'}, 'notes': {'type': 'string'}, 'address': {'type': 'string'}, 'check_in': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'currency': {'type': 'string'}, 'latitude': {'type': 'number'}, 'provider': {'type': 'string', 'description': "Who it was booked with, e.g. 'Booking.com'"}, 'check_out': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'longitude': {'type': 'number'}, 'travelers': {'type': 'array', 'items': {'type': 'string'}, 'description': "Member user ids this is for (from list_journey_members). Omit for everyone — that's the norm."}, 'journey_id': {'type': 'string'}, 'place_name': {'type': 'string', 'description': "The CITY the property is in, e.g. 'Lisbon' — not the property's name"}, 'booking_url': {'type': 'string'}, 'country_code': {'type': 'string'}, 'price_per_night': {'type': 'number'}, 'confirmation_code': {'type': 'string'}}, 'additionalProperties': False}
create_activity
Add a thing to do — or a travel leg between places — to a trip, optionally attached to a stop. Safe to retry: the same title at the same start_datetime returns the existing row instead of a duplicate.
입력 스키마
{'type': 'object', 'required': ['journey_id', 'title'], 'properties': {'emoji': {'type': 'string'}, 'notes': {'type': 'string'}, 'price': {'type': 'number'}, 'title': {'type': 'string'}, 'address': {'type': 'string', 'description': 'Street address. For a travel leg: the ARRIVAL place (where it drops you), never the departure station'}, 'stay_id': {'type': 'string', 'description': "UUID of the stop this belongs to — attaches it to that city's days"}, 'category': {'type': 'string'}, 'currency': {'type': 'string'}, 'latitude': {'type': 'number', 'description': 'Where it happens; for a travel leg, the departure point'}, 'is_booked': {'type': 'boolean', 'description': 'False = planned but not yet purchased/reserved. Set true only once payment actually went through.'}, 'longitude': {'type': 'number', 'description': 'Where it happens; for a travel leg, the departure point'}, 'travelers': {'type': 'array', 'items': {'type': 'string'}, 'description': "Member user ids this is for (from list_journey_members). Omit for everyone — that's the norm."}, 'journey_id': {'type': 'string'}, 'place_name': {'type': 'string', 'description': 'Where it happens. For a travel leg: the DEPARTURE place (the station or town you leave from)'}, 'booking_url': {'type': 'string'}, 'country_code': {'type': 'string'}, 'end_datetime': {'type': 'string', 'description': 'Local time at the place, written with a Z suffix: a 09:16 departure is 2026-10-09T09:16:00Z, never its UTC instant'}, 'start_datetime': {'type': 'string', 'description': 'Local time at the place, written with a Z suffix: a 09:16 departure is 2026-10-09T09:16:00Z, never its UTC instant'}, 'transport_mode': {'type': 'string', 'description': 'Set this for a travel leg (walk, taxi, train, bus, ferry, drive); it makes the row a leg. Then fill the arrival_* fields'}, 'arrival_latitude': {'type': 'number', 'description': 'Travel leg only: the arrival point'}, 'arrival_city_name': {'type': 'string', 'description': "Travel leg only: the city it arrives in, e.g. 'Skopje'"}, 'arrival_longitude': {'type': 'number', 'description': 'Travel leg only: the arrival point'}, 'arrival_country_code': {'type': 'string', 'description': "Travel leg only: ISO code of the arrival country, e.g. 'MK'. country_code is the DEPARTURE's"}}, 'additionalProperties': False}
create_document
Record a travel document (ticket, boarding pass, hotel confirmation, insurance…) and, when a file_name/mime_type is given, return a signed upload_url to PUT the file to. Use related_id to attach it to the flight, accommodation or activity it belongs to. A ticket or pass issued in a co-traveller's name is THEIR document: pass for_user_id (from list_journey_members) and journey_id. One call per person, one document per ticket — check list_documents first so nothing is added twice.
입력 스키마
{'type': 'object', 'required': ['title', 'document_type'], 'properties': {'title': {'type': 'string'}, 'file_name': {'type': 'string', 'description': 'e.g. ticket-14147653.pdf — only needed when a file will be uploaded'}, 'mime_type': {'type': 'string', 'description': 'e.g. application/pdf, image/jpeg'}, 'journey_id': {'type': 'string', 'description': 'Required with for_user_id: the journey you share with them'}, 'related_id': {'type': 'string', 'description': 'UUID of the flight/accommodation/activity this document belongs to'}, 'valid_from': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'for_user_id': {'type': 'string', 'description': 'Journey member this document belongs to (the name on the ticket). Omit for your own.'}, 'valid_until': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'country_code': {'type': 'string'}, 'document_type': {'type': 'string', 'description': 'passport, visa, boarding_pass, hotel_confirmation, travel_insurance, vaccination, national_id, drivers_license, onward_ticket, other'}}, 'additionalProperties': False}
create_expense
Record one thing the user spent money on. Use for spend with no itinerary item of its own — meals, transport, visa fees, a booking that isn't on the trip. If the purchase IS already on the itinerary, set its price with update_flight/update_accommodation/update_activity instead; doing both counts it twice. Pass source_ref when importing so a re-run can't duplicate it.
입력 스키마
{'type': 'object', 'required': ['journey_id', 'title', 'amount', 'currency', 'category', 'spent_on'], 'properties': {'title': {'type': 'string', 'description': 'What it was, as the user would recognise it'}, 'amount': {'type': 'number', 'description': 'The total actually paid. Never a deposit, a per-night rate or a single fee.'}, 'stay_id': {'type': 'string', 'description': 'The stop this belongs to. Omit unless certain — an expense with a date is attributed to the stop whose dates contain it automatically.'}, 'category': {'enum': ['restaurant', 'transport', 'lodging', 'sight', 'groceries', 'shopping', 'coworking', 'activity'], 'type': 'string', 'description': "One of the app's expense categories. Food is 'restaurant'."}, 'currency': {'type': 'string', 'description': 'ISO 4217 code, e.g. USD, EUR, THB'}, 'spent_on': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'amount_usd': {'type': 'number', 'description': 'The same amount in USD, frozen at entry. Set it ONLY when the source states a USD (or already-converted home-currency) figure. Omit otherwise — the app converts at the live rate, which is honest, whereas a guessed historical rate is frozen forever.'}, 'journey_id': {'type': 'string'}, 'source_ref': {'type': 'string', 'description': "Where this came from, e.g. 'gmail:<messageId>'. Unique per user — a repeat import is refused."}, 'related_event_id': {'type': 'string', 'description': 'The flight/booking/activity this relates to, if any.'}}, 'additionalProperties': False}
create_flight
Add a flight to a trip.
입력 스키마
{'type': 'object', 'required': ['journey_id', 'departure_airport_code', 'arrival_airport_code', 'departure_datetime'], 'properties': {'seat': {'type': 'string'}, 'notes': {'type': 'string'}, 'price': {'type': 'number'}, 'currency': {'type': 'string'}, 'travelers': {'type': 'array', 'items': {'type': 'string'}, 'description': "Member user ids this is for (from list_journey_members). Omit for everyone — that's the norm."}, 'journey_id': {'type': 'string'}, 'booking_url': {'type': 'string'}, 'cabin_class': {'type': 'string'}, 'airline_code': {'type': 'string', 'description': "IATA airline code, e.g. 'TP' — find it with search_airlines"}, 'airline_name': {'type': 'string'}, 'flight_number': {'type': 'string'}, 'arrival_datetime': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'arrival_terminal': {'type': 'string'}, 'is_onward_ticket': {'type': 'boolean', 'description': 'Mark it as the proof-of-onward-travel ticket for an entry requirement'}, 'confirmation_code': {'type': 'string'}, 'departure_datetime': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'departure_terminal': {'type': 'string'}, 'arrival_airport_code': {'type': 'string', 'description': "IATA code, e.g. 'NRT' — find it with search_airports"}, 'departure_airport_code': {'type': 'string', 'description': "IATA code, e.g. 'JFK' — find it with search_airports"}}, 'additionalProperties': False}
create_journey
Start a new trip. Use when the user wants a separate trip rather than adding to an existing one.
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'end_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'start_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'description': {'type': 'string'}}, 'additionalProperties': False}
create_stay
Add a stay — a stop in a city — to a trip. This is how a destination gets onto the itinerary; book lodging for it with create_accommodation on the same dates.
입력 스키마
{'type': 'object', 'required': ['journey_id', 'country_code', 'city'], 'properties': {'city': {'type': 'string', 'description': "City name, e.g. 'Lisbon' — the city itself, not a neighbourhood, street or hotel"}, 'notes': {'type': 'string'}, 'city_code': {'type': 'string', 'description': "Optional alternative to `city` when you already know the code, e.g. 'LIS'"}, 'travelers': {'type': 'array', 'items': {'type': 'string'}, 'description': "Member user ids this is for (from list_journey_members). Omit for everyone — that's the norm."}, 'journey_id': {'type': 'string'}, 'country_code': {'type': 'string', 'description': "ISO country code, e.g. 'JP'"}, 'checkin_datetime': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'checkout_datetime': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'checkout_flexible': {'type': 'boolean'}}, 'additionalProperties': False}
create_visa
Record a visa the user holds or has applied for.
입력 스키마
{'type': 'object', 'required': ['country_code', 'visa_type'], 'properties': {'notes': {'type': 'string'}, 'cost_paid': {'type': 'number'}, 'visa_name': {'type': 'string'}, 'visa_type': {'type': 'string', 'description': 'e.g. tourist, business, student, work, digital_nomad, transit'}, 'issue_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'expiry_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'max_entries': {'type': 'number'}, 'visa_number': {'type': 'string'}, 'country_code': {'type': 'string'}, 'cost_currency': {'type': 'string'}, 'entries_allowed': {'type': 'string', 'description': 'single, double, multiple'}, 'application_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'embassy_consulate': {'type': 'string'}, 'passport_country_code': {'type': 'string'}}, 'additionalProperties': False}
delete_accommodation
Remove a booking from the trip.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['accommodation_id'], 'properties': {'accommodation_id': {'type': 'string'}}, 'additionalProperties': False}
delete_activity
Remove an activity from the trip.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['activity_id'], 'properties': {'activity_id': {'type': 'string'}}, 'additionalProperties': False}
delete_document
Delete one of the user's travel documents.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['document_id'], 'properties': {'document_id': {'type': 'string'}}, 'additionalProperties': False}
delete_expense
Remove a recorded expense. Irreversible.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['expense_id'], 'properties': {'expense_id': {'type': 'string'}}, 'additionalProperties': False}
delete_flight
Remove a flight from the trip.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['flight_id'], 'properties': {'flight_id': {'type': 'string'}}, 'additionalProperties': False}
delete_journey
Permanently delete a trip and everything on it — stops, flights, bookings, activities — for every member. Owner only. Irreversible; confirm with the user first.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['journey_id'], 'properties': {'journey_id': {'type': 'string'}}, 'additionalProperties': False}
delete_stay
Remove a stop from the trip. Refuses when the stop carries a booking — delete the booking instead.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['stay_id'], 'properties': {'stay_id': {'type': 'string'}}, 'additionalProperties': False}
delete_visa
Delete a recorded visa.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['visa_id'], 'properties': {'visa_id': {'type': 'string'}}, 'additionalProperties': False}
get_budget
The user's own spending target for a trip, if they set one. Personal, not shared: each member of a trip has their own, and no one else's is readable.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['journey_id'], 'properties': {'journey_id': {'type': 'string'}}, 'additionalProperties': False}
get_country_info
Country reference info and the user's visa requirement for it, based on their primary passport.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['country_code'], 'properties': {'country_code': {'type': 'string', 'description': "ISO country code, e.g. 'TH'"}}, 'additionalProperties': False}
get_current_trip
Use this when the user asks about the trip they are on right now. Returns the trip that spans today, or null, plus the next upcoming trip. Dates are derived from the trip's stays, flights and activities.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
get_document_link
Week-long download links to a document's file (a ticket PDF, a boarding pass). Use it to send the file over a text-only channel: paste the link. Pass document_id, or related_id to get every file attached to that flight/accommodation/activity, co-travellers' included when they share documents.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {'related_id': {'type': 'string', 'description': 'A flight/accommodation/activity id: every file attached to it'}, 'document_id': {'type': 'string', 'description': 'One document'}}, 'additionalProperties': False}
get_itinerary
Use this to read a trip's day-by-day plan: stays (the stops), flights, booked accommodation and activities. Pass from_date/to_date to read one window of a long trip.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['trip_id'], 'properties': {'to_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'trip_id': {'type': 'string', 'description': 'A trip id from get_upcoming_trips, get_current_trip or search_trips'}, 'from_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}}, 'additionalProperties': False}
get_journey
Get one journey's itinerary: stays (the stops), flights, booked accommodations, activities, and saved places. A booked stay is ONE row that appears in both lists under the SAME id — the stop it is, and the booking it carries. Pass from_date/to_date to read one window of a long trip instead of all of it.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['journey_id'], 'properties': {'to_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'from_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'journey_id': {'type': 'string'}}, 'additionalProperties': False}
get_journey_share_link
The link that invites someone onto a trip as a co-editor. Anyone who opens it joins immediately, so it is the whole invite — there is no separate accept step.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['journey_id'], 'properties': {'journey_id': {'type': 'string'}}, 'additionalProperties': False}
get_me
Who the user is: profile, the passports/nationalities they hold (which decide every visa answer), recorded passport documents, preferences, and saved addresses. Worth reading before planning anything.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
get_trip
Use this to read one trip's summary: name, description, first and last day, and whether it is ongoing, upcoming or past.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['trip_id'], 'properties': {'trip_id': {'type': 'string', 'description': 'A trip id from get_upcoming_trips, get_current_trip or search_trips'}}, 'additionalProperties': False}
get_upcoming_trips
Use this when the user asks what trips they have coming up. Returns trips that are ongoing or start in the future, soonest first, each with its first and last day.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Default 10'}}, 'additionalProperties': False}
get_visa_status
How many days of the user's allowance in a country are used and how many remain this year — the answer to "how much longer can I stay".
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['country_code'], 'properties': {'year': {'type': 'number'}, 'country_code': {'type': 'string'}}, 'additionalProperties': False}
leave_journey
Leave a trip someone else shared with the user. Owners can't leave their own trip — they delete it.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['journey_id'], 'properties': {'journey_id': {'type': 'string'}}, 'additionalProperties': False}
list_documents
The user's travel documents (passports, visas, insurance, tickets) — metadata only, not the files.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {'document_type': {'type': 'string', 'description': 'Filter: passport, national_id, drivers_license, boarding_pass, hotel_confirmation, travel_insurance, vaccination, visa, onward_ticket, other'}}, 'additionalProperties': False}
list_expenses
Recorded spending on a trip — the money entered by hand or imported, NOT the booked prices on flights and hotels (those come back from get_journey). Includes each row's source_ref, so an importer can see what it already brought in.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['journey_id'], 'properties': {'to_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'from_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'journey_id': {'type': 'string'}}, 'additionalProperties': False}
list_journey_members
Who is on a trip: user ids, roles, and profiles. Use it to get the ids that set_item_travellers takes.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['journey_id'], 'properties': {'journey_id': {'type': 'string'}}, 'additionalProperties': False}
list_journeys
List the user's trips (journeys) they own or have joined, with dates and whether they own it.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
list_visas
Visas the user holds — type, number, validity, entries used.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
remove_journey_member
Remove someone from a shared trip. Owner only.
파괴적 작업
입력 스키마
{'type': 'object', 'required': ['journey_id', 'user_id'], 'properties': {'user_id': {'type': 'string'}, 'journey_id': {'type': 'string'}}, 'additionalProperties': False}
search_airlines
Find airlines by name or IATA code.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number'}, 'query': {'type': 'string'}}, 'additionalProperties': False}
search_airports
Find airports by city, name or IATA code. Use this to get the codes create_flight requires — never guess them.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number'}, 'query': {'type': 'string'}}, 'additionalProperties': False}
search_cities
Find cities by name. Use it to confirm the exact city name create_stay expects.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number'}, 'query': {'type': 'string'}, 'country_code': {'type': 'string'}}, 'additionalProperties': False}
search_trips
Use this to find a trip by name or by a place on it, e.g. 'Lisbon' or 'Japan 2026'. Matches the trip name, its description, and the cities of its stays.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 100, 'minLength': 1}}, 'additionalProperties': False}
set_budget
Set or replace the user's own spending target for a trip. 'month' means per month of the trip; 'journey' means the whole trip. Replaces any existing target.
멱등성
입력 스키마
{'type': 'object', 'required': ['journey_id', 'amount', 'currency'], 'properties': {'amount': {'type': 'number'}, 'period': {'enum': ['month', 'journey'], 'type': 'string', 'description': "Defaults to 'month'."}, 'currency': {'type': 'string', 'description': 'ISO 4217 code, e.g. USD, EUR, THB'}, 'journey_id': {'type': 'string'}}, 'additionalProperties': False}
set_item_travellers
Say which people on a shared trip an item is for — one person's separate flight, one person's room. Omitting travelers (or passing an empty list) means everyone, which is the default and right for most items.
멱등성
입력 스키마
{'type': 'object', 'required': ['item_type', 'item_id'], 'properties': {'item_id': {'type': 'string'}, 'item_type': {'enum': ['stay', 'accommodation', 'flight', 'activity'], 'type': 'string'}, 'travelers': {'type': 'array', 'items': {'type': 'string'}, 'description': "Member user ids this is for (from list_journey_members). Omit for everyone — that's the norm."}}, 'additionalProperties': False}
update_accommodation
Change a booking's property, dates, price, confirmation or notes.
멱등성
입력 스키마
{'type': 'object', 'required': ['accommodation_id'], 'properties': {'name': {'type': 'string', 'description': "The property's own name, e.g. 'Memmo Alfama'"}, 'type': {'type': 'string', 'description': 'hotel, hostel, airbnb, apartment, other'}, 'notes': {'type': 'string'}, 'address': {'type': 'string'}, 'check_in': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'currency': {'type': 'string'}, 'latitude': {'type': 'number'}, 'provider': {'type': 'string', 'description': "Who it was booked with, e.g. 'Booking.com'"}, 'check_out': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'longitude': {'type': 'number'}, 'place_name': {'type': 'string', 'description': "The CITY the property is in, e.g. 'Lisbon' — not the property's name"}, 'booking_url': {'type': 'string'}, 'country_code': {'type': 'string'}, 'price_per_night': {'type': 'number'}, 'accommodation_id': {'type': 'string'}, 'confirmation_code': {'type': 'string'}}, 'additionalProperties': False}
update_activity
Change an activity's title, timing, place or notes.
멱등성
입력 스키마
{'type': 'object', 'required': ['activity_id'], 'properties': {'emoji': {'type': 'string'}, 'notes': {'type': 'string'}, 'price': {'type': 'number'}, 'title': {'type': 'string'}, 'address': {'type': 'string', 'description': 'Street address. For a travel leg: the ARRIVAL place (where it drops you), never the departure station'}, 'stay_id': {'type': 'string', 'description': "UUID of the stop this belongs to — attaches it to that city's days"}, 'category': {'type': 'string'}, 'currency': {'type': 'string'}, 'latitude': {'type': 'number', 'description': 'Where it happens; for a travel leg, the departure point'}, 'is_booked': {'type': 'boolean', 'description': 'False = planned but not yet purchased/reserved. Set true only once payment actually went through.'}, 'longitude': {'type': 'number', 'description': 'Where it happens; for a travel leg, the departure point'}, 'place_name': {'type': 'string', 'description': 'Where it happens. For a travel leg: the DEPARTURE place (the station or town you leave from)'}, 'activity_id': {'type': 'string'}, 'booking_url': {'type': 'string'}, 'country_code': {'type': 'string'}, 'end_datetime': {'type': 'string', 'description': 'Local time at the place, written with a Z suffix: a 09:16 departure is 2026-10-09T09:16:00Z, never its UTC instant'}, 'start_datetime': {'type': 'string', 'description': 'Local time at the place, written with a Z suffix: a 09:16 departure is 2026-10-09T09:16:00Z, never its UTC instant'}, 'transport_mode': {'type': 'string', 'description': 'Set this for a travel leg (walk, taxi, train, bus, ferry, drive); it makes the row a leg. Then fill the arrival_* fields'}, 'arrival_latitude': {'type': 'number', 'description': 'Travel leg only: the arrival point'}, 'arrival_city_name': {'type': 'string', 'description': "Travel leg only: the city it arrives in, e.g. 'Skopje'"}, 'arrival_longitude': {'type': 'number', 'description': 'Travel leg only: the arrival point'}, 'arrival_country_code': {'type': 'string', 'description': "Travel leg only: ISO code of the arrival country, e.g. 'MK'. country_code is the DEPARTURE's"}}, 'additionalProperties': False}
update_expense
Correct a recorded expense — its amount, currency, date, title, category or which stop it belongs to.
멱등성
입력 스키마
{'type': 'object', 'required': ['expense_id'], 'properties': {'title': {'type': 'string'}, 'amount': {'type': 'number'}, 'stay_id': {'type': 'string'}, 'category': {'enum': ['restaurant', 'transport', 'lodging', 'sight', 'groceries', 'shopping', 'coworking', 'activity'], 'type': 'string', 'description': "One of the app's expense categories. Food is 'restaurant'."}, 'currency': {'type': 'string', 'description': 'ISO 4217 code, e.g. USD, EUR, THB'}, 'spent_on': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'amount_usd': {'type': 'number', 'description': 'The same amount in USD, frozen at entry. Set it ONLY when the source states a USD (or already-converted home-currency) figure. Omit otherwise — the app converts at the live rate, which is honest, whereas a guessed historical rate is frozen forever.'}, 'expense_id': {'type': 'string'}, 'related_event_id': {'type': 'string'}}, 'additionalProperties': False}
update_flight
Change a flight's route, times, seat, confirmation or notes.
멱등성
입력 스키마
{'type': 'object', 'required': ['flight_id'], 'properties': {'seat': {'type': 'string'}, 'notes': {'type': 'string'}, 'price': {'type': 'number'}, 'currency': {'type': 'string'}, 'flight_id': {'type': 'string'}, 'booking_url': {'type': 'string'}, 'cabin_class': {'type': 'string'}, 'airline_code': {'type': 'string', 'description': "IATA airline code, e.g. 'TP' — find it with search_airlines"}, 'airline_name': {'type': 'string'}, 'flight_number': {'type': 'string'}, 'arrival_datetime': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'arrival_terminal': {'type': 'string'}, 'is_onward_ticket': {'type': 'boolean', 'description': 'Mark it as the proof-of-onward-travel ticket for an entry requirement'}, 'confirmation_code': {'type': 'string'}, 'departure_datetime': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'departure_terminal': {'type': 'string'}, 'arrival_airport_code': {'type': 'string', 'description': "IATA code, e.g. 'NRT' — find it with search_airports"}, 'departure_airport_code': {'type': 'string', 'description': "IATA code, e.g. 'JFK' — find it with search_airports"}}, 'additionalProperties': False}
update_journey
Rename a trip, change its dates or description, archive it, or set its home-base countries (countries where the user has their own place — no missing-stay warnings there). Owner only.
멱등성
입력 스키마
{'type': 'object', 'required': ['journey_id'], 'properties': {'name': {'type': 'string'}, 'end_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'journey_id': {'type': 'string'}, 'start_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'description': {'type': 'string'}, 'is_archived': {'type': 'boolean'}, 'home_base_country_codes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'ISO country codes'}}, 'additionalProperties': False}
update_preferences
Set the standing facts every trip should respect: where home is, the home airport, the currency to quote in, nightly budget, travel pace, and preferred working hours.
멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {'currency': {'type': 'string'}, 'home_city': {'type': 'string'}, 'budget_max': {'type': 'number'}, 'budget_min': {'type': 'number'}, 'travel_pace': {'type': 'string', 'description': 'e.g. slow, moderate, fast'}, 'work_end_hour': {'type': 'number'}, 'work_timezone': {'type': 'string', 'description': 'IANA zone, e.g. Europe/Lisbon'}, 'work_start_hour': {'type': 'number'}, 'home_airport_code': {'type': 'string'}, 'home_country_code': {'type': 'string'}, 'temperature_preference': {'type': 'string'}}, 'additionalProperties': False}
update_stay
Change a stop's city, country, dates or notes.
멱등성
입력 스키마
{'type': 'object', 'required': ['stay_id'], 'properties': {'city': {'type': 'string', 'description': "City name, e.g. 'Lisbon' — the city itself, not a neighbourhood, street or hotel"}, 'notes': {'type': 'string'}, 'stay_id': {'type': 'string'}, 'city_code': {'type': 'string', 'description': "Optional alternative to `city` when you already know the code, e.g. 'LIS'"}, 'country_code': {'type': 'string', 'description': "ISO country code, e.g. 'JP'"}, 'checkin_datetime': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'checkout_datetime': {'type': 'string', 'description': 'ISO-8601 datetime, e.g. 2026-08-01T14:30:00Z'}, 'checkout_flexible': {'type': 'boolean'}}, 'additionalProperties': False}
update_visa
Change a recorded visa, or archive it by setting is_active to false.
멱등성
입력 스키마
{'type': 'object', 'required': ['visa_id'], 'properties': {'notes': {'type': 'string'}, 'visa_id': {'type': 'string'}, 'cost_paid': {'type': 'number'}, 'is_active': {'type': 'boolean'}, 'visa_name': {'type': 'string'}, 'visa_type': {'type': 'string'}, 'issue_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'expiry_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'max_entries': {'type': 'number'}, 'visa_number': {'type': 'string'}, 'cost_currency': {'type': 'string'}, 'entries_allowed': {'type': 'string'}, 'application_date': {'type': 'string', 'description': 'ISO date, e.g. 2026-08-01'}, 'embassy_consulate': {'type': 'string'}}, 'additionalProperties': False}
추가됨
get_document_link
2026년 10월 1일 2:52 AM
변경됨
create_document
2026년 10월 1일 2:52 AM
변경됨
get_me
2026년 10월 1일 2:52 AM
변경됨
update_activity
2026년 10월 1일 2:52 AM
변경됨
create_activity
2026년 10월 1일 2:52 AM
변경됨
get_journey
2026년 10월 1일 2:52 AM
추가됨
get_itinerary
2026년 9월 25일 3:00 AM
추가됨
search_trips
2026년 9월 25일 3:00 AM
추가됨
get_trip
2026년 9월 25일 3:00 AM
추가됨
get_upcoming_trips
2026년 9월 25일 3:00 AM
추가됨
get_current_trip
2026년 9월 25일 3:00 AM
추가됨
delete_visa
2026년 9월 17일 7:57 AM
추가됨
update_visa
2026년 9월 17일 7:57 AM
추가됨
create_visa
2026년 9월 17일 7:57 AM
추가됨
list_visas
2026년 9월 17일 7:57 AM
추가됨
delete_document
2026년 9월 17일 7:57 AM
추가됨
create_document
2026년 9월 17일 7:57 AM
추가됨
add_passport
2026년 9월 17일 7:57 AM
추가됨
list_documents
2026년 9월 17일 7:57 AM
추가됨
update_preferences
2026년 9월 17일 7:57 AM
추가됨
search_airlines
2026년 9월 17일 7:57 AM
추가됨
search_cities
2026년 9월 17일 7:57 AM
추가됨
search_airports
2026년 9월 17일 7:57 AM
추가됨
get_visa_status
2026년 9월 17일 7:57 AM
추가됨
get_country_info
2026년 9월 17일 7:57 AM
추가됨
get_me
2026년 9월 17일 7:57 AM
추가됨
set_budget
2026년 9월 17일 7:57 AM
추가됨
get_budget
2026년 9월 17일 7:57 AM
추가됨
delete_expense
2026년 9월 17일 7:57 AM
추가됨
update_expense
2026년 9월 17일 7:57 AM