Sail

Search places, compare ride-hailing options, and plan trotro minibus journeys.

사용해야 할까요

품질 및 안전성

A
설명 품질
80%
스키마 완전성
98%
이름 품질
84%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • LOWTool 'compare_rides' description lacks action verbcompare_rides에서
  • LOWTool 'plan_trotro_route' description lacks action verbplan_trotro_route에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~5,877토큰 (도구 정의)
~14.3 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 4.59%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 5개
검증됨버전이 기록되지 않음도구 5개