Ferramenta: compute_routes
Calcula trajetos entre uma origem e um destino, com a opção de incluir paradas intermediárias. Retorna a distância e a duração de cada trajeto.
Requisitos de entrada (CRÍTICOS):
originedestination(objetos - OBRIGATÓRIO): cada um precisa ser fornecido usando exatamente um dos seguintes:address(string, por exemplo,'Eiffel Tower, Paris'). Lugares, pontos de referência e empresas com nome são resolvidos diretamente. Portanto, NÃO chamesearch_placesprimeiro apenas para geocodificar um waypoint. Inclua qualquer cidade, região ou país mencionado pelo usuário.lat_lng(objeto,{"latitude": number, "longitude": number}).place_id(string, por exemplo,'ChIJOwE_Id1w5EAR4Q27FkL6T_0'), por exemplo, desearch_places.
intermediate_waypoints(matriz de objetos, OPCIONAL): até 10 paradas para passar, em ordem, entre a origem e o destino. Mesmo formato deorigin. Não compatível comTRANSIT. Inclua apenas as paradas que o usuário pediu.travel_mode(tipo enumerado - OPCIONAL):DRIVE(padrão),WALK,BICYCLEouTRANSIT.Horário (OPCIONAL - defina no máximo UM): carimbos de data/hora RFC 3339 com um ajuste de UTC, por exemplo,
'2026-09-19T08:00:00-07:00'. O padrão é "partindo agora". ParaTRANSIT, o horário pode ser de até 7 dias no passado ou até 100 dias no futuro. Para outros modos, o horário pode ser de até 365 dias no futuro e não pode ser no passado.departure_time: use quando o usuário disser quando vai sair (por exemplo, "amanhã às 8h").arrival_time: use quando o usuário disser o horário de chegada (por exemplo, "chegar lá até as 9h").
routing_preference(tipo enumerado - OPCIONAL):ROUTING_PREFERENCE_TRAFFIC_UNAWARE(padrão): ignora o trânsito em tempo real, incidentes e interdições. Latência mais baixa.ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: usa as condições de trânsito em tempo real quando disponíveis. Não há suporte paraWALKouBICYCLE. Defina isso APENAS quando o usuário perguntar sobre o trânsito, congestionamento ou um horário de chegada ajustado ao trânsito. Ela gera custos e latência mais altos.
location_bias(objeto, OPCIONAL):{"latitude": number, "longitude": number}usado para eliminar a ambiguidade de nomes de lugares em endereços de pontos de referência. Se um nome for ambíguo (por exemplo, "Springfield") e o usuário não tiver informado uma região, mantenha o nome como fornecido emaddresse definalocation_biaspara a área pretendida em vez de adivinhar uma região.compute_alternative_routes(booleano, OPCIONAL): defina comotruesomente quando o usuário pedir opções ou alternativas de trajeto. O padrão éfalse, que retorna apenas o trajeto recomendado.include_polyline(booleano - OPCIONAL): defina comotruesomente quando a geometria do trajeto (encoded_polyline) for necessária. O padrão éfalse.
Instruções para chamada de ferramenta:
- Se a origem ou o destino estiverem ausentes, você PRECISA pedir esclarecimentos ao usuário antes de chamar a ferramenta.
- Para perguntas como "Qual é a distância de A até B?", use B como
origine A comodestination.
Exemplo de chamada de ferramenta: {"origin":{"address":"Torre Eiffel"},"destination":{"place_id":"ChIJt_5xIthw5EARoJ71mGq7t74"},"intermediate_waypoints":[{"address":"Museu do Louvre"}],"travel_mode":"DRIVE","departure_time":"2026-09-19T08:00:00+02:00"}
Instruções para resposta:
- Quando rotas alternativas são solicitadas, elas são ordenadas da mais para a menos recomendada.
- Se
routesestiver vazio, informe ao usuário que nenhuma rota foi encontrada. Não adivinhe um trajeto. - Apenas declare os fatos retornados pela ferramenta. NÃO invente navegação guiada, linhas de transporte público, estações, plataformas ou baldeações.
- A saída embasada precisa ser atribuída à fonte usando o campo
attributionde cada rota, quando disponível.
O exemplo de código abaixo mostra como usar curl para chamar a ferramenta MCP compute_routes.
| Solicitação curl |
|---|
curl --location 'https://mapstools.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "compute_routes", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
Esquema de entrada
ComputeRoutesRequest.
ComputeRoutesRequest
| Representação JSON |
|---|
{ "origin": { object ( |
| Campos | |
|---|---|
origin |
Obrigatório. Waypoint de origem. |
destination |
Obrigatório. Waypoint de destino. |
travelMode |
Opcional. Especifica o meio de transporte. |
intermediateWaypoints[] |
Opcional. Paradas intermediárias entre a origem e o destino que precisam ser feitas em ordem. No máximo 10 waypoints intermediários são aceitos. Os waypoints intermediários não são aceitos quando |
routingPreference |
Opcional. Determina como os dados de trânsito são usados para calcular o trajeto. |
locationBias |
Opcional. Um local para priorizar os resultados da pesquisa, por exemplo, para eliminar ambiguidades em consultas de texto de waypoints. |
includePolyline |
Opcional. Se a polilinha codificada deve ser incluída nas rotas de resposta. O valor padrão é |
computeAlternativeRoutes |
Opcional. Se é preciso calcular rotas alternativas além da recomendada. O padrão é falso, em que apenas o trajeto recomendado é retornado. Quando definido como verdadeiro, todas as rotas disponíveis são retornadas, mas as alternativas podem não estar disponíveis para todas as solicitações. |
Campo de união timing. Especifica quando sair da origem ou chegar ao waypoint final. O padrão é a partida no horário atual, se não for especificado. Para TRANSIT, o horário precisa ser de no máximo 7 dias no passado e no máximo 100 dias no futuro. Para outros meios de transporte, o horário não pode ser no passado e precisa ser no máximo 365 dias no futuro. timing pode ser apenas de um dos tipos a seguir: |
|
departureTime |
Opcional. Indica que o trajeto deve ser calculado com base no horário de partida. Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: |
arrivalTime |
Opcional. Indica que o trajeto deve ser calculado com base no horário de chegada. Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de "Z", outros ajustes também são aceitos. Exemplos: |
Carimbo de data/hora
| Representação JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Campos | |
|---|---|
seconds |
Representa os segundos do horário UTC desde a época Unix 1970-01-01T00:00:00Z. Precisa estar entre -62135596800 e 253402300799, inclusive (o que corresponde a 0001-01-01T00:00:00Z a 9999-12-31T23:59:59Z). |
nanos |
Frações não negativas de um segundo com resolução de nanossegundos. Esse campo é a parte de nanossegundos da duração, não uma alternativa aos segundos. Os valores de segundos negativos com frações ainda precisam ter valores em nanossegundos não negativos que representam períodos posteriores. O valor precisa ser de 0 a 999.999.999. |
Ponto de referência
| Representação JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de união location_type. Diferentes maneiras de representar um local. location_type pode ser apenas de um dos tipos a seguir: |
|
latLng |
Um ponto especificado usando coordenadas geográficas. |
placeId |
O ID de lugar associado ao waypoint. |
address |
Endereço legível por humanos ou um Plus Code. Para mais detalhes, consulte https://plus.codes. |
LatLng
| Representação JSON |
|---|
{ "latitude": number, "longitude": number } |
| Campos | |
|---|---|
latitude |
A latitude em graus. Precisa estar no intervalo [-90,0, +90,0]. |
longitude |
A longitude em graus. Precisa estar no intervalo [-180,0, +180,0]. |
RouteTravelMode
Um conjunto de valores usado para especificar o meio de transporte.
| Tipos enumerados | |
|---|---|
ROUTE_TRAVEL_MODE_UNSPECIFIED |
Nenhum meio de transporte especificado. O valor padrão é DRIVE. |
DRIVE |
Viajar de carro de passeio. |
WALK |
Viaje a pé. OBSERVAÇÃO: as rotas de WALK estão na versão Beta e, às vezes, podem não ter calçadas ou caminhos para pedestres claros. Você precisa mostrar esse aviso ao usuário em todas as caminhadas exibidas no seu app. |
BICYCLE |
Viajar de bicicleta. |
TRANSIT |
Viajar usando o transporte público. |
RoutingPreference
Um conjunto de valores que especificam fatores a serem considerados ao calcular o trajeto.
| Tipos enumerados | |
|---|---|
ROUTING_PREFERENCE_UNSPECIFIED |
Nenhuma preferência de roteamento especificada. O valor padrão é ROUTING_PREFERENCE_TRAFFIC_UNAWARE. |
ROUTING_PREFERENCE_TRAFFIC_UNAWARE |
Calcula rotas sem considerar as condições de trânsito em tempo real. Adequado quando as condições de trânsito não importam ou não são relevantes. O uso desse valor produz a menor latência. |
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL |
Calcula rotas considerando as condições de trânsito em tempo real, quando os dados de trânsito estão disponíveis. Para Esse valor vai acionar o nível Pro e gerar um custo faturado e uma latência maiores. Esse recurso está disponível apenas para clientes na lista de permissões. Se não estiver na lista de permissões, a solicitação vai voltar para |
Esquema de saída
ComputeRoutesResponse.
ComputeRoutesResponse
| Representação JSON |
|---|
{
"routes": [
{
object ( |
| Campos | |
|---|---|
routes[] |
Contém rotas entre a origem e o destino solicitados, ordenadas da mais recomendada para a menos recomendada. Apenas um trajeto é retornado, a menos que |
Trajeto
| Representação JSON |
|---|
{
"distanceMeters": integer,
"duration": string,
"attribution": {
object ( |
| Campos | |
|---|---|
distanceMeters |
A distância do trajeto, em metros. |
duration |
O tempo necessário para percorrer o trajeto. Duração em segundos com até nove dígitos fracionários, terminando em " |
attribution |
Atribuição obrigatória para mostrar com o trajeto. |
encodedPolyline |
Uma polilinha codificada do trajeto. Consulte https://developers.google.com/maps/documentation/utilities/polylinealgorithm |
retrievalToken |
Um token que pode ser usado para recuperar esse trajeto específico em ferramentas downstream, como SearchAlongRoute. Válido por 10 minutos. |
Duração
| Representação JSON |
|---|
{ "seconds": string, "nanos": integer } |
| Campos | |
|---|---|
seconds |
Segundos assinados do período. Precisa ser de -315.576.000.000 a +315.576.000.000, inclusive. Observação: esses limites são calculados da seguinte forma: 60 s/min * 60 min/h * 24 h/dia * 365,25 dias/ano * 10.000 anos |
nanos |
Frações assinadas de um segundo com resolução de nanossegundos do período. As durações menores que um segundo são representadas com um campo |
Atribuição
| Representação JSON |
|---|
{ "title": string, "url": string } |
| Campos | |
|---|---|
title |
O título a ser exibido para a atribuição. |
url |
O URL para vincular à atribuição. |
Anotações de ferramentas
As anotações de ferramentas são enviadas aos clientes do MCP para descrever o risco básico de uma determinada ferramenta. A maioria dos clientes trata essas dicas como não confiáveis, mas elas podem ser usadas para decidir quando um pedido de confirmação pode ser enviado a um usuário.
Além da string de título, as seguintes dicas booleanas são definidas:
readOnlyHint: se for verdadeiro, a ferramenta não modifica o ambiente. (Padrão: falso).destructiveHint: se for verdadeiro, a ferramenta poderá realizar ações destrutivas. Se for falso, a ferramenta só poderá realizar ações aditivas. Padrão: verdadeiro.idempotentHint: se for verdadeiro, chamar a ferramenta repetidamente com os mesmos argumentos não terá efeito adicional no ambiente. (Padrão: falso).openWorldHint: se for verdadeiro, a ferramenta poderá interagir com um "mundo aberto" de entidades externas. Se for falso, a ferramenta só poderá interagir com entidades internas. Por exemplo, uma ferramenta de pesquisa na Web seria de mundo aberto, enquanto uma ferramenta de memória não seria.
Dica destrutiva: ❌ | Dica idempotente: ❌ | Dica somente leitura: ✅ | Dica de jogos de mundo aberto: ❌