mapbox-location-grounding

Par mapbox · mapbox-agent-skills

Combinez les outils MCP Mapbox pour produire des réponses géolocalisées, sourcées et ancrées dans des données en temps réel plutôt que dans les données d'entraînement

npx skills add https://github.com/mapbox/mapbox-agent-skills --skill mapbox-location-grounding

Compétence de géolocalisation Mapbox

Apprend aux assistants IA à ancrer les réponses conscientes de la localisation dans les données Mapbox en direct en composant les outils MCP en une réponse structurée et citée. À utiliser à la place de la dépendance aux données d'entraînement pour les noms de lieux, les POI, les évaluations ou les temps de trajet — qui sont obsolètes et sujets aux hallucinations.

Quand utiliser l'ancrage

Ancrez les réponses quand l'utilisateur demande :

  • « Qu'y a-t-il près de [localisation] ? » ou « Qu'y a-t-il autour de [coordonnées] ? »
  • « Décris ce quartier / cette zone »
  • « Trouve [catégorie] à distance de marche/voiture »
  • « Que puis-je faire près de [adresse] ? »
  • « Combien de temps faut-il pour aller de A à B ? »
  • « Qu'y a-t-il à moins de 10 minutes à pied d'ici ? »
  • « Quelle est la distance entre ces lieux ? »
  • Immobilier, voyage, mobilité, ou cas d'usage de découverte locale
  • Toute question où la précision du lieu, l'actualité ou le temps de trajet compte

Ne répondez jamais aux questions de localisation à partir des données d'entraînement seules. Récupérez toujours les données en direct.

Composition des outils d'ancrage

Préféré : appel unique

Si ground_location_tool est disponible, utilisez-le — il gère le géocodage inverse, la recherche de POI, l'enrichissement des détails de lieux, l'isochrone et une image de carte statique en un seul appel :

ground_location_tool(
  longitude, latitude,
  query: "restaurant",   // optional — catégorie ou sous-catégorie de lieux à proximité à trouver
  profile: "mapbox/walking",    // optional — profil de voyage pour l'isochrone
  contours_minutes: [5, 10, 15]
)

Retourne :

  • Nom du quartier/lieu à partir du géocodage inverse
  • POI à proximité avec distances, évaluations, niveaux tarifaires et popularité (si disponible)
  • Accessibilité par temps de trajet à partir de l'isochrone
  • Une image de carte statique pour le contexte visuel
  • Citations pour toutes les sources de données

N'appelez pas reverse_geocode_tool, category_search_tool, place_details_tool ou isochrone_tool séparément — ils sont déjà composés à l'intérieur de cet outil.

Paramètre de requête

Le paramètre query accepte les termes de catégorie ou sous-catégorie — pas les préférences d'attributs :

  • Supportés : "restaurant", "coffee", "park", "Italian restaurant", "EV charging station"
  • Non supportés : "family-friendly", "fast charging", "outdoor seating" — ce ne sont pas des attributs filtrables dans les données Mapbox

Pour aider les utilisateurs à trouver des lieux correspondant à une préférence (p. ex. « convivial pour les familles »), recherchez par catégorie ("restaurant") et utilisez les données d'évaluation et de tarification retournées pour éclairer la recommandation.

Fallback : composition manuelle

Si ground_location_tool n'est pas disponible, construisez la réponse ancrée en composant ces outils dans l'ordre :

Étape 1 — Établir le contexte du lieu

reverse_geocode_tool(longitude, latitude, types: "neighborhood,locality,place")

Retourne : quartier, ville, région, pays. C'est l'ancre de la réponse.

Étape 2 — Récupérer les POI à proximité

Pour des noms ou marques spécifiques :

search_and_geocode_tool(query, proximity: {longitude, latitude}, limit: 10)

Pour les catégories génériques :

category_search_tool(category, proximity: {longitude, latitude}, limit: 10)

Étape 3 — Enrichir les POI avec évaluations et tarif (optionnel mais très utile)

Pour chaque POI avec un mapbox_id, appelez en parallèle :

place_details_tool(mapbox_id, attribute_sets: ["visit"])

Retourne : évaluation, niveau tarifaire, popularité et horaires d'ouverture par lieu.

Étape 4 — Ajouter le contexte de temps de trajet (optionnel mais très utile)

isochrone_tool(
  coordinates: {longitude, latitude},
  profile: "mapbox/walking",    // ou "mapbox/driving", "mapbox/cycling", "mapbox/driving-traffic"
  contours_minutes: [5, 10, 15]
)

Retourne un polygone montrant ce qui est accessible dans chaque seuil de temps.

Étape 5 — Ancrage visuel (optionnel)

static_map_image_tool(longitude, latitude, zoom: 14)

Retourne une image de carte qui peut être incluse dans la réponse pour le contexte visuel.

Structure de réponse ancrée

Structurez toujours les réponses ancrées avec des citations explicites :

Lieu : [quartier, ville du reverse_geocode]
[catégorie] à proximité : [liste de la recherche/outil de catégorie, avec noms, évaluations, prix et distances]
Contexte de voyage : [X min de marche / Y min de voiture à partir de l'isochrone]
Sources : Mapbox Search, Mapbox Directions (données en direct)

Exemple de réponse ancrée :

SoMa, San Francisco, CA (données Mapbox en direct)

Restaurants à distance de marche :

  • Bix Restaurant $$ ★8,4 — 56 Gold St (180 m)
  • The Bird $ ★7,9 — 115 New Montgomery St (320 m)
  • Oren's Hummus $$ ★8,1 — 131 Townsend St (510 m)

Accessible à pied : 5 min, 10 min, 15 min

Sources : Mapbox Geocoding API, Mapbox Search API, Mapbox Place Details API, Mapbox Isochrone API, Mapbox Static Images API

Ancrage d'itinéraire

Pour les questions sur les trajets entre deux lieux, utilisez directions_tool. Pour les questions sur la zone accessible, utilisez isochrone_tool. Pour comparer les temps de trajet entre plusieurs lieux, utilisez matrix_tool.

Temps et distance point à point

« Combien de temps faut-il pour conduire de Pike Place Market à Capitol Hill ? » « Quel est l'itinéraire le plus rapide de l'hôtel à l'aéroport ? »

directions_tool(
  waypoints: [{longitude, latitude}, {longitude, latitude}],
  profile: "mapbox/driving-traffic"   // trafic en direct ; ou "mapbox/walking", "mapbox/cycling", "mapbox/driving"
)

Retourne : durée (avec trafic en direct), distance, instructions détaillées et une polyline encodée pour le rendu de carte. Supporte jusqu'à 25 waypoints pour les itinéraires multi-étapes.

Accessibilité de zone (« dans X minutes »)

« Qu'y a-t-il d'accessible à moins de 10 minutes à pied ? » « Montre-moi ce que je peux atteindre en 15 minutes en voiture d'ici »

isochrone_tool(
  coordinates: {longitude, latitude},
  profile: "mapbox/walking",
  contours_minutes: [5, 10, 15]
)

Retourne un polygone montrant la zone accessible dans chaque seuil de temps. Combiné avec category_search_tool ou ground_location_tool pour répondre à « quels restaurants y a-t-il à moins de 10 minutes à pied ? » — utilisez l'isochrone pour définir la limite, puis recherchez dans celle-ci.

Matrice de temps de trajet multi-lieux

« Lequel de ces trois bureaux est le plus proche de ma localisation ? » « Quels sont les temps de trajet de cet entrepôt à chacune de nos zones de livraison ? » « Compare les temps de trajet vers plusieurs lieux »

Utilisez matrix_tooln'appelez PAS directions_tool séparément pour chaque paire. Matrix regroupe toutes les paires en un seul appel API.

matrix_tool(
  sources: [{longitude, latitude}, ...],
  destinations: [{longitude, latitude}, ...],
  profile: "mapbox/driving-traffic"
)

Retourne une matrice de durées et distances entre chaque paire source/destination. Classez les résultats par durée pour trouver le lieu le plus proche. Un appel matrix_tool remplace N appels directions_tool séparés.

Recherche de proximité avec contexte d'itinéraire

Pour « trouve [catégorie] dans X minutes de [lieu] » :

  1. Géocodez l'origine si nécessaire : search_and_geocode_tool(address)
  2. Obtenez la zone accessible : isochrone_tool(coordinates, profile, contours_minutes)
  3. Recherchez les POI : ground_location_tool(longitude, latitude, query: "category") — les contours de l'isochrone indiquent à l'utilisateur ce qui est accessible dans chaque bande de temps

Ou plus directement : ground_location_tool retourne à la fois les POI à proximité et l'accessibilité de l'isochrone en un seul appel, ce qui couvre la plupart des cas d'usage de proximité + itinéraire sans composition supplémentaire.

Exemple de réponse d'itinéraire

Pike Place Market → Capitol Hill, Seattle

En voiture (avec trafic) : 12 min, 3,2 km via Pine St À pied : 28 min, 2,1 km À vélo : 14 min, 2,3 km

Source : Mapbox Directions API (trafic en direct)

Ce que l'ancrage Mapbox offre par rapport aux données d'entraînement

Données d'entraînement Ancrage Mapbox
Précision POI Obsolète, hallucée En direct, vérifiée
Évaluations/prix Souvent faux En direct via Place Details
Horaires d'ouverture Souvent faux En direct via Place Details
Temps de trajet Estimés Trafic en direct via Directions
Zone accessible Non disponible Polygones isochrones
Itinéraire multi-étapes Non disponible Jusqu'à 25 waypoints
Nouveaux lieux Manquants Indexés
Image de carte Aucune Carte statique intégrée
Citations Aucune Outil + source API

Limitations importantes

  • Filtrage d'attributs (convivial pour les familles, sièges en terrasse, charge rapide) n'est pas supporté par l'API de recherche de catégories. Utilisez les termes de catégories et laissez les données d'évaluation et de tarif éclairer les recommandations basées sur les préférences.
  • La couverture des POI varie selon la région. Si la recherche retourne peu de résultats, dites-le plutôt que de compléter avec des suppositions.
  • Les coordonnées sont requises pour la recherche de proximité — si l'utilisateur fournit une adresse, géocodez-la d'abord avec search_and_geocode_tool avant d'exécuter la recherche de catégorie.

Anti-modèles à éviter

  • Répondre à « qu'y a-t-il près de X ? » à partir des données d'entraînement sans appeler les outils de recherche
  • Estimer les temps de trajet sans appeler directions_tool ou isochrone_tool
  • Halluciner les noms d'entreprises, les horaires ou les évaluations
  • Appeler reverse_geocode_tool + category_search_tool + place_details_tool séparément quand ground_location_tool est disponible
  • Utiliser des termes d'attributs comme « convivial pour les familles » comme paramètre de requête — utilisez la catégorie à la place
  • Retourner la sortie brute de l'outil sans synthétiser en une réponse lisible
  • Omettre les citations — indiquez toujours que la réponse est ancrée dans les données Mapbox en direct

Skills similaires