Lviv Public Transport

Lviv public transport MCP: stops, timetables, routes, and live vehicle positions. No API key.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
100%
命名质量
100%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~5,608token 数(工具定义)
~6.6 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 4.38%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "timetable-api-node": {
      "url": "https://api.lad.lviv.ua/mcp"
    }
  }
}

远程端点

https://api.lad.lviv.ua/mcpstreamable-http

它能做什么

工具清单

工具(8)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢get_stop_realtime(stop_id)

Returns live arrivals at a stop: route, destination, vehicle type, minutes until arrival, and each vehicle's position. Use this as the **default tool** when the user asks about arrivals, departures, or the next bus/tram at a specific stop. Requires a numeric stop ID (shown on stop signage); use `search_stops` when you have a stop name, or `get_stops_around_location` when you have coordinates.

输入模式

{
  "type": "object",
  "properties": {
    "stop_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Municipal stop code shown on stop signage (e.g. 707). Accepts a positive integer or an equivalent digit-only string."
    }
  },
  "required": [
    "stop_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

输出模式

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "const": "transit_realtime"
    },
    "data": {
      "type": "object",
      "properties": {
        "stop": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "name": {
              "type": [
                "string",
                "null"
              ]
            },
            "lat": {
              "type": [
                "number",
                "null"
              ]
            },
            "lng": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "id",
            "name",
            "lat",
            "lng"
          ],
          "additionalProperties": false
        },
        "arrivals": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "route": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "direction": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "vehicle_type": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "arrival_minutes": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "vehicle_id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "lat": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "lng": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "bearing": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "route",
              "direction",
              "vehicle_type",
              "arrival_minutes",
              "vehicle_id",
              "lat",
              "lng",
              "bearing"
            ],
            "additionalProperties": false
          }
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "stop",
        "arrivals",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "ui_blocks": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "map"
              },
              "data": {
                "type": "object",
                "properties": {
                  "center": {
                    "type": "array",
                    "items": [
                      {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      {
                        "type": [
                          "number",
                          "null"
                        ]
                      }
                    ],
                    "additionalItems": false,
                    "minItems": 2,
                    "maxItems": 2
                  },
                  "zoom": {
                    "type": "number"
                  },
                  "layers": {
                    "type": "object",
                    "properties": {
                      "stops": {
                        "type": "string"
                      },
                      "vehicles": {
                        "type": "string"
                      },
                      "polylines": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "required": [
                  "center",
                  "zoom",
                  "layers"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "type",
              "data"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "arrival_list"
              },
              "data": {
                "type": "object",
                "properties": {
                  "source": {
                    "type": "string"
                  }
                },
                "required": [
                  "source"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "type",
              "data"
            ],
            "additionalProperties": false
          }
        ]
      }
    }
  },
  "required": [
    "view",
    "data",
    "ui_blocks"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_stops(query, limit)

Finds stops by name (Ukrainian or English transliteration, case-insensitive, partial match) and returns each stop's numeric ID, coordinates, and the routes serving it. Use this as the **first step** when the user names a stop or landmark stop (e.g. "Опера", "Rynok", "Головний вокзал") and you need a stop ID for `get_stop_realtime` or `find_routes_between`. One name usually covers both sides of the street under different IDs; each is returned, and the `routes` list tells them apart. Use `get_stops_around_location` instead when you have coordinates rather than a name.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "description": "Stop name or part of it, e.g. \"Ринок\", \"opera\", \"Стрийська\"."
    },
    "limit": {
      "description": "Maximum stops to return (1–25, default 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

输出模式

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "const": "transit_realtime"
    },
    "data": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string"
        },
        "stops": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "lat": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "lng": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "routes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "eng_name": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "name",
              "lat",
              "lng",
              "routes",
              "eng_name"
            ],
            "additionalProperties": false
          }
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "query",
        "stops",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "ui_blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "map"
          },
          "data": {
            "type": "object",
            "properties": {
              "center": {
                "type": "array",
                "items": [
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                ],
                "additionalItems": false,
                "minItems": 2,
                "maxItems": 2
              },
              "zoom": {
                "type": "number"
              },
              "layers": {
                "type": "object",
                "properties": {
                  "stops": {
                    "type": "string"
                  },
                  "vehicles": {
                    "type": "string"
                  },
                  "polylines": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "center",
              "zoom",
              "layers"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "type",
          "data"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "view",
    "data",
    "ui_blocks"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢find_routes_between(from_stop_id, to_stop_id)

Lists the direct routes (no transfer) from one place to another: which stop to board, where to get off, the direction's destination, stops in between, and the walk at each end — best first, walking counted. Use when the user asks how to get from A to B, or which bus/tram goes from one place to another. Each end covers every stop within a 300 m walk of the one given, since a line's two directions often stop on opposite sides of a street under different names; `board_stop` says where to actually wait. An empty `options` list means no direct route: a transfer is needed. Requires numeric stop IDs; get them with `search_stops` or `get_stops_around_location` first. Follow up with `get_stop_realtime` on `board_stop` for live departures.

输入模式

{
  "type": "object",
  "properties": {
    "from_stop_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Stop ID where the trip starts."
    },
    "to_stop_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Stop ID where the trip ends."
    }
  },
  "required": [
    "from_stop_id",
    "to_stop_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

输出模式

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "const": "transit_realtime"
    },
    "data": {
      "type": "object",
      "properties": {
        "from": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "name": {
              "type": [
                "string",
                "null"
              ]
            },
            "stop_ids": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "id",
            "name",
            "stop_ids"
          ],
          "additionalProperties": false
        },
        "to": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "name": {
              "type": [
                "string",
                "null"
              ]
            },
            "stop_ids": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "id",
            "name",
            "stop_ids"
          ],
          "additionalProperties": false
        },
        "options": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "route": {
                "type": "string"
              },
              "vehicle_type": {
                "type": "string"
              },
              "direction": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "destination": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "board_stop": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lat": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "lng": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "id",
                  "name",
                  "lat",
                  "lng"
                ],
                "additionalProperties": false
              },
              "alight_stop": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lat": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "lng": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "id",
                  "name",
                  "lat",
                  "lng"
                ],
                "additionalProperties": false
              },
              "stops_count": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "walk_to_board_meters": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "walk_from_alight_meters": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "route",
              "vehicle_type",
              "direction",
              "destination",
              "board_stop",
              "alight_stop",
              "stops_count",
              "walk_to_board_meters",
              "walk_from_alight_meters"
            ],
            "additionalProperties": false
          }
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "from",
        "to",
        "options",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "ui_blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "map"
          },
          "data": {
            "type": "object",
            "properties": {
              "center": {
                "type": "array",
                "items": [
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                ],
                "additionalItems": false,
                "minItems": 2,
                "maxItems": 2
              },
              "zoom": {
                "type": "number"
              },
              "layers": {
                "type": "object",
                "properties": {
                  "stops": {
                    "type": "string"
                  },
                  "vehicles": {
                    "type": "string"
                  },
                  "polylines": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "center",
              "zoom",
              "layers"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "type",
          "data"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "view",
    "data",
    "ui_blocks"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_route_static(route_name, include_shapes)

Returns static route data: name, long name, vehicle type, colour, the ordered stop list for both directions, and the timetable of departures from the first stop (workday and weekend). Use when the user asks which stops a route serves, where it goes, or its scheduled departure times. Set `include_shapes` only when you will draw the route on a map — the polylines are large and carry nothing a text answer needs. Do NOT use this for live vehicle positions — use `get_route_realtime` instead. Requires a route short name (e.g. "T30", "32A") or numeric external ID.

输入模式

{
  "type": "object",
  "properties": {
    "route_name": {
      "type": "string",
      "minLength": 1,
      "description": "Route short name (e.g. \"T30\", \"32A\") or numeric external ID."
    },
    "include_shapes": {
      "description": "Include route polylines ([lat, lng] points per direction) for map drawing. Default false.",
      "type": "boolean"
    }
  },
  "required": [
    "route_name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

输出模式

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "const": "transit_realtime"
    },
    "data": {
      "type": "object",
      "properties": {
        "route": {
          "type": "object",
          "properties": {
            "name": {
              "type": [
                "string",
                "null"
              ]
            },
            "long_name": {
              "type": [
                "string",
                "null"
              ]
            },
            "color": {
              "type": [
                "string",
                "null"
              ]
            },
            "type": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "name",
            "long_name",
            "color",
            "type"
          ],
          "additionalProperties": false
        },
        "stops": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lat": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "lng": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "departures": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "schedule": {
                  "type": "object",
                  "properties": {
                    "workday": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "weekend": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "workday",
                    "weekend"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "id",
                "name",
                "lat",
                "lng",
                "departures"
              ],
              "additionalProperties": false
            }
          }
        },
        "shapes": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "number"
              }
            }
          }
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "route",
        "stops",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "ui_blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "map"
          },
          "data": {
            "type": "object",
            "properties": {
              "center": {
                "type": "array",
                "items": [
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                ],
                "additionalItems": false,
                "minItems": 2,
                "maxItems": 2
              },
              "zoom": {
                "type": "number"
              },
              "layers": {
                "type": "object",
                "properties": {
                  "stops": {
                    "type": "string"
                  },
                  "vehicles": {
                    "type": "string"
                  },
                  "polylines": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "center",
              "zoom",
              "layers"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "type",
          "data"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "view",
    "data",
    "ui_blocks"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_route_realtime(route_name)

Returns every vehicle currently running on a route: position, the destination it is heading to, and its next stop with estimated arrival. Use when the user asks "where is my tram/bus right now?", how many vehicles are running, or how far the next one is. Prefer `get_stop_realtime` when the user is at a stop and wants arrival times there. Requires a route short name (e.g. "T30", "32A") or numeric external ID.

输入模式

{
  "type": "object",
  "properties": {
    "route_name": {
      "type": "string",
      "minLength": 1,
      "description": "Route short name (e.g. \"T30\", \"32A\") or numeric external ID."
    }
  },
  "required": [
    "route_name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

输出模式

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "const": "transit_realtime"
    },
    "data": {
      "type": "object",
      "properties": {
        "route_name": {
          "type": "string"
        },
        "destinations": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "vehicles": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "direction": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "destination": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "next_stop": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "arrival": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "arrival"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lat": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "lng": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "bearing": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "lowfloor": {
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "direction",
              "destination",
              "next_stop",
              "lat",
              "lng",
              "bearing",
              "lowfloor"
            ],
            "additionalProperties": false
          }
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "route_name",
        "destinations",
        "vehicles",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "ui_blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "map"
          },
          "data": {
            "type": "object",
            "properties": {
              "center": {
                "type": "array",
                "items": [
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                ],
                "additionalItems": false,
                "minItems": 2,
                "maxItems": 2
              },
              "zoom": {
                "type": "number"
              },
              "layers": {
                "type": "object",
                "properties": {
                  "stops": {
                    "type": "string"
                  },
                  "vehicles": {
                    "type": "string"
                  },
                  "polylines": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "center",
              "zoom",
              "layers"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "type",
          "data"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "view",
    "data",
    "ui_blocks"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_stops_around_location(latitude, longitude, radius_meters)

Finds stops near a geographic point, returning each stop's numeric ID, name, coordinates, walking distance, and the routes serving it. Use this as the **first step** when the user gives an address or coordinates and you need stop IDs for `get_stop_realtime` or `find_routes_between`. Use `search_stops` instead when the user gives a stop name. Default radius is 1 000 m; narrow it (e.g. 300 m) for dense urban areas or widen it (up to 3 000 m) for rural locations.

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Decimal latitude of the search centre, WGS84 (e.g. 49.842 for central Lviv)."
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Decimal longitude of the search centre, WGS84 (e.g. 24.031 for central Lviv)."
    },
    "radius_meters": {
      "description": "Search radius in metres (50–3000, default 1000). Use ~300 for dense urban intersections, up to 3000 for suburban or rural areas.",
      "type": "integer",
      "minimum": 50,
      "maximum": 3000
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

输出模式

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "const": "transit_realtime"
    },
    "data": {
      "type": "object",
      "properties": {
        "center_lat": {
          "type": [
            "number",
            "null"
          ]
        },
        "center_lng": {
          "type": [
            "number",
            "null"
          ]
        },
        "radius_meters": {
          "type": "number"
        },
        "stops": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "lat": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "lng": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "routes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "distance_meters": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "name",
              "lat",
              "lng",
              "routes",
              "distance_meters"
            ],
            "additionalProperties": false
          }
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "center_lat",
        "center_lng",
        "radius_meters",
        "stops",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "ui_blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "map"
          },
          "data": {
            "type": "object",
            "properties": {
              "center": {
                "type": "array",
                "items": [
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                ],
                "additionalItems": false,
                "minItems": 2,
                "maxItems": 2
              },
              "zoom": {
                "type": "number"
              },
              "layers": {
                "type": "object",
                "properties": {
                  "stops": {
                    "type": "string"
                  },
                  "vehicles": {
                    "type": "string"
                  },
                  "polylines": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "center",
              "zoom",
              "layers"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "type",
          "data"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "view",
    "data",
    "ui_blocks"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_nearby_vehicles(latitude, longitude, radius_meters, route, limit)

Returns live vehicles near a point, nearest first, each with its route, destination, and distance. Use when the user asks "what transport is near me right now?" or wants a live map around a location. Narrow with `route` when the user cares about one line; prefer `get_route_realtime` for a whole route and `get_stop_realtime` for arrival times at a stop. Requires decimal latitude and longitude (WGS84).

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Decimal latitude of the centre point, WGS84 (e.g. 49.842 for central Lviv)."
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Decimal longitude of the centre point, WGS84 (e.g. 24.031 for central Lviv)."
    },
    "radius_meters": {
      "description": "Search radius in metres (100–1000, default 500).",
      "type": "integer",
      "minimum": 100,
      "maximum": 1000
    },
    "route": {
      "description": "Only vehicles on this route, by short name (e.g. \"Т30\", \"А1\"). Omit for all routes.",
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "description": "Maximum vehicles to return, nearest first (1–50, default 15). `total` reports how many were in range.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

输出模式

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "const": "transit_realtime"
    },
    "data": {
      "type": "object",
      "properties": {
        "center_lat": {
          "type": [
            "number",
            "null"
          ]
        },
        "center_lng": {
          "type": [
            "number",
            "null"
          ]
        },
        "radius_meters": {
          "type": "number"
        },
        "total": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "vehicles": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "route": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "vehicle_type": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "direction": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "destination": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "lat": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "lng": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "bearing": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "lowfloor": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "distance_meters": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "route",
              "vehicle_type",
              "direction",
              "destination",
              "lat",
              "lng",
              "bearing",
              "lowfloor",
              "distance_meters"
            ],
            "additionalProperties": false
          }
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "center_lat",
        "center_lng",
        "radius_meters",
        "total",
        "vehicles",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "ui_blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "map"
          },
          "data": {
            "type": "object",
            "properties": {
              "center": {
                "type": "array",
                "items": [
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                ],
                "additionalItems": false,
                "minItems": 2,
                "maxItems": 2
              },
              "zoom": {
                "type": "number"
              },
              "layers": {
                "type": "object",
                "properties": {
                  "stops": {
                    "type": "string"
                  },
                  "vehicles": {
                    "type": "string"
                  },
                  "polylines": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "center",
              "zoom",
              "layers"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "type",
          "data"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "view",
    "data",
    "ui_blocks"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_vehicle_info(vehicle_id)

Returns details for one vehicle by ID: position, route, destination, license plate, and its upcoming stops with names and estimated arrival times. Use when the user wants to follow a particular vehicle, e.g. "where does this tram go next?" or "when will it reach X?". Vehicle IDs come from `get_route_realtime`, `get_nearby_vehicles`, or `get_stop_realtime` results. Do NOT use this to get all vehicles on a route — use `get_route_realtime` instead.

输入模式

{
  "type": "object",
  "properties": {
    "vehicle_id": {
      "type": "string",
      "minLength": 1,
      "description": "Vehicle ID as returned by get_route_realtime, get_nearby_vehicles, or get_stop_realtime."
    }
  },
  "required": [
    "vehicle_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

输出模式

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "const": "transit_realtime"
    },
    "data": {
      "type": "object",
      "properties": {
        "vehicle_id": {
          "type": "string"
        },
        "route": {
          "type": [
            "string",
            "null"
          ]
        },
        "license_plate": {
          "type": [
            "string",
            "null"
          ]
        },
        "lat": {
          "type": [
            "number",
            "null"
          ]
        },
        "lng": {
          "type": [
            "number",
            "null"
          ]
        },
        "bearing": {
          "type": [
            "number",
            "null"
          ]
        },
        "direction": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "destination": {
          "type": [
            "string",
            "null"
          ]
        },
        "upcoming_stops": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "arrival": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "departure": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "name",
              "arrival",
              "departure"
            ],
            "additionalProperties": false
          }
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "vehicle_id",
        "route",
        "license_plate",
        "lat",
        "lng",
        "bearing",
        "direction",
        "destination",
        "upcoming_stops",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "ui_blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "map"
          },
          "data": {
            "type": "object",
            "properties": {
              "center": {
                "type": "array",
                "items": [
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                ],
                "additionalItems": false,
                "minItems": 2,
                "maxItems": 2
              },
              "zoom": {
                "type": "number"
              },
              "layers": {
                "type": "object",
                "properties": {
                  "stops": {
                    "type": "string"
                  },
                  "vehicles": {
                    "type": "string"
                  },
                  "polylines": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "center",
              "zoom",
              "layers"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "type",
          "data"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "view",
    "data",
    "ui_blocks"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

社区

评价此服务器

证据

最近观测

已验证未记录版本8 个工具
已验证未记录版本7 个工具