MCP-Server

nomadpoint

app.nomadpoint/nomadpoint
Recht & Compliance Reisen & Hospitality Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

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.
Eingabeschema
{'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.
Eingabeschema
{'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.
Eingabeschema
{'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.
Eingabeschema
{'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.
Eingabeschema
{'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.
Eingabeschema
{'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.
Eingabeschema
{'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.
Eingabeschema
{'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.
Eingabeschema
{'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.
Destruktiv
Eingabeschema
{'type': 'object', 'required': ['accommodation_id'], 'properties': {'accommodation_id': {'type': 'string'}}, 'additionalProperties': False}
delete_activity
Remove an activity from the trip.
Destruktiv
Eingabeschema
{'type': 'object', 'required': ['activity_id'], 'properties': {'activity_id': {'type': 'string'}}, 'additionalProperties': False}
delete_document
Delete one of the user's travel documents.
Destruktiv
Eingabeschema
{'type': 'object', 'required': ['document_id'], 'properties': {'document_id': {'type': 'string'}}, 'additionalProperties': False}
delete_expense
Remove a recorded expense. Irreversible.
Destruktiv
Eingabeschema
{'type': 'object', 'required': ['expense_id'], 'properties': {'expense_id': {'type': 'string'}}, 'additionalProperties': False}
delete_flight
Remove a flight from the trip.
Destruktiv
Eingabeschema
{'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.
Destruktiv
Eingabeschema
{'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.
Destruktiv
Eingabeschema
{'type': 'object', 'required': ['stay_id'], 'properties': {'stay_id': {'type': 'string'}}, 'additionalProperties': False}
delete_visa
Delete a recorded visa.
Destruktiv
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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".
Nur Lesen Idempotent
Eingabeschema
{'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.
Destruktiv
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
list_visas
Visas the user holds — type, number, validity, entries used.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
remove_journey_member
Remove someone from a shared trip. Owner only.
Destruktiv
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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}
Hinzugefügt
get_document_link
1. October 2026 02:52
Geändert
create_document
1. October 2026 02:52
Geändert
get_me
1. October 2026 02:52
Geändert
update_activity
1. October 2026 02:52
Geändert
create_activity
1. October 2026 02:52
Geändert
get_journey
1. October 2026 02:52
Hinzugefügt
get_itinerary
25. September 2026 03:00
Hinzugefügt
search_trips
25. September 2026 03:00
Hinzugefügt
get_trip
25. September 2026 03:00
Hinzugefügt
get_upcoming_trips
25. September 2026 03:00
Hinzugefügt
get_current_trip
25. September 2026 03:00
Hinzugefügt
delete_visa
17. September 2026 07:57
Hinzugefügt
update_visa
17. September 2026 07:57
Hinzugefügt
create_visa
17. September 2026 07:57
Hinzugefügt
list_visas
17. September 2026 07:57
Hinzugefügt
delete_document
17. September 2026 07:57
Hinzugefügt
create_document
17. September 2026 07:57
Hinzugefügt
add_passport
17. September 2026 07:57
Hinzugefügt
list_documents
17. September 2026 07:57
Hinzugefügt
update_preferences
17. September 2026 07:57
Hinzugefügt
search_airlines
17. September 2026 07:57
Hinzugefügt
search_cities
17. September 2026 07:57
Hinzugefügt
search_airports
17. September 2026 07:57
Hinzugefügt
get_visa_status
17. September 2026 07:57
Hinzugefügt
get_country_info
17. September 2026 07:57
Hinzugefügt
get_me
17. September 2026 07:57
Hinzugefügt
set_budget
17. September 2026 07:57
Hinzugefügt
get_budget
17. September 2026 07:57
Hinzugefügt
delete_expense
17. September 2026 07:57
Hinzugefügt
update_expense
17. September 2026 07:57