Gachi Data API — Japan Station & Accessibility Data
Deep, obscure Japanese station, accessibility & hazard data for AI agents. English-first.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"japan-data-api": {
"url": "https://api.gachi-tokusuru.com/mcp"
}
}
}Remote endpoints
https://api.gachi-tokusuru.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (10)
🟢ping
Connection test / health check — call this first to confirm the server is reachable. Returns server identity, deploy version, tool count, station coverage, and the update times of the realtime layers (JMA alerts, train status) so you can confirm freshness, not just liveness. No auth, no arguments, lightweight.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"status": {
"description": "Always \"ok\" when the server is reachable."
},
"server": {
"description": "Server name."
},
"version": {
"description": "Deploy version."
},
"tools": {
"description": "Number of tools exposed by this server."
},
"stations_covered": {
"description": "Stations with accessible-toilet data."
},
"realtime_layers": {
"type": "object",
"additionalProperties": true,
"description": "Update times of the realtime KV snapshots (a field is omitted if that layer is unavailable).",
"properties": {
"jma_alerts_updated": {
"description": "When the JMA alerts snapshot was last fetched."
},
"train_status_updated": {
"description": "When the train-status snapshot was last fetched."
}
}
},
"rate_limit_noauth": {
"description": "No-auth rate limit."
}
},
"additionalProperties": true,
"description": "Health check: server identity + realtime-layer freshness."
}🟢get_municipality_context(name_or_code, fields)
Official Japanese government data for any municipality, one call — housing vacancy (2003–2023), nearest-station ridership trend, hazard categories, land prices, livability counts. No scores, no judgment — official values only. Accepts a 5-digit municipality code (13104) or an exact name (Shinjuku-ku / 新宿区).
Input Schema
{
"type": "object",
"properties": {
"name_or_code": {
"type": "string",
"description": "5-digit 全国地方公共団体コード (e.g. 13104) or exact municipality name (Shinjuku-ku / 新宿区)."
},
"fields": {
"type": "string",
"description": "Optional comma-separated subset: vacancy,ridership,population,hazard,land_price,livability."
}
},
"required": [
"name_or_code"
]
}Output Schema
{
"type": "object",
"properties": {
"municipality": {
"description": "Resolved municipality + code."
},
"vacancy": {
"description": "Housing-vacancy counts (2003–2023)."
},
"ridership": {
"description": "Nearest-station ridership trend."
},
"population": {
"description": "Population / future estimate."
},
"hazard": {
"description": "Hazard categories."
},
"hazard_disclaimer": {
"description": "Hazard usage disclaimer."
},
"land_price": {
"description": "Published land prices near the centroid."
},
"livability": {
"description": "Livability counts."
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Official municipality data (vacancy, ridership, hazard, land price, livability).",
"additionalProperties": true
}🟢get_station_context(station_name, station_id, fields)
Same official municipality data as get_municipality_context, resolved from a station: pass a station name (Shinjuku / 新宿 / Musashi-Kosugi) or a Japan Station Master station_id (e.g. st_00001), and it returns the context for that station's municipality. Official values only — no scores.
Input Schema
{
"type": "object",
"properties": {
"station_name": {
"type": "string",
"description": "Station name in English/romaji (Shinjuku) or Japanese (新宿). Provide this or station_id."
},
"station_id": {
"type": "string",
"description": "Japan Station Master station_id (e.g. st_00001). Alternative to station_name."
},
"fields": {
"type": "string",
"description": "Optional comma-separated subset: vacancy,ridership,population,hazard,land_price,livability."
}
},
"required": []
}Output Schema
{
"type": "object",
"properties": {
"station": {
"description": "Resolved station."
},
"municipality": {
"description": "Municipality + code."
},
"vacancy": {
"description": "Housing-vacancy counts."
},
"ridership": {
"description": "Ridership trend."
},
"population": {
"description": "Population / future estimate."
},
"hazard": {
"description": "Hazard categories."
},
"land_price": {
"description": "Land prices near the centroid."
},
"livability": {
"description": "Livability counts."
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Official data for a station's municipality.",
"additionalProperties": true
}🟢get_toilet_by_station(station)
Look up wheelchair-accessible / multipurpose toilets inside a train station, including floor, gender, equipment (wheelchair, ostomate, diaper table) and the nearest exit. Covers 526 Tokyo stations (Tokyo Bureau of Social Welfare data). Major stations outside Tokyo (Yokohama, Kawasaki, Omiya, Chiba, Fujisawa, Shin-Yokohama…) return an in-station layer that groups accessible toilets by ticket gate — inside vs outside — per railway operator. Accepts Japanese (新宿, 横浜) or romaji (Shinjuku, Yokohama) for major stations.
Input Schema
{
"type": "object",
"properties": {
"station": {
"type": "string",
"description": "Station name in Japanese (新宿, 渋谷) or romaji for major stations (Shinjuku, Shibuya, Kita-Senju)."
}
},
"required": [
"station"
]
}Output Schema
{
"type": "object",
"properties": {
"station": {
"description": "Resolved station (English)."
},
"station_ja": {
"description": "Station name in Japanese."
},
"station_name_source": {
"description": "How the name was resolved."
},
"count": {
"description": "Toilets returned."
},
"layer": {
"description": "Data layer (e.g. in_station_gate)."
},
"toilets": {
"type": "array",
"description": "Accessible toilets with floor, gender, equipment and nearest exit.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"source": {
"description": "Data source label."
},
"note": {
"description": "Human-readable note."
},
"error": {
"description": "Set when nothing was found."
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Wheelchair-accessible / multipurpose toilets inside a station.",
"additionalProperties": true
}🟢get_public_toilet_by_city(city)
List public toilets in a Japanese municipality, with wheelchair / baby-seat / ostomate flags, address and coordinates. Covers 612 municipalities nationwide (large cities capped at the top 50 results). Municipality names accept Japanese (e.g. 那覇市, 渋谷区); prefixing the prefecture improves accuracy.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Municipality name in Japanese (e.g. 那覇市, 渋谷区, 上天草市). Prefix the prefecture for accuracy."
}
},
"required": [
"city"
]
}Output Schema
{
"type": "object",
"properties": {
"city": {
"description": "Resolved municipality."
},
"count": {
"description": "Toilets returned."
},
"toilets": {
"type": "array",
"description": "Public toilets with wheelchair / baby-seat / ostomate flags, address and coordinates.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"note": {
"description": "Human-readable note."
},
"error": {
"description": "Set when nothing was found."
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Public toilets in a municipality.",
"additionalProperties": true
}🟢get_station_hazard(station_name)
Official disaster-risk categories at a Japanese train station, relayed live from the MLIT 不動産情報ライブラリ (Real Estate Information Library): flood inundation-depth rank, landform / liquefaction classification, and storm-surge inundation-area presence (landslide & tsunami are license-restricted and return available:false with a link to the official maps). Returns the official values/categories as-is — no composite score, no judgment. Accepts a station name in Japanese (新宿, 武蔵小杉) or romaji (Shinjuku, Musashi-Kosugi). For research/analytics; NOT a substitute for official government hazard maps or evacuation decisions.
Input Schema
{
"type": "object",
"properties": {
"station_name": {
"type": "string",
"description": "Station name in Japanese (新宿, 武蔵小杉) or romaji (Shinjuku, Musashi-Kosugi)."
}
},
"required": [
"station_name"
]
}Output Schema
{
"type": "object",
"properties": {
"station": {
"description": "Resolved station + coordinates."
},
"hazard": {
"description": "Official categories: flood inundation depth, landform/liquefaction, storm-surge."
},
"disclaimer": {
"description": "Usage disclaimer (not a substitute for official maps)."
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Official disaster-risk categories at a station (MLIT relay).",
"additionalProperties": true
}🟢station_search(q, name_contains, pref, limit, morning_ramen, ...)
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
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Natural-language description of the station/area you want (ja/en). Concrete attribute words (朝ラー, wheelchair toilet, terminal, 水害リスク低) match best."
},
"name_contains": {
"type": "string",
"description": "Substring 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."
},
"pref": {
"type": "string",
"description": "Optional prefecture filter, Japanese (東京都, 千葉 OK) or romaji (tokyo/osaka). Auto-inferred from the query text when omitted."
},
"limit": {
"type": "number",
"description": "Max results (default 10; max 20, or 300 when name_contains is given — set limit >= name_matches_total for exhaustive name-match coverage)."
},
"morning_ramen": {
"type": "boolean",
"description": "Require morning-ramen availability nearby (auto-inferred from 朝ラー/morning…)."
},
"late_ramen": {
"type": "boolean",
"description": "Require late-night ramen nearby (auto-inferred from 深夜/late night…)."
},
"ramen_min": {
"type": "number",
"description": "Require at least this many ramen shops nearby (e.g. 30)."
},
"accessible_toilet_min": {
"type": "number",
"description": "Require at least this many in-station accessible toilets (Tokyo stations only; auto-inferred from 車椅子/wheelchair…)."
},
"diaper": {
"type": "boolean",
"description": "Require a diaper changing table in station toilets (auto-inferred from おむつ/子連れ…)."
},
"flood_rank_max": {
"type": "number",
"description": "Max official flood inundation-depth rank 0–6 (0 = no assumed inundation; auto-inferred from 水害リスク低/flood-safe…)."
}
},
"required": [
"q"
]
}Output Schema
{
"type": "object",
"properties": {
"query": {
"description": "Echo of the query."
},
"count": {
"description": "Results returned."
},
"applied_filters": {
"description": "Hard metadata filters actually applied (explicit + inferred; includes name_contains when given)."
},
"name_matches_total": {
"description": "Total stations whose name matched name_contains (before ranking/limit). Present only in name_contains mode."
},
"soft_filters": {
"type": "array",
"description": "Inferred 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.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"filter_source": {
"description": "explicit / inferred / none — how the filters were chosen."
},
"stations": {
"type": "array",
"description": "Matching 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.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"note": {
"description": "Present when the query contains taste/quality words: they are not evaluated (no review data)."
},
"notes": {
"description": "Coverage caveats (toilet stats Tokyo-only, ridership Greater-Tokyo-only)."
},
"stats_as_of": {
"description": "Freshness of the underlying ramen stats (YYYY-MM-DD)."
},
"disclaimer": {
"description": "Hazard usage disclaimer."
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Semantic station discovery with hybrid filters.",
"additionalProperties": true
}🟢get_active_alerts(area)
Live river flood forecasts and landslide alerts for Japan (JMA official). NOT general weather warnings (storm/heavy rain/snow) and NOT earthquakes. Covers JMA 指定河川洪水予報 (river flood forecast, levels 2–5) and 土砂災害警戒情報 (landslide warning), each with level, affected area, official summary and issue time. Optional `area` filters by 2-digit prefecture code (e.g. 13 = Tokyo) or a JMA forecast-area code. Relay of official facts — not a warning issued by this service, not a life-safety system.
Input Schema
{
"type": "object",
"properties": {
"area": {
"type": "string",
"description": "Optional prefecture code (01–47, e.g. 13 = Tokyo) or JMA forecast-area code."
}
}
}Output Schema
{
"type": "object",
"properties": {
"coverage": {
"description": "What this feed covers — string or array of categories."
},
"fetched_at": {
"description": "When the snapshot was fetched."
},
"stale": {
"description": "True if the snapshot is stale."
},
"count": {
"description": "Number of active alerts."
},
"alerts": {
"type": "array",
"description": "Active JMA river-flood / landslide alerts with level, area, summary, issue time.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"source": {
"description": "Source label."
},
"disclaimer": {
"description": "Relay disclaimer (not a warning issued by this service)."
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Live JMA river-flood & landslide alerts.",
"additionalProperties": true
}🟢get_station_alerts(station_name)
Live JMA river flood forecasts and landslide alerts affecting a station's prefecture — NOT general weather warnings. Ask by station name in Japanese (新宿) or romaji (Shinjuku). Prefecture-level match (station master is Greater Tokyo). Relay of official JMA facts.
Input Schema
{
"type": "object",
"properties": {
"station_name": {
"type": "string",
"description": "Station name in Japanese (新宿) or romaji (Shinjuku)."
}
},
"required": [
"station_name"
]
}Output Schema
{
"type": "object",
"properties": {
"station": {
"description": "Resolved station."
},
"fetched_at": {
"description": "When the snapshot was fetched."
},
"stale": {
"description": "True if stale."
},
"count": {
"description": "Number of alerts."
},
"alerts": {
"type": "array",
"description": "JMA alerts affecting the prefecture.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"disclaimer": {
"description": "Relay disclaimer."
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Live JMA alerts for a station's prefecture.",
"additionalProperties": true
}🟢get_train_status(query)
Live train service status for Tokyo-area lines — delays, suspensions, resumptions. Ask 'is the Yamanote Line running?' by line or station name, English or Japanese. Status enum: normal / delayed / suspended / resumed. Cause text relayed from ODPT (English summary for known patterns, else original text + null). Data via ODPT (CC BY 4.0).
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Line or station name (English or Japanese), e.g. \"Yamanote\" or \"新宿\"."
}
},
"required": [
"query"
]
}Output Schema
{
"type": "object",
"properties": {
"query": {
"description": "Echo of the query."
},
"fetched_at": {
"description": "When the snapshot was fetched."
},
"stale": {
"description": "True if stale."
},
"count": {
"description": "Number of lines."
},
"lines": {
"type": "array",
"description": "Per-line status: normal / delayed / suspended / resumed, with cause.",
"items": {
"type": "object",
"additionalProperties": true
}
},
"attribution": {
"description": "Data source(s), license and provenance — an object, or an array of sources."
}
},
"description": "Live Tokyo-area train service status.",
"additionalProperties": true
}Community
Evidence