Serveur MCP

Sail

co.sailrides/sail
Cartes et localisation Voyage et hôtellerie Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Searches places and compares ride-hailing and trotro options while planning multimodal journeys.

compare_rides
Compare rides
Compare current ride-hailing prices and pickup times from the providers available through Sail.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pickup', 'destination'], 'properties': {'pickup': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'address': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'placeId': {'type': 'string', 'maxLength': 256, 'minLength': 1, 'description': 'Place ID returned by search_places'}}, 'description': 'Resolved pickup place'}, 'destination': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'address': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'placeId': {'type': 'string', 'maxLength': 256, 'minLength': 1, 'description': 'Place ID returned by search_places'}}, 'description': 'Resolved destination place'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['options', 'optionCounts', 'complete'], 'properties': {'options': {'type': 'array', 'items': {'type': 'object', 'required': ['price', 'available'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'price': {'type': 'object', 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string'}, 'originalAmount': {'type': 'number'}}, 'additionalProperties': False}, 'provider': {'type': 'string'}, 'available': {'type': 'boolean'}, 'etaMinutes': {'type': 'number'}, 'vehicleType': {'type': 'string'}}, 'additionalProperties': False}}, 'complete': {'type': 'boolean'}, 'optionCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}
plan_trip
Plan a trip
Compare ride-hailing and trotro options together. This is the default tool for multimodal trip planning.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pickup', 'destination'], 'properties': {'pickup': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'address': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'placeId': {'type': 'string', 'maxLength': 256, 'minLength': 1, 'description': 'Place ID returned by search_places'}}, 'description': 'Resolved pickup place'}, 'destination': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'address': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'placeId': {'type': 'string', 'maxLength': 256, 'minLength': 1, 'description': 'Place ID returned by search_places'}}, 'description': 'Resolved destination place'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'rides', 'trotro'], 'properties': {'rides': {'anyOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'required': ['options', 'optionCounts', 'complete'], 'properties': {'options': {'type': 'array', 'items': {'type': 'object', 'required': ['price', 'available'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'price': {'type': 'object', 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string'}, 'originalAmount': {'type': 'number'}}, 'additionalProperties': False}, 'provider': {'type': 'string'}, 'available': {'type': 'boolean'}, 'etaMinutes': {'type': 'number'}, 'vehicleType': {'type': 'string'}}, 'additionalProperties': False}}, 'complete': {'type': 'boolean'}, 'optionCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'status': {'enum': ['complete', 'partial'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'enum': ['cancelled', 'timeout', 'unavailable'], 'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'failed'}}, 'additionalProperties': False}]}, 'status': {'enum': ['complete', 'partial', 'failed'], 'type': 'string'}, 'trotro': {'anyOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'required': ['routes', 'routesRequiringRideConnection', 'routeCounts', 'complete'], 'properties': {'routes': {'type': 'array', 'items': {'type': 'object', 'required': ['originStop', 'destinationStop', 'segments', 'segmentCounts', 'complete'], 'properties': {'id': {'type': 'string'}, 'complete': {'type': 'boolean'}, 'currency': {'type': 'string'}, 'segments': {'type': 'array', 'items': {'type': 'object', 'required': ['boardAt', 'alightAt'], 'properties': {'fare': {'type': 'number'}, 'boardAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'alightAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'currency': {'type': 'string'}, 'routeName': {'type': 'string'}, 'routeDestination': {'type': 'string'}}, 'additionalProperties': False}}, 'totalFare': {'type': 'number'}, 'originStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'segmentCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'transferCount': {'type': 'number'}, 'destinationStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'walkingUncertaintyNote': {'type': 'string'}, 'walkingDistanceToPickupKm': {'type': 'number'}, 'walkingDistanceFromDestinationKm': {'type': 'number'}}, 'additionalProperties': False}}, 'complete': {'type': 'boolean'}, 'skipNote': {'type': 'string'}, 'routeCounts': {'type': 'object', 'required': ['direct', 'rideConnection'], 'properties': {'direct': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'rideConnection': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'routesRequiringRideConnection': {'type': 'array', 'items': {'type': 'object', 'required': ['originStop', 'destinationStop', 'segments', 'segmentCounts', 'complete'], 'properties': {'id': {'type': 'string'}, 'complete': {'type': 'boolean'}, 'currency': {'type': 'string'}, 'segments': {'type': 'array', 'items': {'type': 'object', 'required': ['boardAt', 'alightAt'], 'properties': {'fare': {'type': 'number'}, 'boardAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'alightAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'currency': {'type': 'string'}, 'routeName': {'type': 'string'}, 'routeDestination': {'type': 'string'}}, 'additionalProperties': False}}, 'totalFare': {'type': 'number'}, 'originStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'segmentCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'transferCount': {'type': 'number'}, 'destinationStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'walkingUncertaintyNote': {'type': 'string'}, 'walkingDistanceToPickupKm': {'type': 'number'}, 'walkingDistanceFromDestinationKm': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'status': {'enum': ['complete', 'partial'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'enum': ['cancelled', 'timeout', 'unavailable'], 'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'failed'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
plan_trotro_route
Plan a trotro route
Plan public transport journeys by trotro, including fares, walking legs, transfers, and boarding instructions.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pickup', 'destination'], 'properties': {'pickup': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}}, 'description': 'Pickup coordinates'}, 'destination': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}}, 'description': 'Destination coordinates'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['routes', 'routesRequiringRideConnection', 'routeCounts', 'complete'], 'properties': {'routes': {'type': 'array', 'items': {'type': 'object', 'required': ['durationRangeMinutes', 'isContinuation', 'hasThroughFare', 'originStop', 'destinationStop', 'segments', 'segmentCounts', 'steps', 'stepCounts', 'warnings', 'complete'], 'properties': {'id': {'type': 'string'}, 'steps': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['type', 'toStop'], 'properties': {'type': {'type': 'string', 'const': 'walk'}, 'toStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'instruction': {'type': 'string'}, 'roadCrossings': {'type': 'array', 'items': {'type': 'object', 'required': ['location', 'distanceFromStartMeters', 'evidence', 'confidence'], 'properties': {'evidence': {'enum': ['mapped-crossing', 'short-road-traversal'], 'type': 'string'}, 'location': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}}, 'additionalProperties': False}, 'confidence': {'type': 'string', 'const': 'high'}, 'distanceFromStartMeters': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}}, 'distanceMeters': {'type': 'number'}, 'durationMinutes': {'type': 'number'}, 'roadCrossingsTotal': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'roadCrossingsTruncated': {'type': 'boolean'}, 'unverifiedEndpointMeters': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'boardAt', 'alightAt'], 'properties': {'fare': {'type': 'number'}, 'type': {'type': 'string', 'const': 'ride'}, 'route': {'type': 'string'}, 'toward': {'type': 'string'}, 'boardAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'alightAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'currency': {'type': 'string'}, 'stopCount': {'type': 'number'}, 'instruction': {'type': 'string'}, 'boardingRoadCrossing': {'anyOf': [{'type': 'object', 'required': ['status', 'confidence'], 'properties': {'status': {'type': 'string', 'const': 'required'}, 'confidence': {'type': 'string', 'const': 'high'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'unknown'}}, 'additionalProperties': False}]}, 'alightingRoadCrossing': {'anyOf': [{'type': 'object', 'required': ['status', 'confidence'], 'properties': {'status': {'type': 'string', 'const': 'required'}, 'confidence': {'type': 'string', 'const': 'high'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'unknown'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}]}}, 'complete': {'type': 'boolean'}, 'currency': {'type': 'string'}, 'segments': {'type': 'array', 'items': {'type': 'object', 'required': ['boardAt', 'alightAt'], 'properties': {'fare': {'type': 'number'}, 'boardAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'alightAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'currency': {'type': 'string'}, 'routeName': {'type': 'string'}, 'routeDestination': {'type': 'string'}}, 'additionalProperties': False}}, 'warnings': {'type': 'object', 'required': ['longWalkToPickup', 'longWalkFromDestination', 'totalWalkingLimitExceeded'], 'properties': {'longWalkToPickup': {'type': 'boolean'}, 'longWalkFromDestination': {'type': 'boolean'}, 'totalWalkingLimitExceeded': {'type': 'boolean'}}, 'additionalProperties': False}, 'totalFare': {'type': 'number'}, 'originStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'stepCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'segmentCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'hasThroughFare': {'type': 'boolean'}, 'isContinuation': {'type': 'boolean'}, 'destinationStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'durationRangeMinutes': {'type': 'object', 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}}, 'additionalProperties': False}, 'walkingDistanceToPickupKm': {'type': 'number'}, 'walkingDistanceFromDestinationKm': {'type': 'number'}}, 'additionalProperties': False}}, 'complete': {'type': 'boolean'}, 'skipNote': {'type': 'string'}, 'routeCounts': {'type': 'object', 'required': ['direct', 'rideConnection'], 'properties': {'direct': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'rideConnection': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'routesRequiringRideConnection': {'type': 'array', 'items': {'type': 'object', 'required': ['durationRangeMinutes', 'isContinuation', 'hasThroughFare', 'originStop', 'destinationStop', 'segments', 'segmentCounts', 'steps', 'stepCounts', 'warnings', 'complete'], 'properties': {'id': {'type': 'string'}, 'steps': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['type', 'toStop'], 'properties': {'type': {'type': 'string', 'const': 'walk'}, 'toStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'instruction': {'type': 'string'}, 'roadCrossings': {'type': 'array', 'items': {'type': 'object', 'required': ['location', 'distanceFromStartMeters', 'evidence', 'confidence'], 'properties': {'evidence': {'enum': ['mapped-crossing', 'short-road-traversal'], 'type': 'string'}, 'location': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}}, 'additionalProperties': False}, 'confidence': {'type': 'string', 'const': 'high'}, 'distanceFromStartMeters': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}}, 'distanceMeters': {'type': 'number'}, 'durationMinutes': {'type': 'number'}, 'roadCrossingsTotal': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'roadCrossingsTruncated': {'type': 'boolean'}, 'unverifiedEndpointMeters': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'boardAt', 'alightAt'], 'properties': {'fare': {'type': 'number'}, 'type': {'type': 'string', 'const': 'ride'}, 'route': {'type': 'string'}, 'toward': {'type': 'string'}, 'boardAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'alightAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'currency': {'type': 'string'}, 'stopCount': {'type': 'number'}, 'instruction': {'type': 'string'}, 'boardingRoadCrossing': {'anyOf': [{'type': 'object', 'required': ['status', 'confidence'], 'properties': {'status': {'type': 'string', 'const': 'required'}, 'confidence': {'type': 'string', 'const': 'high'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'unknown'}}, 'additionalProperties': False}]}, 'alightingRoadCrossing': {'anyOf': [{'type': 'object', 'required': ['status', 'confidence'], 'properties': {'status': {'type': 'string', 'const': 'required'}, 'confidence': {'type': 'string', 'const': 'high'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'unknown'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}]}}, 'complete': {'type': 'boolean'}, 'currency': {'type': 'string'}, 'segments': {'type': 'array', 'items': {'type': 'object', 'required': ['boardAt', 'alightAt'], 'properties': {'fare': {'type': 'number'}, 'boardAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'alightAt': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'currency': {'type': 'string'}, 'routeName': {'type': 'string'}, 'routeDestination': {'type': 'string'}}, 'additionalProperties': False}}, 'warnings': {'type': 'object', 'required': ['longWalkToPickup', 'longWalkFromDestination', 'totalWalkingLimitExceeded'], 'properties': {'longWalkToPickup': {'type': 'boolean'}, 'longWalkFromDestination': {'type': 'boolean'}, 'totalWalkingLimitExceeded': {'type': 'boolean'}}, 'additionalProperties': False}, 'totalFare': {'type': 'number'}, 'originStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'stepCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'segmentCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'hasThroughFare': {'type': 'boolean'}, 'isContinuation': {'type': 'boolean'}, 'destinationStop': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'durationRangeMinutes': {'type': 'object', 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}}, 'additionalProperties': False}, 'walkingDistanceToPickupKm': {'type': 'number'}, 'walkingDistanceFromDestinationKm': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
resolve_place
Resolve place
Resolve a place ID from search_places to an exact name, address, and coordinates.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['placeId'], 'properties': {'placeId': {'type': 'string', 'maxLength': 256, 'minLength': 1, 'description': 'Place ID returned by search_places'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['place'], 'properties': {'place': {'anyOf': [{'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'name': {'type': 'string'}, 'address': {'type': 'string'}, 'placeId': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}
search_places
Search places
Search for pickup or destination places. Use resolve_place on the selected result before planning a trip.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'near': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}}, 'description': 'Coordinates used to bias nearby results'}, 'query': {'type': 'string', 'maxLength': 120, 'minLength': 2, 'description': 'Place name or address'}, 'countryCode': {'type': 'string', 'default': 'gh', 'pattern': '^[a-zA-Z]{2}$'}, 'radiusMeters': {'type': 'integer', 'maximum': 50000, 'minimum': 1000}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['places', 'complete', 'placeCounts'], 'properties': {'places': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'label': {'type': 'string'}, 'address': {'type': 'string'}, 'placeId': {'type': 'string'}, 'complete': {'type': 'boolean'}, 'location': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}}, 'additionalProperties': False}, 'routeNames': {'type': 'array', 'items': {'type': 'string'}}, 'routeNameCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'complete': {'type': 'boolean'}, 'placeCounts': {'type': 'object', 'required': ['total', 'returned', 'truncated'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Modifié
plan_trotro_route
23 September 2026 02:41
Modifié
plan_trip
23 September 2026 02:41
Ajouté
plan_trotro_route
17 September 2026 12:38
Ajouté
compare_rides
17 September 2026 12:38
Ajouté
plan_trip
17 September 2026 12:38
Ajouté
resolve_place
17 September 2026 12:38
Ajouté
search_places
17 September 2026 12:38