MCP Tools Reference: mapstools.googleapis.com

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):

  1. origin e destination (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 chame search_places primeiro 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, de search_places.
  2. intermediate_waypoints (matriz de objetos, OPCIONAL): até 10 paradas para passar, em ordem, entre a origem e o destino. Mesmo formato de origin. Não compatível com TRANSIT. Inclua apenas as paradas que o usuário pediu.

  3. travel_mode (tipo enumerado - OPCIONAL): DRIVE (padrão), WALK, BICYCLE ou TRANSIT.

  4. 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". Para TRANSIT, 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").
  5. 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 para WALK ou BICYCLE. 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.
  6. 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 em address e defina location_bias para a área pretendida em vez de adivinhar uma região.

  7. compute_alternative_routes (booleano, OPCIONAL): defina como true somente quando o usuário pedir opções ou alternativas de trajeto. O padrão é false, que retorna apenas o trajeto recomendado.

  8. include_polyline (booleano - OPCIONAL): defina como true somente 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 origin e A como destination.

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 routes estiver 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 attribution de 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 (Waypoint)
  },
  "destination": {
    object (Waypoint)
  },
  "travelMode": enum (RouteTravelMode),
  "intermediateWaypoints": [
    {
      object (Waypoint)
    }
  ],
  "routingPreference": enum (RoutingPreference),
  "locationBias": {
    object (LatLng)
  },
  "includePolyline": boolean,
  "computeAlternativeRoutes": boolean,

  // Union field timing can be only one of the following:
  "departureTime": string,
  "arrivalTime": string
  // End of list of possible types for union field timing.
}
Campos
origin

object (Waypoint)

Obrigatório. Waypoint de origem.

destination

object (Waypoint)

Obrigatório. Waypoint de destino.

travelMode

enum (RouteTravelMode)

Opcional. Especifica o meio de transporte.

intermediateWaypoints[]

object (Waypoint)

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 travel_mode é TRANSIT.

routingPreference

enum (RoutingPreference)

Opcional. Determina como os dados de trânsito são usados para calcular o trajeto. ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL não é compatível quando travel_mode é WALK ou BICYCLE. Para TRANSIT, ele ativa dados de transporte público em tempo real, como atrasos e cancelamentos.

locationBias

object (LatLng)

Opcional. Um local para priorizar os resultados da pesquisa, por exemplo, para eliminar ambiguidades em consultas de texto de waypoints.

includePolyline

boolean

Opcional. Se a polilinha codificada deve ser incluída nas rotas de resposta. O valor padrão é false. Quando definido como true, Route.encoded_polyline é retornado.

computeAlternativeRoutes

boolean

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

string (Timestamp format)

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: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

arrivalTime

string (Timestamp format)

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: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

Carimbo de data/hora

Representação JSON
{
  "seconds": string,
  "nanos": integer
}
Campos
seconds

string (int64 format)

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

integer

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 location_type can be only one of the following:
  "latLng": {
    object (LatLng)
  },
  "placeId": string,
  "address": string
  // End of list of possible types for union field location_type.
}
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

object (LatLng)

Um ponto especificado usando coordenadas geográficas.

placeId

string

O ID de lugar associado ao waypoint.

address

string

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

number

A latitude em graus. Precisa estar no intervalo [-90,0, +90,0].

longitude

number

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 TRANSIT, usa dados de transporte público em tempo real, como atrasos e cancelamentos, quando disponíveis.

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 ROUTING_PREFERENCE_TRAFFIC_UNAWARE.

Esquema de saída

ComputeRoutesResponse.

ComputeRoutesResponse

Representação JSON
{
  "routes": [
    {
      object (Route)
    }
  ]
}
Campos
routes[]

object (Route)

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 ComputeRoutesRequest.compute_alternative_routes esteja definido como verdadeiro.

Trajeto

Representação JSON
{
  "distanceMeters": integer,
  "duration": string,
  "attribution": {
    object (Attribution)
  },
  "encodedPolyline": string,
  "retrievalToken": string
}
Campos
distanceMeters

integer

A distância do trajeto, em metros.

duration

string (Duration format)

O tempo necessário para percorrer o trajeto.

Duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

attribution

object (Attribution)

Atribuição obrigatória para mostrar com o trajeto.

encodedPolyline

string

Uma polilinha codificada do trajeto. Consulte https://developers.google.com/maps/documentation/utilities/polylinealgorithm

retrievalToken

string

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

string (int64 format)

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

integer

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 seconds de 0 e um campo nanos positivo ou negativo. Para durações de um segundo ou mais, um valor diferente de zero para o campo nanos precisa ter o mesmo sinal que o campo seconds. O valor precisa ser de -999.999.999 a +999.999.999.

Atribuição

Representação JSON
{
  "title": string,
  "url": string
}
Campos
title

string

O título a ser exibido para a atribuição.

url

string

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: ❌