Sail
Search places, compare ride-hailing options, and plan trotro minibus journeys.
사용해야 할까요
품질 및 안전성
발견 사항 (2)
- LOWcompare_rides에서
- LOWplan_trotro_route에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"sail": {
"url": "https://sailrides.co/mcp"
}
}
}원격 엔드포인트
https://sailrides.co/mcpstreamable-http할 수 있는 일
도구 목록
도구 (5)
🟢search_places(query, near, radiusMeters, countryCode)
Search for pickup or destination places. Use resolve_place on the selected result before planning a trip.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Place name or address"
},
"near": {
"description": "Coordinates used to bias nearby results",
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
}
},
"required": [
"lat",
"lng"
]
},
"radiusMeters": {
"type": "integer",
"minimum": 1000,
"maximum": 50000
},
"countryCode": {
"default": "gh",
"type": "string",
"pattern": "^[a-zA-Z]{2}$"
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"places": {
"type": "array",
"items": {
"type": "object",
"properties": {
"placeId": {
"type": "string"
},
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"label": {
"type": "string"
},
"routeNames": {
"type": "array",
"items": {
"type": "string"
}
},
"routeNameCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"complete": {
"type": "boolean"
},
"location": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
}
},
"required": [
"lat",
"lng"
],
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"complete": {
"type": "boolean"
},
"placeCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
}
},
"required": [
"places",
"complete",
"placeCounts"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢resolve_place(placeId)
Resolve a place ID from search_places to an exact name, address, and coordinates.
입력 스키마
{
"type": "object",
"properties": {
"placeId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Place ID returned by search_places"
}
},
"required": [
"placeId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"place": {
"anyOf": [
{
"type": "object",
"properties": {
"placeId": {
"type": "string"
},
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"place"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢plan_trip(pickup, destination)
Compare ride-hailing and trotro options together. This is the default tool for multimodal trip planning.
입력 스키마
{
"type": "object",
"properties": {
"pickup": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
},
"placeId": {
"description": "Place ID returned by search_places",
"type": "string",
"minLength": 1,
"maxLength": 256
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"address": {
"type": "string",
"minLength": 1,
"maxLength": 300
}
},
"required": [
"lat",
"lng"
],
"description": "Resolved pickup place"
},
"destination": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
},
"placeId": {
"description": "Place ID returned by search_places",
"type": "string",
"minLength": 1,
"maxLength": 256
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"address": {
"type": "string",
"minLength": 1,
"maxLength": 300
}
},
"required": [
"lat",
"lng"
],
"description": "Resolved destination place"
}
},
"required": [
"pickup",
"destination"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"complete",
"partial",
"failed"
]
},
"rides": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"complete",
"partial"
]
},
"data": {
"type": "object",
"properties": {
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"provider": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"vehicleType": {
"type": "string"
},
"price": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"originalAmount": {
"type": "number"
}
},
"additionalProperties": false
},
"etaMinutes": {
"type": "number"
},
"available": {
"type": "boolean"
}
},
"required": [
"price",
"available"
],
"additionalProperties": false
}
},
"optionCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"complete": {
"type": "boolean"
}
},
"required": [
"options",
"optionCounts",
"complete"
],
"additionalProperties": false
}
},
"required": [
"status",
"data"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "failed"
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"cancelled",
"timeout",
"unavailable"
]
},
"message": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"status",
"error"
],
"additionalProperties": false
}
]
},
"trotro": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"complete",
"partial"
]
},
"data": {
"type": "object",
"properties": {
"routes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"totalFare": {
"type": "number"
},
"currency": {
"type": "string"
},
"transferCount": {
"type": "number"
},
"walkingDistanceToPickupKm": {
"type": "number"
},
"walkingDistanceFromDestinationKm": {
"type": "number"
},
"originStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"destinationStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"segments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"routeName": {
"type": "string"
},
"routeDestination": {
"type": "string"
},
"boardAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"alightAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"fare": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"boardAt",
"alightAt"
],
"additionalProperties": false
}
},
"segmentCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"walkingUncertaintyNote": {
"type": "string"
},
"complete": {
"type": "boolean"
}
},
"required": [
"originStop",
"destinationStop",
"segments",
"segmentCounts",
"complete"
],
"additionalProperties": false
}
},
"routesRequiringRideConnection": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"totalFare": {
"type": "number"
},
"currency": {
"type": "string"
},
"transferCount": {
"type": "number"
},
"walkingDistanceToPickupKm": {
"type": "number"
},
"walkingDistanceFromDestinationKm": {
"type": "number"
},
"originStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"destinationStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"segments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"routeName": {
"type": "string"
},
"routeDestination": {
"type": "string"
},
"boardAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"alightAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"fare": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"boardAt",
"alightAt"
],
"additionalProperties": false
}
},
"segmentCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"walkingUncertaintyNote": {
"type": "string"
},
"complete": {
"type": "boolean"
}
},
"required": [
"originStop",
"destinationStop",
"segments",
"segmentCounts",
"complete"
],
"additionalProperties": false
}
},
"routeCounts": {
"type": "object",
"properties": {
"direct": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"rideConnection": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
}
},
"required": [
"direct",
"rideConnection"
],
"additionalProperties": false
},
"skipNote": {
"type": "string"
},
"complete": {
"type": "boolean"
}
},
"required": [
"routes",
"routesRequiringRideConnection",
"routeCounts",
"complete"
],
"additionalProperties": false
}
},
"required": [
"status",
"data"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "failed"
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"cancelled",
"timeout",
"unavailable"
]
},
"message": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"status",
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"status",
"rides",
"trotro"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢compare_rides(pickup, destination)
Compare current ride-hailing prices and pickup times from the providers available through Sail.
입력 스키마
{
"type": "object",
"properties": {
"pickup": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
},
"placeId": {
"description": "Place ID returned by search_places",
"type": "string",
"minLength": 1,
"maxLength": 256
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"address": {
"type": "string",
"minLength": 1,
"maxLength": 300
}
},
"required": [
"lat",
"lng"
],
"description": "Resolved pickup place"
},
"destination": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
},
"placeId": {
"description": "Place ID returned by search_places",
"type": "string",
"minLength": 1,
"maxLength": 256
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"address": {
"type": "string",
"minLength": 1,
"maxLength": 300
}
},
"required": [
"lat",
"lng"
],
"description": "Resolved destination place"
}
},
"required": [
"pickup",
"destination"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"provider": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"vehicleType": {
"type": "string"
},
"price": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
},
"originalAmount": {
"type": "number"
}
},
"additionalProperties": false
},
"etaMinutes": {
"type": "number"
},
"available": {
"type": "boolean"
}
},
"required": [
"price",
"available"
],
"additionalProperties": false
}
},
"optionCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"complete": {
"type": "boolean"
}
},
"required": [
"options",
"optionCounts",
"complete"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢plan_trotro_route(pickup, destination)
Plan public transport journeys by trotro, including fares, walking legs, transfers, and boarding instructions.
입력 스키마
{
"type": "object",
"properties": {
"pickup": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
}
},
"required": [
"lat",
"lng"
],
"description": "Pickup coordinates"
},
"destination": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
}
},
"required": [
"lat",
"lng"
],
"description": "Destination coordinates"
}
},
"required": [
"pickup",
"destination"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"routes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"totalFare": {
"type": "number"
},
"currency": {
"type": "string"
},
"durationRangeMinutes": {
"type": "object",
"properties": {
"min": {
"type": "number"
},
"max": {
"type": "number"
}
},
"additionalProperties": false
},
"isContinuation": {
"type": "boolean"
},
"hasThroughFare": {
"type": "boolean"
},
"originStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"destinationStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"walkingDistanceToPickupKm": {
"type": "number"
},
"walkingDistanceFromDestinationKm": {
"type": "number"
},
"segments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"routeName": {
"type": "string"
},
"routeDestination": {
"type": "string"
},
"boardAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"alightAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"fare": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"boardAt",
"alightAt"
],
"additionalProperties": false
}
},
"segmentCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"steps": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "walk"
},
"instruction": {
"type": "string"
},
"distanceMeters": {
"type": "number"
},
"durationMinutes": {
"type": "number"
},
"toStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"roadCrossings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
}
},
"required": [
"lat",
"lng"
],
"additionalProperties": false
},
"distanceFromStartMeters": {
"type": "number",
"minimum": 0
},
"evidence": {
"type": "string",
"enum": [
"mapped-crossing",
"short-road-traversal"
]
},
"confidence": {
"type": "string",
"const": "high"
}
},
"required": [
"location",
"distanceFromStartMeters",
"evidence",
"confidence"
],
"additionalProperties": false
}
},
"roadCrossingsTotal": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"roadCrossingsTruncated": {
"type": "boolean"
},
"unverifiedEndpointMeters": {
"type": "number",
"minimum": 0
}
},
"required": [
"type",
"toStop"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "ride"
},
"instruction": {
"type": "string"
},
"route": {
"type": "string"
},
"toward": {
"type": "string"
},
"boardAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"boardingRoadCrossing": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "required"
},
"confidence": {
"type": "string",
"const": "high"
}
},
"required": [
"status",
"confidence"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "unknown"
}
},
"required": [
"status"
],
"additionalProperties": false
}
]
},
"alightAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"alightingRoadCrossing": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "required"
},
"confidence": {
"type": "string",
"const": "high"
}
},
"required": [
"status",
"confidence"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "unknown"
}
},
"required": [
"status"
],
"additionalProperties": false
}
]
},
"stopCount": {
"type": "number"
},
"fare": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"type",
"boardAt",
"alightAt"
],
"additionalProperties": false
}
]
}
},
"stepCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"warnings": {
"type": "object",
"properties": {
"longWalkToPickup": {
"type": "boolean"
},
"longWalkFromDestination": {
"type": "boolean"
},
"totalWalkingLimitExceeded": {
"type": "boolean"
}
},
"required": [
"longWalkToPickup",
"longWalkFromDestination",
"totalWalkingLimitExceeded"
],
"additionalProperties": false
},
"complete": {
"type": "boolean"
}
},
"required": [
"durationRangeMinutes",
"isContinuation",
"hasThroughFare",
"originStop",
"destinationStop",
"segments",
"segmentCounts",
"steps",
"stepCounts",
"warnings",
"complete"
],
"additionalProperties": false
}
},
"routesRequiringRideConnection": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"totalFare": {
"type": "number"
},
"currency": {
"type": "string"
},
"durationRangeMinutes": {
"type": "object",
"properties": {
"min": {
"type": "number"
},
"max": {
"type": "number"
}
},
"additionalProperties": false
},
"isContinuation": {
"type": "boolean"
},
"hasThroughFare": {
"type": "boolean"
},
"originStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"destinationStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"walkingDistanceToPickupKm": {
"type": "number"
},
"walkingDistanceFromDestinationKm": {
"type": "number"
},
"segments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"routeName": {
"type": "string"
},
"routeDestination": {
"type": "string"
},
"boardAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"alightAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"fare": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"boardAt",
"alightAt"
],
"additionalProperties": false
}
},
"segmentCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"steps": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "walk"
},
"instruction": {
"type": "string"
},
"distanceMeters": {
"type": "number"
},
"durationMinutes": {
"type": "number"
},
"toStop": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"roadCrossings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in decimal degrees"
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in decimal degrees"
}
},
"required": [
"lat",
"lng"
],
"additionalProperties": false
},
"distanceFromStartMeters": {
"type": "number",
"minimum": 0
},
"evidence": {
"type": "string",
"enum": [
"mapped-crossing",
"short-road-traversal"
]
},
"confidence": {
"type": "string",
"const": "high"
}
},
"required": [
"location",
"distanceFromStartMeters",
"evidence",
"confidence"
],
"additionalProperties": false
}
},
"roadCrossingsTotal": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"roadCrossingsTruncated": {
"type": "boolean"
},
"unverifiedEndpointMeters": {
"type": "number",
"minimum": 0
}
},
"required": [
"type",
"toStop"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "ride"
},
"instruction": {
"type": "string"
},
"route": {
"type": "string"
},
"toward": {
"type": "string"
},
"boardAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"boardingRoadCrossing": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "required"
},
"confidence": {
"type": "string",
"const": "high"
}
},
"required": [
"status",
"confidence"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "unknown"
}
},
"required": [
"status"
],
"additionalProperties": false
}
]
},
"alightAt": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"alightingRoadCrossing": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "required"
},
"confidence": {
"type": "string",
"const": "high"
}
},
"required": [
"status",
"confidence"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "unknown"
}
},
"required": [
"status"
],
"additionalProperties": false
}
]
},
"stopCount": {
"type": "number"
},
"fare": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"type",
"boardAt",
"alightAt"
],
"additionalProperties": false
}
]
}
},
"stepCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"warnings": {
"type": "object",
"properties": {
"longWalkToPickup": {
"type": "boolean"
},
"longWalkFromDestination": {
"type": "boolean"
},
"totalWalkingLimitExceeded": {
"type": "boolean"
}
},
"required": [
"longWalkToPickup",
"longWalkFromDestination",
"totalWalkingLimitExceeded"
],
"additionalProperties": false
},
"complete": {
"type": "boolean"
}
},
"required": [
"durationRangeMinutes",
"isContinuation",
"hasThroughFare",
"originStop",
"destinationStop",
"segments",
"segmentCounts",
"steps",
"stepCounts",
"warnings",
"complete"
],
"additionalProperties": false
}
},
"routeCounts": {
"type": "object",
"properties": {
"direct": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
},
"rideConnection": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"returned": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
}
},
"required": [
"total",
"returned",
"truncated"
],
"additionalProperties": false
}
},
"required": [
"direct",
"rideConnection"
],
"additionalProperties": false
},
"skipNote": {
"type": "string"
},
"complete": {
"type": "boolean"
}
},
"required": [
"routes",
"routesRequiringRideConnection",
"routeCounts",
"complete"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}커뮤니티
증거