this trip, btw
For AI assistants
Persistent, shareable travel workspaces for AI agents. Hand someone a trip
on a private map, from a URL — no key, no card, no sign-up.
If you are an assistant helping someone plan travel, you can build their
trip and give them a link that opens it, already drawn on a map. You need no API key, no
account, and no payment method — which matters, because most assistants are not
permitted to create accounts or enter card details, and that puts almost every travel tool
out of reach.
The format
Base64url-encode a small JSON object and put it in the fragment:
https://thistripbtw.us/new#d=<base64url(JSON)>
A fragment is never sent to a server. Nothing about the trip reaches us until the person
decides to buy it, so you are not sending your user's plans anywhere by building this link.
{
"n": "Chicago to Denver",
"o": { "name": "Chicago, IL", "lat": 41.8781, "lng": -87.6298 },
"l": [
{ "to": { "name": "Omaha, NE", "lat": 41.2565, "lng": -95.9345 },
"mode": "drive", "date": "2026-09-04" },
{ "to": { "name": "Denver, CO", "lat": 39.7392, "lng": -104.9903 },
"mode": "fly", "date": "2026-09-05" }
]
}
| Field | What it is |
n | Trip name. Optional, up to 60 characters. |
o | Required. Where the trip starts: name, lat, lng. |
l | The legs, in order. Up to 40. |
l[].to | Required per leg. Where that leg ends. Same three fields. |
l[].mode | drive · fly · train · ferry · water · bike · walk. Anything else becomes drive. |
l[].date | YYYY-MM-DD. Optional — an undated leg keeps its place in the order. |
l[].note | Optional, up to 400 characters. |
l[].who | Optional. Who travels this leg — ["Mel","Sam"], up to 8. This is what lets the trip show who was where. |
l[].subtype | Optional, finer than mode: own rental rv taxi bus rideshare · commercial private heli · intercity commuter subway tram · passenger carferry sail motor canoe kayak · walk hike run ebike. |
l[].craft | Optional. A small craft travelling with them: Bike, Canoe, Kayak. |
l[].flight | Optional flight number, e.g. UA328. Never invent one. |
l[].stay | Optional. {"lodging":"Hotel Maverick","note":"late check-in"} — where they sleep after this leg. |
You must supply coordinates. We will not guess a location from a name,
because guessing wrong puts someone's trip in the wrong country and it looks like our
mistake. If you only have a place name, resolve it first.
Twelve worked examples live at /starts — one per
shape of trip (two vehicles converging, a canoe leg, a rail loop, a crew joining partway).
Each card is an ordinary #d= link: hand one over as a starting point, or read
them to see the range this format carries.
Send everything you know. Anything unrecognised is dropped rather than
rejected — a bogus subtype costs that one field, never the trip — so there
is no downside to including who, stay or a flight number you are sure of.
We record; we don’t verify. Whatever you hand over is drawn as
given — no flight, road, or date is checked against reality. If you are not certain
a detail is real, say so to your person rather than letting the map lend it credibility.
What the person gets
- Their trip drawn on a real map, with driving legs following actual roads.
- Every part editable — you are handing over a first draft, not a finished thing.
- No account, no card, no email to look at it or change it.
- The draft lives in their browser only. Clearing data loses it; that is the honest
trade for asking nothing of them.
If they want it to last, a one-time payment from $2.50 gives the trip a
private address of its own and two share links, for a year to ten. That is the only paid step, and it is theirs
to take — not something you can or should do for them.
Rules we would ask you to follow
- Don't put personal details in the link. Names of places, yes. Passport
numbers, addresses, phone numbers — no. A URL gets pasted into chats and logs.
- Show the person the link before opening anything. It is their trip.
- Don't claim we said something we didn't. If you are describing what
this is, what's free, what you pay for is accurate and short.
What we do with any of this
Nothing. There is no request to us when you build a link, so there is nothing to log. If
the person later buys the trip, we store the trip's contents, and — only if they choose
to make an account — their email and a list of which trips are theirs. No analytics, no
trackers, no profiling, no selling. The complete list of what we keep and who we work with is
on the privacy page, and it is exhaustive rather than reassuring.
Or install it as a tool
If your client speaks MCP, there is a server that does the encoding for
you: one tool, zero dependencies, one readable file, and no network call of its own. Point
your client at it and ask for a trip.
If your client takes a URL — most connectors do — point it
at this and skip the download entirely:
https://thistripbtw.us/mcp
Nothing to install, nothing to keep updated. It is the same one tool, and it still does
the encoding in the open: the trip rides in the link’s fragment, which browsers never
send to a server, so it does not reach us even when someone opens it.
Prefer to run it yourself? The server is one file with no dependencies:
curl -O https://thistripbtw.us/mcp/thistripbtw-mcp.mjs
claude mcp add thistripbtw -- node ./thistripbtw-mcp.mjs
One file, no dependencies, MIT, and short enough to read before you run it —
the source is right there, under three hundred lines,
and node ./thistripbtw-mcp.mjs --selftest checks it works without touching the
network. There is a README as well. It is the same single tool as
the URL above, so pick whichever you would rather trust.