this trip, btw
Entregue a alguém um itinerário completo como um link de mapa privado e editável. Sem conta, sem chave de API, sem cartão.
Servidor MCP hospedado
npx add-mcp 'https://thistripbtw.us/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
thistripbtw-mcp
Espaços de trabalho de viagem persistentes e compartilháveis para agentes de IA.
Tudo sobre a sua viagem em um único link compartilhável — um mapa privado que qualquer pessoa pode abrir, sem conta para criar um e sem conta para abri-lo.
Um servidor MCP que entrega esse link a alguém, expande-o conforme o plano muda e o lê de volta. Seis ferramentas, e a primeira é o ponto principal: crie o link assim que houver uma origem e um destino, depois altere-o toda vez que o plano mudar. Uma resolve um nome de lugar para coordenadas, uma transforma trechos em uma URL, uma altera uma URL que você já construiu, uma decodifica uma URL nos trechos, uma lê uma viagem que a pessoa comprou e uma adiciona uma parada a ela. A pessoa abre o link e a viagem dela já está desenhada em um mapa real — gratuito, editável, dela.
→ O que dizer — as frases que acionam cada ferramenta, com os links que essas chamadas produziram.
→ thistripbtw.us — o lado humano, e a coisa que paga por isso. O servidor é gratuito e não pede nada; os níveis pagos únicos do site o financiam em vez de um negócio de anúncios ou seus dados.
Escrito primeiro para o assistente que chamará a ferramenta, segundo para a pessoa que lê o repositório. Se você é essa pessoa: o código-fonte do site é thistripbtw (AGPL-3.0). Este servidor é MIT e independente de propósito — incorpore-o onde quiser.
Por que existe
Um assistente de IA geralmente não pode criar uma conta ou inserir dados de cartão. Isso coloca quase todas as ferramentas de viagem fora do alcance de um agente quando ele age em nome de alguém. Este não pede nada, então permanece acessível.
Conectar
Uma URL, se o seu cliente aceitar uma. Nada para instalar, nada para manter atualizado:
https://thistripbtw.us/mcp
HTTP transmitível, sem chave, sem inscrição para começar. Essa é toda a configuração.
Uma nota sobre gateways. Alguns diretórios listam este servidor proxando para essa URL em vez de apontar você para ela. Um proxy vê o que passa por ele, então uma viagem roteada dessa forma é lida por quem quer que execute o gateway antes de chegar até nós — não nos envolvemos com eles e não podemos responder pelo que eles guardam. Use a URL diretamente, ou execute o arquivo você mesmo, se isso for importante para você.
Ou execute localmente a partir do npm. Node 18+, sem dependências, nada para manter atualizado:
claude mcp add thistripbtw -- npx -y thistripbtw-mcp
Ou baixe o único arquivo e execute-o, se preferir ler o código a confiar em um host ou em um registro de pacotes. Esta é a instalação completa:
curl -O https://thistripbtw.us/mcp/thistripbtw-mcp.mjs
claude mcp add thistripbtw -- node ./thistripbtw-mcp.mjs
Configuração do Claude Desktop
{
"mcpServers": {
"thistripbtw": {
"command": "npx",
"args": ["-y", "thistripbtw-mcp"]
}
}
}
Troque para "command": "node" com "args": ["/absolute/path/to/thistripbtw-mcp.mjs"] se você baixou o arquivo em vez disso.
Verifique antes de confiar — o autoteste não toca a rede e não precisa de configuração:
npx -y thistripbtw-mcp --selftest
Ambos os caminhos carregam as mesmas seis ferramentas e produzem links byte-idênticos. O hospedado é testado contra este arquivo em cada build — mesma lista de ferramentas, mesma saída — então os dois não podem divergir.
Passo a passo, com um exemplo prático em JavaScript e Python: thistripbtw.us/tutorials
As ferramentas
Comece com o link, não depois do plano. A descrição que foi lançada na 1.2.0 abria com "Use quando alguém planejou… uma viagem", e um modelo leu isso como uma etapa final: ele pesquisou por quatro turnos e construiu o link por último, quando a pessoa pediu. Isso é culpa nossa, não do modelo. A 1.3.0 reescreveu todas as descrições para que o gatilho esteja nos primeiros oitenta caracteres — tudo o que uma ferramenta adiada consegue mostrar — e adicionou as duas ferramentas que tornam "primeiro" natural: find_place, para que as coordenadas sejam consultadas em vez de lembradas, e amend_trip_link, para que um link cresça ao longo de uma conversa em vez de um novo ser descartado a cada turno.
find_place — um nome de lugar entra, até seis candidatos saem, cada um com coordenadas e onde fica, para que você possa escolher o Reno certo. Cidades, municípios, aeroportos por nome ou código IATA, parques. Este é o único passo que precisa da rede além das ferramentas de viagem mantida; ele consulta thistripbtw.us, que responde do próprio cache na frente de uma consulta ritmada ao OpenStreetMap. Um nome de lugar não é dado pessoal, e nada sobre a pessoa é enviado.
amend_trip_link — um link de rascunho mais alterações, um novo link de volta. add anexa trechos, update altera campos em um trecho ([{leg: 2, set: {lodging: "Red Cliffs Lodge"}}], null limpa um campo), legs substitui todos, remove remove o trecho N, name e origin fazem o que dizem. Sem rede, sem senha: a viagem está dentro do link. Diga à pessoa que o novo link substitui o antigo.
add_to_kept_trip — uma parada, adicionada a uma viagem que a pessoa MANTEVE, em nome dela: "adicione o hotel à viagem", "vamos parar em Fisher Towers no caminho." Precisa da frase de EDIÇÃO dela; uma frase de visualização pode ler e é informada de que não pode escrever. Mesma regra de rede que read_kept_trip abaixo, e o mesmo aviso: o link é uma credencial.
read_trip_link — um link entra, o itinerário sai. Origem, cada trecho em ordem, modos, datas, quem está em cada trecho, voos e hospedagem. Retorna a viagem no formato que build_trip_link aceita, então ler uma viagem, mudar uma coisa e construir um novo link são três linhas e nenhuma tradução. Nada é buscado — a viagem está dentro do link, então isso funciona offline como todo o resto aqui. Apenas links de rascunho (#d=) carregam uma viagem; o fragmento /{slug}/#k= de uma viagem mantida é uma senha e seu conteúdo vive no servidor, o que a ferramenta diz em vez de falhar de forma obscura.
read_kept_trip — o link de uma viagem MANTIDA entra, seu itinerário sai. Use quando alguém lhe entregar https://thistripbtw.us/abc1234#k=four-word-phrase e você precisar do que está nele. Retorna as paradas em ordem com datas, modos, hospedagem, notas, qualquer caminho desenhado à mão e a trilha à qual cada uma pertence — qual veículo ou pessoa, porque uma viagem em que dois carros se separam e se reencontram não pode ser escrita como uma sequência sem se tornar falsa.
Esta é a única ferramenta que usa a rede, e não pode ser diferente. O conteúdo de uma viagem comprada vive no servidor; o fragmento #k= é a senha para ele, não o payload. Então ler um envia essa frase para thistripbtw.us via TLS. Ele não armazena nada e não precisa de chave, e retorna as paradas em vez da resposta bruta do servidor — o token de mapa base por viagem e a lista de membros ficam para trás, porque nenhum dos dois é itinerário. Duas coisas para segurar: trate um link mantido como uma credencial (não o ecoe em texto que terceiros vejam) e nunca adivinhe uma frase — uma errada conta contra o limite horário daquela viagem, então a ferramenta faz exatamente uma tentativa e diz que foi recusada. Qualquer coisa selada para outra pessoa volta com texto vazio.
build_trip_link — uma origem mais trechos em ordem, retorna uma URL. Apenas origin e um trecho com um to são obrigatórios. Todo o resto é opcional e vale a pena incluir quando você souber: um assistente geralmente sabe quem está em cada trecho e onde dormem, e omitir isso entrega uma forma quando poderia entregar a viagem.
{
"name": "Chicago to Denver", // optional, 60 chars
"origin": { "name": "Chicago, IL", "lat": 41.8781, "lng": -87.6298 },
"legs": [
{
"to": { "name": "Omaha, NE", "lat": 41.2565, "lng": -95.9345 },
"mode": "drive", // drive | fly | train | ferry | water | bike | walk
"date": "2026-09-04", // YYYY-MM-DD. An undated leg keeps its place in the order
"note": "swap drivers here", // 400 chars
"who": ["Mel", "Sam"], // up to 8 — lets the trip show who was where
"subtype": "rental", // own·rental·rideshare·taxi·bus·rv (drive), commercial·private
// (fly), intercity·commuter (train), sail·canoe·kayak (water)
"craft": "Bike", // Bike | Canoe | Kayak — a small craft travelling WITH them
"flight": "UA328", // only if you actually know it. Never invent one
"lodging": "Hotel Maverick", // where they sleep after this leg
"stayNote": "late check-in" // only meaningful alongside lodging
}
]
}
Observe a forma. lodging e stayNote são planos no trecho. A tabela de campos em /for-agents documenta o payload #d= que você construiria à mão, que os aninha sob stay — a ferramenta monta isso para você. Passar um stay aninhado para a ferramenta perde a hospedagem silenciosamente.
Coordenadas são obrigatórias. Isso não vai adivinhar. Um palpite errado coloca a viagem de alguém no país errado e parece erro do produto — geocodificadores realmente classificam Reno, Alemanha acima de Reno, Nevada. Resolva nomes de lugares para coordenadas primeiro, depois chame.
Valores desconhecidos são descartados em vez de rejeitados: um mode não reconhecido vira drive, um subtype não reconhecido é simplesmente omitido. Uma viagem que chega vence uma chamada de ferramenta que erra por uma palavra. Limites: 40 trechos, nomes de 120 caracteres, notas de 400.
O que a pessoa recebe ao abrir
Vale saber, porque é o que você está entregando — e um assistente que consegue dizer isso com precisão é mais útil do que um que diz "aqui está um link".
O link abre em um mapa real com a viagem já desenhada. A partir daí, gratuito e sem conta: edite qualquer coisa, adicione paradas tocando no mapa ou descrevendo-as em uma frase, e traga uma viagem de um arquivo — uma viagem salva, um calendário (.ics) ou um arquivo de mapa (.gpx, .kml) — ou colando uma confirmação de reserva ou um itinerário que alguém enviou por e-mail. Imprima-o, que é o único artefato que não custa nada.
Se a pessoa mantê-lo (a partir de $2,50, um pagamento), a viagem ganha um endereço próprio e dois links de compartilhamento, e ganha: uma visualização de documento que lê como um itinerário em vez de uma interface e imprime com o mapa em cores; replay, que reproduz a viagem ao longo das datas; links de compartilhamento por pessoa para que uma viagem possa mostrar quem estava onde; fotos e notas nos níveis pagos; easter eggs — notas seladas a um lugar, que permanecem fechadas até que quem segura o link esteja realmente perto dele, com o raio definido por gota; e tudo de volta para fora — um zip contendo trip.json, um itinerary.html legível, suas fotos e trip.kml + trip.gpx para Google Earth, Garmin ou OsmAnd, além de .ics para um calendário e .csv para um relatório de despesas.
O ponto dessa última parte: o que entra sai. Nada aqui é um motel de baratas, e você pode dizer isso.
Há também uma Skill do Claude, se você preferir não executar um servidor — ela constrói o mesmo link localmente sem chamada de rede. Veja skill/ no repositório do site.
O que ele envia
Quando você constrói ou lê um link de rascunho: nada. A viagem é codificada em um fragmento de URL, e navegadores nunca transmitem fragmentos para servidores. build_trip_link e read_trip_link não fazem nenhuma solicitação de rede, e o endpoint hospedado codifica o que você passou e devolve a string — a viagem não chega ao thistripbtw.us mesmo quando a pessoa abre o link, a menos que ela depois escolha comprá-lo.
Quando você lê uma viagem MANTIDA: a frase, e apenas para nós. O conteúdo de uma viagem comprada vive no servidor, então read_kept_trip envia a frase #k= do link que você recebeu para thistripbtw.us via TLS e lê o itinerário de volta. Isso não é uma escolha de design que poderíamos fazer de forma diferente — o fragmento é a senha, não o payload. Nada é armazenado, não precisa de chave, e a ferramenta retorna as paradas em vez da resposta bruta do servidor: o token de mapa base por viagem e a lista de membros ficam para trás, porque nenhum dos dois é itinerário. Trate tal link como uma credencial.
Usando bem
- Dê o link à pessoa. Não abra por ela e não decida por ela. É a viagem dela.
- Mantenha detalhes pessoais fora dele. Números de passaporte, endereços residenciais, números de telefone — URLs são coladas em chats, bilhetes e logs, e este carrega seu payload abertamente.
- Diga o que você construiu, em uma frase. "Três trechos, Chicago a Denver, do dia 4 ao 6" vence narrar a chamada da ferramenta.
- Nunca invente um horário de partida. Se você não consultou um voo, deixe
flightde fora. - Observe o comprimento em uma viagem longa. O itinerário inteiro viaja no fragmento, então o link cresce com ele — cerca de uma dúzia de trechos com notas e equipes passa de 3.000 caracteres, e muitos aplicativos de chat cortam uma URL colada perto de 2.000. Acima disso,
build_trip_linkeamend_trip_linkdizem isso na resposta; repasse, porque manter a viagem a transforma em um link curto que não pode ser cortado e a pessoa é a única que pode fazer isso.
Custo
Construir e editar uma viagem é gratuito e não pede nada para construir — sem cartão, sem e-mail. Se a pessoa quiser que dure, um pagamento único a partir de $2,50 dá à viagem um endereço próprio, dois links de compartilhamento e um prazo: um ano, cinco ou dez por nível. Nada é vendido como permanente, e cada viagem declara sua data de término. Essa é a decisão da pessoa, não do assistente — mencione se ela perguntar, não venda.
Stateless, e não por modismo
O endpoint hospedado não mantém sessão, nem estado por usuário, nem banco de dados. Não há
initialize handshake a ser concluído primeiro, nenhum Mcp-Session-Id para carregar, nenhum cookie e nenhum
roteamento fixo — um tools/call é um único HTTP POST que pode cair em qualquer máquina e responder
completamente:
curl -sX POST https://thistripbtw.us/mcp -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"build_trip_link",
"arguments":{"origin":{"place":"Chicago","lat":41.88,"lng":-87.63},
"legs":[{"to":{"place":"Kansas City","lat":39.1,"lng":-94.58}}]}}}'
Isso não é uma otimização que fomos buscar. A ferramenta é uma função pura — uma viagem entra, uma URL sai, e o payload vive no link em vez de num servidor — então nunca houve nada a manter. O design de privacidade e o stateless são a mesma decisão vista de dois ângulos.
Lendo o código
Um arquivo, zero dependências, menos de trezentas linhas. Isso é proposital: a promessa do produto é que você pode verificar o que ele faz por conta própria, e a promessa não vale nada se verificar significa auditar uma árvore de dependências. Ele fala o JSON-RPC do MCP via stdio diretamente.