Chat with your AI. Get a shareable link. No login. No friction.
Western travel culture loves roadtrips — hopping between towns, experiencing local food, sleeping somewhere new every night. Vietnam is perfect for this: the country stretches 1,650 km from north to south, packed with distinct provinces, each with its own cuisine, landscapes, and rhythm.
Most AIs can plan a great multi-stop Vietnam itinerary — but the output is a wall of text. Vietnam Roadtrips gives that plan a visual home: an interactive timeline with a live map, estimated time at each attraction, transport between stops, food recommendations, and cost estimates. All rendered beautifully from a single shareable link.


No installation needed. Connect your AI directly to the server:
https://trips.naai.studio/mcp
Pick your AI client below:
Once connected, paste this into your AI:
Plan a 7-day Vietnam roadtrip from Hanoi heading south: Ninh Binh (2 nights),
Phong Nha (2 nights), Hue (1 night), Da Nang (2 nights). Group of 2 adults.
End of April 2026.
For each stop: add the top 3–4 attractions with estimated visit duration and
ticket prices, local food specialties, rough accommodation budget per night,
and transport from the previous stop (bus/train, estimated fare and travel time).
Use slug "hanoi-south-apr26" and push everything to Vietnam Roadtrips.
Return the share link when done.
Your AI will return something like:
Here's your trip: https://trips.naai.studio/?session=a3f8c2e1d4b7
Open it. Share it. Done.
The share link is the edit handle for AI workflows. If you want to continue editing an existing AI-created trip in a later chat, give the AI the original share link:
Continue editing this Vietnam Roadtrips plan:
https://trips.naai.studio/?session=a3f8c2e1d4b7
Add one extra night in Da Lat and update the cost estimates.
All edit tools accept either shareUrl, sessionId, or planSlug. For public
editing, prefer shareUrl because it points to the exact session plan.
Each stop on your itinerary gets its own card on a vertical timeline, connected by transport info. Click any stop to expand:
| Tool | What it does |
|---|---|
list_plans |
List available sample plans and their slugs |
create_plan |
Create a new public session trip → returns shareUrl; slug is optional and safely de-duped |
get_plan |
Read a trip by shareUrl, sessionId, or slug |
add_location |
Add a stop with dates and province/map metadata |
update_location |
Edit stop timing or map metadata |
delete_location |
Remove a stop |
reorder_locations |
Reorder stops and cascade dates |
add_sub_location |
Add an attraction inside a stop, including visit duration, map pin, ticket prices, and sort order |
update_sub_location |
Edit an attraction |
delete_sub_location |
Remove an attraction |
reorder_sub_locations |
Reorder attractions inside a stop |
update_plan |
Rename or change the slug |
delete_plan |
Delete the plan |
Plans created via MCP are session-isolated — they don’t appear in the main site listing and are only accessible via your unique share link.
MCP supports two editing modes:
?session=....adminPassword in the tool arguments for that call, or use the stdio tool set_admin_password once for the current MCP process.Do not store the admin password in checked-in MCP config. For local stdio MCP, prefer environment variables:
{
"mcpServers": {
"vietnam-roadtrips-prod": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/vietnam-travel/api/src/mcp.ts"],
"env": {
"REMOTE_API_URL": "https://trips.naai.studio",
"ADMIN_PASSWORD": "<set outside git>"
}
}
}
}
Activity detail and cost data belongs in sub_locations: use activityType (sightseeing, accommodation, food, transport, other) plus pricingMode (per_person, per_room, per_group), unitPrice, quantity, surcharge, adultPrice, childPrice, participant counts, actualCost, scheduledDate, scheduledTime, and durationDays. actualCost records real spend separately from estimate fields. Location-level description, food, activity list, and cost fields are legacy storage only and should not be used for new edits.
Deploy does not move data between environments. Prod, local, and other deployments each keep their own SQLite DB; use Admin/CLI/MCP against the target environment when editing plan data.
The API package includes a JSON-first CLI for Codex or other automation.
# Read public data
npm --prefix api run cli -- list-plans --api-url https://trips.naai.studio
npm --prefix api run cli -- show-plan ha-noi-nghe-an-ninh-binh-ha-long-ha-noi --api-url https://trips.naai.studio
# Write prod/admin data. Keep the password in the shell environment, not in files.
TRAVEL_ADMIN_PASSWORD=... npm --prefix api run cli -- add-activity ha-long 12 \
--api-url https://trips.naai.studio \
--json '{"name":"Khach san","activityType":"accommodation","pricingMode":"per_room","unitPrice":900000,"quantity":1,"surcharge":0,"durationDays":2}'
Core CLI commands: create-plan, update-plan, delete-plan, add-location, update-location, delete-location, reorder-locations, add-activity, update-activity, delete-activity, reorder-activities, get-plan, and show-plan.
Built by leolionart