Skip to main content
Glama
yasg1988

transport12 MCP Server

by yasg1988

transport12-mcp

transport12 MCP

npm version npm downloads license Node.js 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.example

2. Удаленный 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>

Переменные окружения

Переменная

Обязательна

По умолчанию

Назначение

TRANSPORT12_API_BASE_URL

да

нет

Базовый URL API transport12

MCP_TRANSPORT

нет

stdio

stdio или http

MCP_HOST

нет

127.0.0.1

Host для HTTP MCP

MCP_PORT

нет

3001

Port для HTTP MCP

MCP_PATH

нет

/mcp

Path для Streamable HTTP MCP

MCP_ALLOWED_HOSTS

нет

нет

Разрешенные внешние host-ы за reverse proxy

MCP_AUTH_TOKEN

нет

нет

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-mcp

JSON-вариант:

{
  "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/mcp

LangChain, 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:http

Tools

  • 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 tools
find_nearby_stopsFind nearby stopsB

Find nearest stops by latitude and longitude.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude.
lngYesLongitude.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date in dd.mm.yyyy format.
daysNoNumber of days to check when to is omitted.
fromNoStart date in dd.mm.yyyy format.
destinationIdYesDestination id from search_bus_station_destinations.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesTrip date in dd.mm.yyyy format.
destinationIdYesDestination id from search_bus_station_destinations.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYestransport12 route id.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYestransport12 route id.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYestransport12 route id.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stationIdYestransport12 station id.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stationIdYestransport12 station id.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesTrip date in dd.mm.yyyy format.
raceIdNoOptional race id. If omitted, returns all available race URLs.
destinationIdYesDestination id from search_bus_station_destinations.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceCodeYesVehicle device code from route vehicles.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesDestination name.

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum items per category.
queryYesSearch query.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional normalized route kind.
queryNoRoute number or name.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesStop name or part of a stop name.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 17 tool updatesv0.2.3
    • First observedfind_nearby_stops
    • First observedget_api_summary
    • First observedget_bus_station_calendar
    • First observedget_bus_station_races
    • First observedget_route
    • First observedget_route_stops
    • First observedget_route_vehicles
    • First observedget_service_status
    • First observedget_stop_arrivals
    • First observedget_stop_routes
    • First observedget_ticket_url
    • First observedget_vehicle_forecast
    • First observedhealth
    • First observedsearch_bus_station_destinations
    • First observedsearch_everything
    • First observedsearch_routes
    • First observedsearch_stops

TDQS

B3.2/5.0

Scored across 17 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server exposing Montevideo public transportation data (STM) as tools for AI assistants, enabling natural language queries about routes, stops, arrivals, and trip planning.
    3 npm
    1
    MIT