Skip to main content
Glama

Gachi Data API — Japan Station & Accessibility Data

station_search

Read-onlyIdempotent

Discover Japanese train stations by describing what you want around them, in English or Japanese — "朝ラーメンが食べられて車椅子トイレがある駅", "terminal station with late-night ramen", "水害リスクが低くてラーメンが多い駅". Semantic search over 9,035 station profiles (lines/terminal size, ramen density & styles, in-station accessible-toilet equipment, official hazard categories, ridership) with hybrid metadata filters — the filters guarantee the constraint, the embedding ranks by fit. Filter intent in the query text (朝ラー/深夜/おむつ/車椅子/水害リスク低…) is auto-applied (filter_source: inferred); explicit params win. Water-hazard intent (水害/洪水/浸水/高潮…リスク低) expands to flood rank AND storm-surge zone; 液状化/地盤 intent filters on the official liquefaction-tendency category; results carry risk_notes when other official hazard categories are high. Inferred facility filters with partial data coverage (おむつ/車椅子 — Tokyo-only data) BOOST confirmed stations instead of excluding unknowns (see soft_filters); explicit params remain strict. Taste/quality words (うまい, "good food", delicious…) are not evaluated (no review data); ramen ranking reflects shop density and style variety only. name_contains gives exact substring matching on station names (日本語/romaji) when the name itself is the requirement. Coverage notes: toilet stats = Tokyo stations only; ridership = Greater Tokyo operators only; hazard = official MLIT categories relayed as-is, NOT a safety judgment. Role split: station_search finds candidate stations — then get_toilet_by_station / search_ramen / get_station_hazard / get_station_context for detail on one station.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qYesNatural-language description of the station/area you want (ja/en). Concrete attribute words (朝ラー, wheelchair toilet, terminal, 水害リスク低) match best.
prefNoOptional prefecture filter, Japanese (東京都, 千葉 OK) or romaji (tokyo/osaka). Auto-inferred from the query text when omitted.
limitNoMax results (default 10; max 20, or 300 when name_contains is given — set limit >= name_matches_total for exhaustive name-match coverage).
diaperNoRequire a diaper changing table in station toilets (auto-inferred from おむつ/子連れ…).
ramen_minNoRequire at least this many ramen shops nearby (e.g. 30).
late_ramenNoRequire late-night ramen nearby (auto-inferred from 深夜/late night…).
morning_ramenNoRequire morning-ramen availability nearby (auto-inferred from 朝ラー/morning…).
name_containsNoSubstring filter on the station name (matches both 日本語 name_ja and romaji name, e.g. "谷" or "sakura"). ANDs with other filters; q still ranks the matches. Use for "stations whose name contains X" requests that semantic search cannot guarantee.
flood_rank_maxNoMax official flood inundation-depth rank 0–6 (0 = no assumed inundation; auto-inferred from 水害リスク低/flood-safe…).
accessible_toilet_minNoRequire at least this many in-station accessible toilets (Tokyo stations only; auto-inferred from 車椅子/wheelchair…).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoPresent when the query contains taste/quality words: they are not evaluated (no review data).
countNoResults returned.
notesNoCoverage caveats (toilet stats Tokyo-only, ridership Greater-Tokyo-only).
queryNoEcho of the query.
stationsNoMatching stations, best first: name, pref, similarity, ramen stats, toilet stats, official hazard categories (plus risk_notes when an official hazard category not covered by the filter is high), lines, ridership.
disclaimerNoHazard usage disclaimer.
attributionNoData source(s), license and provenance — an object, or an array of sources.
stats_as_ofNoFreshness of the underlying ramen stats (YYYY-MM-DD).
soft_filtersNoInferred facility filters applied as a score BOOST (confirmed stations get +BOOST on similarity = final_score; unknown/missing never excluded), with coverage note. Present only when active.
filter_sourceNoexplicit / inferred / none — how the filters were chosen.
applied_filtersNoHard metadata filters actually applied (explicit + inferred; includes name_contains when given).
name_matches_totalNoTotal stations whose name matched name_contains (before ranking/limit). Present only in name_contains mode.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses critical behavioral traits: hybrid metadata filters, auto-inference with explicit params winning, water-hazard expansion logic, soft filtering for partial data coverage, name_contains exact substring behavior, and specific data-coverage caveats (Tokyo-only toilets, Greater Tokyo ridership). It also explicitly states MLIT hazard categories are relayed 'as-is, NOT a safety judgment.' No contradiction with annotations.

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 long but dense and well-structured, front-loaded with the core purpose and then organized by filter behavior, coverage notes, and role split. Every sentence contributes useful information, though a few concepts (soft filters, water-hazard expansion) could be simplified without losing meaning. For a tool with 10 parameters and complex semantics, this length is justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, an output schema exists, and the description still adds necessary context: data coverage limitations, relationship to sibling tools, auto-inference behaviors, and edge cases like name_contains. It doesn't need to explain return values because the output schema covers that. The description leaves no obvious gaps for an agent deciding to use this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already documents all 10 parameters (100% schema coverage), the description adds substantial meaning: it explains how auto-inference works, that explicit params override inferred ones, the special limit rule with name_contains, soft_filters for partial coverage parameters, and the semantics of flood_rank_max and accessible_toilet_min. This is far beyond baseline schema descriptions.

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 opens with a specific verb ('Discover') and resource ('Japanese train stations') and explains the method ('by describing what you want around them'). It also explicitly distinguishes the tool from siblings via the role split: 'station_search finds candidate stations — then get_toilet_by_station / search_ramen / get_station_hazard / get_station_context for detail on one station.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance and alternatives: it names sibling tools for follow-up detail, explains when to use name_contains ('Use for "stations whose name contains X" requests that semantic search cannot guarantee'), and clarifies what the tool does not do (e.g., taste/quality words not evaluated, coverage limitations). This goes far beyond implied context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation3/5

Several tools overlap in function: get_active_alerts and get_station_alerts both return the same JMA alerts but with different input types, and get_municipality_context and get_station_context provide identical municipality data. However, the descriptions clarify the input differences, and other tools like get_toilet_by_city vs get_toilet_by_station are distinct enough.

Naming Consistency4/5

Most tools follow a consistent 'get_<noun>' pattern (get_active_alerts, get_municipality_context), but 'ping' and 'station_search' deviate from this convention. Still, the naming is largely predictable and readable.

Tool Count5/5

With 10 tools, the server is well-scoped for its purpose of station and accessibility data. Each tool serves a distinct function within the domain, and the count is within the ideal 3-15 range.

Completeness4/5

The tool surface covers the core workflows: discovery (station_search), station details (context, hazard, toilet), live alerts, and train status. Minor gaps exist such as the lack of a direct station info tool or the mention of 'search_ramen' which is not actually provided, but these are not critical.