Serveur MCP

nomadpoint

app.nomadpoint/nomadpoint
Juridique et conformité Voyage et hôtellerie Public et accessible MCP 2026-07-28

Ce que fait ce 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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.
Destructif
Schéma d’entrée
{'type': 'object', 'required': ['accommodation_id'], 'properties': {'accommodation_id': {'type': 'string'}}, 'additionalProperties': False}
delete_activity
Remove an activity from the trip.
Destructif
Schéma d’entrée
{'type': 'object', 'required': ['activity_id'], 'properties': {'activity_id': {'type': 'string'}}, 'additionalProperties': False}
delete_document
Delete one of the user's travel documents.
Destructif
Schéma d’entrée
{'type': 'object', 'required': ['document_id'], 'properties': {'document_id': {'type': 'string'}}, 'additionalProperties': False}
delete_expense
Remove a recorded expense. Irreversible.
Destructif
Schéma d’entrée
{'type': 'object', 'required': ['expense_id'], 'properties': {'expense_id': {'type': 'string'}}, 'additionalProperties': False}
delete_flight
Remove a flight from the trip.
Destructif
Schéma d’entrée
{'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.
Destructif
Schéma d’entrée
{'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.
Destructif
Schéma d’entrée
{'type': 'object', 'required': ['stay_id'], 'properties': {'stay_id': {'type': 'string'}}, 'additionalProperties': False}
delete_visa
Delete a recorded visa.
Destructif
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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".
Lecture seule Idempotent
Schéma d’entrée
{'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.
Destructif
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
list_visas
Visas the user holds — type, number, validity, entries used.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': [], 'properties': {}, 'additionalProperties': False}
remove_journey_member
Remove someone from a shared trip. Owner only.
Destructif
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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.
Lecture seule Idempotent
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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
Schéma d’entrée
{'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}
Ajouté
get_document_link
1 October 2026 02:52
Modifié
create_document
1 October 2026 02:52
Modifié
get_me
1 October 2026 02:52
Modifié
update_activity
1 October 2026 02:52
Modifié
create_activity
1 October 2026 02:52
Modifié
get_journey
1 October 2026 02:52
Ajouté
get_itinerary
25 September 2026 03:00
Ajouté
search_trips
25 September 2026 03:00
Ajouté
get_trip
25 September 2026 03:00
Ajouté
get_upcoming_trips
25 September 2026 03:00
Ajouté
get_current_trip
25 September 2026 03:00
Ajouté
delete_visa
17 September 2026 07:57
Ajouté
update_visa
17 September 2026 07:57
Ajouté
create_visa
17 September 2026 07:57
Ajouté
list_visas
17 September 2026 07:57
Ajouté
delete_document
17 September 2026 07:57
Ajouté
create_document
17 September 2026 07:57
Ajouté
add_passport
17 September 2026 07:57
Ajouté
list_documents
17 September 2026 07:57
Ajouté
update_preferences
17 September 2026 07:57
Ajouté
search_airlines
17 September 2026 07:57
Ajouté
search_cities
17 September 2026 07:57
Ajouté
search_airports
17 September 2026 07:57
Ajouté
get_visa_status
17 September 2026 07:57
Ajouté
get_country_info
17 September 2026 07:57
Ajouté
get_me
17 September 2026 07:57
Ajouté
set_budget
17 September 2026 07:57
Ajouté
get_budget
17 September 2026 07:57
Ajouté
delete_expense
17 September 2026 07:57
Ajouté
update_expense
17 September 2026 07:57