transport12 MCP Server
Enables CrewAI agents to utilize transport12 API for transport data.
Enables GitHub Copilot to query transport12 API for transport data via MCP.
Allows LangChain agents to interact with transport12 API for transport data.
Allows LangGraph agents to interact with transport12 API for transport data.
Provides tools for integrating transport12 API into n8n workflows.
Enables OpenAI Codex CLI to interact with transport12 API for public transport information.
Provides tools for accessing transport12 API from Yandex Cloud AI Studio.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@transport12 MCP ServerWhat are the next arrivals at Main Station?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
transport12-mcp

MCP-сервер для HTTP API transport12.
Сервер не обращается напрямую к внешним транспортным источникам. Все данные берутся через API основного сервиса transport12.
Меню
Related MCP server: mcp-stm-montevideo
Быстрый старт
Локальный запуск через npm:
TRANSPORT12_API_BASE_URL=https://your-transport12-api.example npx -y transport12-mcpГотовый удаленный MCP endpoint:
https://transport12.yasg.ru/mcpЕсли AI-клиент поддерживает удаленный MCP, достаточно указать этот URL как Streamable HTTP MCP server.
Варианты подключения
1. Локальный MCP
AI-клиент запускает пакет у пользователя на компьютере или на его сервере.
npx -y transport12-mcpМинимальная переменная окружения:
TRANSPORT12_API_BASE_URL=https://your-transport12-api.example2. Удаленный MCP
Можно использовать готовый endpoint:
https://transport12.yasg.ru/mcpИли поднять свой HTTP-сервис:
MCP_TRANSPORT=http MCP_PORT=3001 MCP_PATH=/mcp MCP_ALLOWED_HOSTS=your-mcp-host.example TRANSPORT12_API_BASE_URL=http://127.0.0.1:3000 transport12-mcpЕсли задан MCP_AUTH_TOKEN, клиент должен передавать:
Authorization: Bearer <token>Переменные окружения
Переменная | Обязательна | По умолчанию | Назначение |
| да | нет | Базовый URL API |
| нет |
|
|
| нет |
| Host для HTTP MCP |
| нет |
| Port для HTTP MCP |
| нет |
| Path для Streamable HTTP MCP |
| нет | нет | Разрешенные внешние host-ы за reverse proxy |
| нет | нет | Bearer token для защищенного HTTP MCP |
Подключение к AI-клиентам и агентам
Claude Desktop
Стабильный вариант для Claude Desktop - локальный stdio MCP:
{
"mcpServers": {
"transport12": {
"command": "npx",
"args": ["-y", "transport12-mcp"],
"env": {
"TRANSPORT12_API_BASE_URL": "https://your-transport12-api.example"
}
}
}
}Если ваша версия Claude Desktop или рабочее пространство поддерживает удаленные MCP/connectors через интерфейс приложения, используйте URL:
https://transport12.yasg.ru/mcpЕсли прямое подключение HTTP MCP в Claude Desktop недоступно, используйте локальный npx-вариант выше или Claude Code CLI.
Claude Code CLI
Удаленный MCP:
claude mcp add --transport http transport12 https://transport12.yasg.ru/mcpЛокальный MCP:
claude mcp add transport12 -- npx -y transport12-mcpДля локального варианта добавьте TRANSPORT12_API_BASE_URL в окружение терминала или в JSON-конфигурацию Claude Code.
OpenAI Codex CLI
Локальный MCP в ~/.codex/config.toml:
[mcp_servers.transport12]
command = "npx"
args = ["-y", "transport12-mcp"]
env = { TRANSPORT12_API_BASE_URL = "https://your-transport12-api.example" }Локальный MCP через CLI:
codex mcp add transport12 --env TRANSPORT12_API_BASE_URL=https://your-transport12-api.example -- npx -y transport12-mcpУдаленный MCP в ~/.codex/config.toml:
[mcp_servers.transport12]
url = "https://transport12.yasg.ru/mcp"Gemini CLI
Gemini CLI использует mcpServers в ~/.gemini/settings.json или .gemini/settings.json.
{
"mcpServers": {
"transport12": {
"command": "npx",
"args": ["-y", "transport12-mcp"],
"env": {
"TRANSPORT12_API_BASE_URL": "https://your-transport12-api.example"
}
}
}
}Qwen Code
Qwen Code поддерживает MCP и может настраиваться через qwen mcp или settings.json.
Удаленный MCP:
qwen mcp add --transport http transport12 https://transport12.yasg.ru/mcpЛокальный MCP:
qwen mcp add transport12 -- npx -y transport12-mcpJSON-вариант:
{
"mcpServers": {
"transport12": {
"command": "npx",
"args": ["-y", "transport12-mcp"],
"env": {
"TRANSPORT12_API_BASE_URL": "https://your-transport12-api.example"
}
}
}
}Cursor, Windsurf, Cline, Roo Code, Kilo Code, Continue
Большинство IDE-агентов и расширений используют формат mcpServers.
{
"mcpServers": {
"transport12": {
"command": "npx",
"args": ["-y", "transport12-mcp"],
"env": {
"TRANSPORT12_API_BASE_URL": "https://your-transport12-api.example"
}
}
}
}Если клиент поддерживает remote MCP:
{
"mcpServers": {
"transport12": {
"url": "https://transport12.yasg.ru/mcp"
}
}
}VS Code, GitHub Copilot, Gemini Code Assist
Для клиентов VS Code, которые используют ключ servers, конфигурация обычно выглядит так:
{
"servers": {
"transport12": {
"url": "https://transport12.yasg.ru/mcp"
}
}
}Для расширений, которые используют mcpServers, применяйте общий JSON из раздела выше.
Zed
Для Zed используйте локальный stdio-вариант через npx или remote URL, если ваша версия клиента поддерживает HTTP MCP:
{
"context_servers": {
"transport12": {
"command": {
"path": "npx",
"args": ["-y", "transport12-mcp"],
"env": {
"TRANSPORT12_API_BASE_URL": "https://your-transport12-api.example"
}
}
}
}
}Cherry Studio, ChatWise, Trae AI, Tongyi Lingma
Для клиентов с китайской экосистемой используйте один из двух вариантов:
Локальный stdio:
{
"mcpServers": {
"transport12": {
"command": "npx",
"args": ["-y", "transport12-mcp"],
"env": {
"TRANSPORT12_API_BASE_URL": "https://your-transport12-api.example"
}
}
}
}Удаленный Streamable HTTP:
{
"mcpServers": {
"transport12": {
"url": "https://transport12.yasg.ru/mcp"
}
}
}Названия полей в конкретном клиенте могут отличаться: url, serverUrl, type, transport, headers. Если есть выбор транспорта, указывайте streamable-http или http.
Универсальный Streamable HTTP MCP
Для любого клиента с поддержкой remote MCP:
https://transport12.yasg.ru/mcpДля защищенного endpoint добавьте Bearer token в настройках клиента:
Authorization: Bearer <token>Подключение через платформы и LLM-провайдеры
YandexGPT / Yandex Cloud AI Studio
В Yandex Cloud AI Studio используйте MCP Hub и подключайте transport12 как внешний MCP-сервер. В настройках транспорта выбирайте HTTP/Streamable HTTP, если такой выбор доступен:
https://transport12.yasg.ru/mcpЕсли нужен изолированный контур, разверните transport12-mcp в своей инфраструктуре и укажите внутренний URL.
GigaChat
Для GigaChat подключение обычно делается не в самом пользовательском чате, а через MCP-совместимый агентный слой: LangChain/LangGraph, LlamaIndex, Dify, Flowise, CrewAI, AutoGen, VoltAgent или собственный backend.
Рекомендуемый вариант:
GigaChat -> агент/оркестратор с MCP client -> https://transport12.yasg.ru/mcpLangChain, LlamaIndex, Dify, Flowise, n8n, CrewAI, AutoGen, VoltAgent, Pipecat
Используйте transport12 как внешний MCP server. Для платформ с поддержкой HTTP MCP указывайте:
https://transport12.yasg.ru/mcpДля платформ, которые умеют только stdio, запускайте пакет локально:
TRANSPORT12_API_BASE_URL=https://your-transport12-api.example npx -y transport12-mcpРазработка
pnpm install
pnpm run check
pnpm run buildПроверить API:
TRANSPORT12_API_BASE_URL=https://your-transport12-api.example pnpm run smokeПроверить HTTP MCP:
MCP_HTTP_URL=https://transport12.yasg.ru/mcp pnpm run smoke:httpTools
health- проверить доступность API;get_api_summary- получить границы и возможности MCP-интеграции;get_service_status- проверить ключевые endpoint-ы API;search_stops- найти остановки по названию;find_nearby_stops- найти ближайшие остановки по координатам;get_stop_routes- получить маршруты остановки;get_stop_arrivals- получить фактическое прибытие транспорта на остановку;search_routes- найти маршруты;get_route- получить маршрут;get_route_stops- получить остановки маршрута;get_route_vehicles- получить транспорт на линии;get_vehicle_forecast- получить прогноз движения конкретной машины;search_bus_station_destinations- найти направления автовокзала;get_bus_station_races- получить рейсы автовокзала на дату;get_bus_station_calendar- получить наличие рейсов по датам для направления;get_ticket_url- получить ссылку покупки билета или страницу рейса;search_everything- единый поиск по остановкам, маршрутам и направлениям автовокзала.
Available Tools
17 toolsfind_nearby_stopsFind nearby stopsB
Find nearest stops by latitude and longitude.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude. | |
| lng | Yes | Longitude. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation but does not state the return format, how results are ordered (presumably by distance, but unstated), the number of results returned, or any radius/limit constraints. For a tool with zero annotation coverage, this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero wasted words. The verb and resource are front-loaded, and the coordinate-based selection method is immediately clear. The description is appropriately sized for a simple two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with 100% schema coverage, the description is minimally adequate. However, it omits the return shape (what fields stops include), result ordering, and any limit on the number of stops returned. Since there is no output schema to compensate, an agent cannot fully predict the call's result without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented as 'Latitude.' and 'Longitude.' The description adds little beyond what the schema provides. Baseline 3 is appropriate since the schema already documents both parameters adequately and the description merely references them without adding format, range, or constraint details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Find), a clear resource (stops), and the selection method (by latitude and longitude). It clearly conveys a geo-location lookup. However, it doesn't explicitly distinguish itself from the sibling search_stops, which likely also finds stops but by name/query rather than coordinates, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings. With search_stops, search_everything, and get_stop_arrivals available, the description doesn't state when a coordinate-based lookup is appropriate or when an alternative (e.g., text search) should be preferred. This leaves the selection decision entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_summaryGet API summaryA
Return the MCP-facing transport12 API capabilities and endpoint map.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Return' implies a safe read-only operation NR, and the zero-parameter schema makes side effects unlikelyasi. Still, the description does not explicitly state that this is non-mutating, that it requires no authentication, or that it reflects current API capacity rather than live service health. For a simple no-argument introspection tool, this is adequate but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that states the action and the object of that action without any filler. It is front-loaded with the verb 'Return' and immediately specifies the tool's output. Every word contributes to understanding, making this an efficient and well-structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no output schema, no annotations), the description is mostly complete: an agent knows what the tool does and that it requires no inputs. The main gap is that the description does not hint at the structure or format of the returned endpoint map, which could matter if the agent needs to navigate the result. Still, for tool selection and invocation, the essential information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4, and the description does not need to explain any parameter behavior. There is nothing in the input schema to elaborate on, and the description's mention of returning endpoint capabilities aligns with what a no-argument summary tool would produce. The description does not need to compensate for any parameter documentation gap because none exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and identifies a concrete resource ('MCP-facing transport12 API capabilities and endpoint map'), so an agent can tell this tool provides API metadata rather than transit data. It is distinguishable from siblings like health and get_service_status because those suggest operational status, not a discovery/endpoint map. However, 'capabilities' is somewhat broad and could be more explicit about what kind of capabilities are included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, nor any mention of prerequisites or context. The description only states what the tool returns, leaving the agent to infer that it should be used when API capabilities or endpoint mapping are needed. Given the large sibling set, an explicit statement like 'Use this before calling other transport tools to discover endpoints' would have made the usage context much clearer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bus_station_calendarGet bus station calendarB
Get bus station race availability by date for a destination. The transport12 API limits the range to the source-supported future window.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date in dd.mm.yyyy format. | |
| days | No | Number of days to check when to is omitted. | |
| from | No | Start date in dd.mm.yyyy format. | |
| destinationId | Yes | Destination id from search_bus_station_destinations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the API's future-window limit, but it does not state that this is a read-only operation, mention authentication/authorization needs, or describe any side effects or error behavior. For a tool with no structured safety hints, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences with no filler. The primary purpose is front-loaded, and the second sentence adds a useful constraint about the API window. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-style tool with a clear schema and no output schema, the description covers the core purpose but omits behavioral details (response shape, how parameters combine, error conditions) that an agent might need. The absence of annotations and output schema increases the burden, yet the description is not severely deficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter (destinationId, from, to, days) has a meaningful schema description. The tool description adds no parameter-specific meaning beyond the schema, so the baseline of 3 applies without needing compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get') on a specific resource ('bus station race availability') qualified by date and destination. This is clear and distinguishable from many siblings, though it does not explicitly contrast with the closely named 'get_bus_station_races' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement about when to use this tool versus alternatives like get_bus_station_races or search_bus_station_destinations. The only guidance is an API limitation on the future window, which is a constraint rather than a usage selector. The agent must infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bus_station_racesGet bus station racesC
Get bus station races for a destination and date.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Trip date in dd.mm.yyyy format. | |
| destinationId | Yes | Destination id from search_bus_station_destinations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It implies a non-mutating lookup but doesn't describe response format, data scope, or any side effects/errors; this is insufficient for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One-sentence definition, front-loaded with the verb and resource; every word adds meaning and there is no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should explain what the result contains or at least clarify the domain term 'races'; it does neither, leaving important usage context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description merely paraphrases the two parameters without adding new semantic details like accepted date ranges or destination context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the operation (get) and resource (bus station races) with a scope qualifier (destination and date). However, it doesn't distinguish itself from closely related siblings like get_bus_station_calendar, and 'races' is domain-specific and undefined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; the description only gives the basic context. An agent could confuse it with get_bus_station_calendar or search_bus_station_destinations without additional clues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routeGet routeC
Get route details by id.
| Name | Required | Description | Default |
|---|---|---|---|
| routeId | Yes | transport12 route id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must disclose behavioral traits. It only says 'Get route details by id', which implies a read operation but does not state whether it is read-only, what it returns, how errors surface, or any authentication requirements. The description is too thin to carry the behavioral disclosure burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words and the core verb+resource is front-loaded. However, it errs on the side of under-specification, and the vague term 'details' could have been made more specific without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, no annotations, and no elaboration of what 'route details' includes, so an agent cannot predict what data will come back or how it differs from get_route_stops/get_route_vehicles. For a simple tool this may be minimally callable, but the ambiguity around 'details' and lack of usage context make it incomplete for confident selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the only parameter (routeId) is described as 'transport12 route id.' The description merely confirms the lookup by id and adds no extra format, constraints, or context beyond what the schema already provides. This meets the baseline for high schema coverage without adding new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Get') and a specific resource ('route details') with a lookup key ('by id'). However, 'details' is vague and the description does not differentiate it from sibling tools like get_route_stops or get_route_vehicles, so it misses the distinctiveness needed for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. There is no mention of search_routes for finding routes by criteria, or of get_route_stops/get_route_vehicles for more specific route sub-resources, so the agent is left without routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_route_stopsGet route stopsC
Get route directions and stops.
| Name | Required | Description | Default |
|---|---|---|---|
| routeId | Yes | transport12 route id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only says 'Get route directions and stops,' which implies a read operation but does not explain output structure, ordering, whether directions and stops are separate, or any route-specific behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler and the action is front-loaded. It is concise, though the phrase 'directions and stops' could be more precise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description provides only a minimal hint of what is returned. It does not clarify how directions are represented, how stops are ordered, or how this tool relates to the many sibling route/stop tools, leaving the agent with significant ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter routeId is fully described in the schema as 'transport12 route id.' with constraints, so schema coverage is 100%. The description adds no additional meaning beyond the schema, but the schema already handles the parameter semantics adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Get') and a clear resource ('route directions and stops'), so the core purpose is understandable. However, it does not differentiate this from sibling tools like get_route or get_stop_routes, and 'directions' is somewhat ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance. It does not mention alternatives such as search_stops, get_route, or get_stop_routes, and it leaves the choice of this tool over its siblings entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_route_vehiclesGet route vehiclesC
Get online vehicles for a route.
| Name | Required | Description | Default |
|---|---|---|---|
| routeId | Yes | transport12 route id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'online vehicles', leaving unclear what 'online' means operationally, whether authentication is required, how results are ordered, or what the response shape is. This is a significant gap for a real-time data tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence, front-loaded with the action and resource. It earns its place, though it could have used its brevity to include a bit more context about vehicle status or response behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no output schema and no annotations, the description should explain more about what 'online vehicles' means and what the caller gets back. It also lacks routing guidance relative to sibling tools, so an agent has to infer too much.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents routeId with a 'transport12 route id.' description at 100% coverage. The description's 'for a route' adds minimal semantic value beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and a specific resource ('online vehicles for a route'), making the core action clear. It does not explicitly name sibling tools like get_vehicle_forecast, so differentiation from related tools is partially left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_vehicle_forecast or get_route_stops. The phrase 'for a route' implies a routeId is needed, but there is no explicit context, exclusions, or mention of prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_statusGet service statusB
Run lightweight checks against key transport12 API endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral disclosure burden. 'Lightweight checks' implies a non-destructive read operation, but it does not specify what endpoints are checked, whether authentication is needed, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It communicates the operation and scope efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status-check tool the description is minimally viable, but with no annotations and no output schema it leaves important context unspecified, such as what a successful or failed check returns. The reference to 'key endpoints' is vague and not elaborated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so there is nothing for the description to disambiguate. The baseline of 4 applies because parameter semantics are trivially satisfied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('run lightweight checks') and a clear resource ('key transport12 API endpoints'), so the agent knows this is a service-status probe. It does not explicitly differentiate from the sibling tool 'health', which may overlap, but the intent is understandable on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the sibling 'health' tool or other API inspection tools. The description implies a quick sanity check, but it gives no explicit selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stop_arrivalsGet stop arrivalsC
Get factual arrival data for a stop.
| Name | Required | Description | Default |
|---|---|---|---|
| stationId | Yes | transport12 station id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It establishes that this is a getter/read operation but does not explain what 'factual' means in practice, what time range is covered, whether delays/cancellations are included, or what the response looks like. The description is not misleading, but it is too thin to be transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one short sentence with no filler. Key information is front-loaded. The only deduction is that 'factual' is an unusual modifier that is not elaborated anywhere, so it arguably does not fully earn its place in such a terse definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single integer parameter and no output schema, the description leaves critical questions unresolved: what arrival data means (scheduled vs real-time vs historical), what time period is covered, and what fields are returned. The presence of sibling get_vehicle_forecast suggests a distinction, but this description does not clarify it. An agent would be uncertain how to interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the one parameter, stationId, including type, range, and a description. The tool description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 applies. The description's 'factual' wording could relate to the stop context but does not clarify the parameter format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get factual arrival data for a stop.' The word 'factual' hints that this is actual observed data rather than a forecast, which distinguishes it from sibling get_vehicle_forecast. However, 'factual arrival data' is not formally defined, leaving some ambiguity about whether it means scheduled, real-time, or historical arrivals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as get_stop_routes, get_vehicle_forecast, or get_stop_vehicle_forecast. The agent must infer usage entirely from the tool name and the vague 'factual' cue. No explicit when-to-use or when-not-to-use context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stop_routesGet stop routesC
Get routes serving a stop.
| Name | Required | Description | Default |
|---|---|---|---|
| stationId | Yes | transport12 station id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It states an action ('get') but does not disclose response format, whether it returns a list or single entity, how routes are ordered, or any access/rate considerations. This is minimal even for a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly worded sentence with no redundancy. It is front-loaded and efficient, but its brevity borders on under-specification rather than being 'appropriately sized' for full usefulness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema Lineand no annotations, the description is too thin. It does not clarify what 'routes serving a stop' returns (e.g., route identifiers, full route objects, aggregated info), nor does it address potential confusion with sibling tools like get_route_stops. Given the simple one-parameter schema, more contextual detail was expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the only parameter, stationId, is documented as 'transport12 station id.' with integer type and bounds. The description adds nothing beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get routes serving a stop' clearly states the verb and resource, and is distinct from siblings like get_stop_arrivals or get_route_stops. It is a straightforward, unambiguous one-liner, though it lacks any explicit differentiation from similar stop-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No mention of when to prefget_stop_routes over get_stop_arrivals or search_routes, nor any context about typical use-cases or prerequisites. The agent is left to infer applicability from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticket_urlGet ticket URLA
Return a compact ticket purchase URL for a bus station race when available.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Trip date in dd.mm.yyyy format. | |
| raceId | No | Optional race id. If omitted, returns all available race URLs. | |
| destinationId | Yes | Destination id from search_bus_station_destinations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The description does convey the read-only nature via 'Return' and qualifies outcomes with 'when available,' but it does not describe failure behavior, output shape, or whether an empty result should be treated as an error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 12-word sentence with no filler, and the core outcome ('Return a compact ticket purchase URL') is front-loaded before the availability qualifier. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with only 3 parameters and no output schema, the description plus 100% schema coverage is nearly sufficient. The remaining gap is that the return format for the optional raceId case is not spelled out, especially since output schema is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents destinationId and date format, raceId optionality, and the cross-tool origin of destinationId from search_bus_station_destinations. The description adds no parameter semantics beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return a compact ticket purchase URL') and names a distinct resource (a ticket purchase URL for a bus station race), distinguishing it from siblings like get_bus_station_races, which return race data rather than purchase URLs. This gives an agent a clear operation, object, and scope in one sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, such as search_bus_station_destinations or get_bus_station_races. An agent must infer the intended workflow from the schema and sibling names, which is not reliable enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehicle_forecastGet vehicle forecastA
Get upcoming stops for a vehicle device code.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceCode | Yes | Vehicle device code from route vehicles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden, but it only says 'Get upcoming stops'. It does not clarify what 'upcoming' means in terms of time horizon, ordering, or real-time versus scheduled data, and it does not mention any limitations or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It conveys the essential purpose immediately and earns its place without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool, the description is minimally adequate, but it does not explain the expected output structure or the meaning of 'upcoming'. With no output schema and no annotations, slightly more context about time range or result ordering would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already describes deviceCode as 'Vehicle device code from route vehicles.' The description repeats that the stops are for that device code but adds no new semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('upcoming stops') plus the input context ('for a vehicle device code'). This clearly differentiates it from sibling tools that operate on routes or stops rather than a vehicle device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when the caller has a vehicle device code and needs that vehicle's upcoming stops. However, it does not explicitly state when to use this tool over alternatives like get_route_vehicles or get_stop_arrivals, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
healthHealthB
Check transport12 API availability. Returns a sanitized health payload.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions a 'sanitized health payload,' but does not explain what sanitization means, what the payload contains, whether authentication is needed, or any side effects. Basic behavior is stated, but significant context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. The core action is front-loaded, making it instantly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter health check, the description is mostly sufficient to invoke the tool. However, the lack of an output schema and the vague 'sanitized health payload' leave some ambiguity about the exact response format, though this is not critical for a simple availability check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly implies no input is needed and adds no unnecessary parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Check transport12 API availability.' This is specific and understandable, but it does not distinguish this tool from siblings like get_service_status or get_api_summary, which may overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_service_status or get_api_summary. The intended use is implied by the name and health-check wording, but no explicit context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bus_station_destinationsSearch bus station destinationsC
Search bus station destinations by settlement name.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Destination name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'search' without revealing whether it is read-only, any limitations, output format, or other behavioral traits. This is insufficient for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence, so it is concise and not bloated. However, it is under-specified; it does not front-load any distinguishing or additional context. It is more an example of minimalism than of effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with a single parameter and no output schema, the description provides only the bare minimum. It does not explain what the results look like, any pagination or filtering behavior, or how it relates to other search tools. This is inadequate for an agent to use it correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the parameter as 'Destination name', which is almost identical to the description's 'settlement name'. The description adds no extra meaning beyond the schema, and with 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and a resource ('bus station destinations'), but it is vague about what 'destinations' encompasses and does not differentiate from sibling search tools like search_stops or search_everything. The phrase 'by settlement name' gives some hint but not enough to uniquely identify this tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many sibling search tools. The description does not mention any context, exclusions, or alternative tools, leaving the agent to guess based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_everythingSearch everythingA
Search stops, routes, and bus station destinations with one query.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum items per category. | |
| query | Yes | Search query. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only states what is searched and that one query spans multiple types, but it does not disclose how results are combined, what matching semantics apply, whether results are paginated, or what the response structure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly scoped sentence that front-loads the main action and resource scope. There is no repetition of the title or unnecessary filler, and every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with fully documented input parameters, the description conveys the core function adequately. However, with no output schema and no annotations, it leaves the result format and behavior of the combined search unspecified, which an agent may need in order to correctly interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters with 100% coverage ('Search query.' and 'Maximum items per category.'). The description adds the conceptual framing that one query spans multiple categories, which is useful, but it does not add parameter-level detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Search') and the exact resources ('stops, routes, and bus station destinations') while emphasizing the combined nature of the query. This clearly distinguishes it from the narrower sibling tools like search_stops, search_routes, and search_bus_station_destinations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for searching across multiple resource types at once, but it does not explicitly state when to prefer it over the specific sibling search tools. No exclusions or alternative routing are provided, leaving the usage context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_routesSearch routesA
Search routes by number or name. If query is omitted, returns all routes.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Optional normalized route kind. | |
| query | No | Route number or name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It does disclose one non-obvious behavior: omitting the query returns all routes. It does not, however, describe whether matching is exact or partial, whether results are paginated, or how the 'kind' parameter affects results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The first sentence states the operation and accepted inputs; the second adds the key edge-case behavior. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-optional-parameter search tool, the description provides the essential search semantics and the all-routes fallback. The main omissions are the effect of 'kind' and any output format details, but the schema covers the parameter well enough for an agent to proceed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces that 'query' is a route number or name and adds the 'all routes' fallback, but it does not explain how 'kind' interacts with the search.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and resource ('routes') and clarifies that matches can be by 'number or name'. This is clear enough to distinguish the tool from route-detail tools like get_route, though it does not explicitly contrast with sibling search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the core usage: provide a route number or name as the query. It also covers the omitted-query behavior by saying 'returns all routes'. However, it gives no explicit guidance on when to prefer this tool over search_stops, search_everything, or get_route.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_stopsSearch stopsB
Search transport stops by name.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Stop name or part of a stop name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only says 'search by name' and says nothing about case sensitivity, partial matching rules, result limits, pagination, or what the return structure looks like. For a search tool without an output schema, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the essential purpose with no filler. Every word adds value, making it highly concise and easy to parse at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple tool with one parameter and no output schema, but the description is still too sparse to be fully actionable. It fails to mention how this differs from sibling tools like find_nearby_stops or search_everything, and it offers no behavioral details that would help an agent anticipate the tool's output or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the only parameter ('query') with a description matching what the tool description says. Since schema description coverage is 100%, the description adds no new parameter-level meaning beyond reinforcing that the search is by stop name, which earns the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('search') and resource ('transport stops') with a clear scope ('by name'), making the tool's basic purpose unambiguous. However, it does not explicitly distinguish this tool from siblings like find_nearby_stops or search_everything, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only implies that this tool should be used when you have a stop name or partial name to search for. It provides no explicit guidance on when not to use it or when an alternative like find_nearby_stops would be more appropriate, leaving the agent to infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
v0.2.3- First observed
find_nearby_stops - First observed
get_api_summary - First observed
get_bus_station_calendar - First observed
get_bus_station_races - First observed
get_route - First observed
get_route_stops - First observed
get_route_vehicles - First observed
get_service_status - First observed
get_stop_arrivals - First observed
get_stop_routes - First observed
get_ticket_url - First observed
get_vehicle_forecast - First observed
health - First observed
search_bus_station_destinations - First observed
search_everything - First observed
search_routes - First observed
search_stops
TDQS
Scored across 17 tools
Most tools have clear resource-specific boundaries, but health and get_service_status overlap in purpose, and get_bus_station_races versus get_bus_station_calendar may confuse agents about which returns actual races versus availability. search_everything also partially duplicates the individual search tools, though its aggregate intent is clear.
The tool set follows a consistent snake_case verb_noun pattern with get_, search_, and find_ prefixes, making the API largely predictable. The lone 'health' tool breaks the pattern slightly, but it is still easily understood as a status check.
With 17 tools, the server is at the upper edge of a reasonable size, but the breadth of the domain—stops, routes, vehicles, bus stations, and tickets—justifies the count. No tool feels redundant enough to remove outright, though the three health/summary tools could arguably be consolidated.
The server covers the core read-only workflows for a transit API: searching stops/routes, retrieving arrivals and vehicle forecasts, and exploring bus station races and ticket URLs. Minor gaps exist such as lack of a stop detail endpoint, route schedule/timetable data, or direct bus station lookup by ID, but agents can work around these with the provided surface.
Maintenance
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
- geoOAuthco.thinair
Geocoding, routing, isochrones, traffic, weather, and place search for AI agents. 19 MCP tools.
MCP server exposing the Backtest360 engine API as tools for AI agents.
The Ferryhopper MCP server is a connector for LLMs and AI Agents in maritime travel that exposes ferry routes, schedules, and booking options. It enables AI assistants to search ports and connections across 33 countries and 190+ ferry operators, provide real-time ferry itineraries with indicative prices, and assist users with planning island-hopping or multi-leg journeys by processing natural language queries about ferry times, passenger counts, and travel durations.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for interacting with the Berlin Public Transport (BVG) API to search for locations and plan journeys. It provides real-time access to departures, arrivals, trip details, and vehicle tracking within Berlin's transit network.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server exposing Montevideo public transportation data (STM) as tools for AI assistants, enabling natural language queries about routes, stops, arrivals, and trip planning.3 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that provides tools for querying live transit data (stops, departures, routes, vehicles, alerts) from any WP GTFS Pro site, enabling AI assistants to answer rider questions.3 npmGPL 2.0
- AlicenseAqualityCmaintenanceMCP server for Atlanta MARTA real-time transit data, enabling queries about train arrivals and bus positions via natural language.4MIT