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
変更
create_document
2026年10月1日2:52
変更
get_me
2026年10月1日2:52
変更
update_activity
2026年10月1日2:52
変更
create_activity
2026年10月1日2:52
変更
get_journey
2026年10月1日2:52
追加
get_itinerary
2026年9月25日3:00
追加
search_trips
2026年9月25日3:00
追加
get_trip
2026年9月25日3:00
追加
get_upcoming_trips
2026年9月25日3:00
追加
get_current_trip
2026年9月25日3:00
追加
delete_visa
2026年9月17日7:57
追加
update_visa
2026年9月17日7:57
追加
create_visa
2026年9月17日7:57
追加
list_visas
2026年9月17日7:57
追加
delete_document
2026年9月17日7:57
追加
create_document
2026年9月17日7:57
追加
add_passport
2026年9月17日7:57
追加
list_documents
2026年9月17日7:57
追加
update_preferences
2026年9月17日7:57
追加
search_airlines
2026年9月17日7:57
追加
search_cities
2026年9月17日7:57
追加
search_airports
2026年9月17日7:57
追加
get_visa_status
2026年9月17日7:57
追加
get_country_info
2026年9月17日7:57
追加
get_me
2026年9月17日7:57
追加
set_budget
2026年9月17日7:57
追加
get_budget
2026年9月17日7:57
追加
delete_expense
2026年9月17日7:57
追加
update_expense
2026年9月17日7:57