# io.github.lovelyquality/korail-mcp (pypi · korail-mcp)

한국철도공사(KORAIL) 공공데이터 MCP 서버 — 98개 도구, API 키 신청 불필요. 역·열차·화물·통계 데이터 자연어 조회.

- Trust score: 69/100 (medium)
- Change this week: +19
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- pypi · `korail-mcp`: 69/100 (this document), [markdown](https://verifymcp.io/servers/lovelyquality-korail-mcp/korail-mcp.md), [page](https://verifymcp.io/servers/lovelyquality-korail-mcp/korail-mcp)

## Channel facts

- Registry: `pypi`
- Package: `korail-mcp`
- Version: `1.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Supply Chain Security**: 82/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects starlette 0.52.1, a direct dependency. A fixed version is available.
  - Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it.
  - 2 of 36 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 26 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 18422 tokens (~187/item across 98 items; 98 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 87/100
  - Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (77% of tools); any adoption earns full credit.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_station_transfer_info" implies "transfer" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 98 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.lovelyquality/korail-mcp server?

io.github.lovelyquality/korail-mcp runs locally as a PyPI package, launched with uvx korail-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add lovelyquality-korail-mcp -- uvx korail-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "lovelyquality-korail-mcp": {
      "command": "uvx",
      "args": [
        "korail-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "lovelyquality-korail-mcp": {
      "command": "uvx",
      "args": [
        "korail-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add lovelyquality-korail-mcp -- uvx korail-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "lovelyquality-korail-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "korail-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add lovelyquality-korail-mcp --command uvx --arg korail-mcp
```

### Hermes

```yaml
mcp_servers:
  lovelyquality-korail-mcp:
    command: "uvx"
    args: ["korail-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "lovelyquality-korail-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "korail-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add lovelyquality-korail-mcp -t stdio -c uvx -a korail-mcp
```

### Other

```json
{
  "mcpServers": {
    "lovelyquality-korail-mcp": {
      "command": "uvx",
      "args": [
        "korail-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-21 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-19 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 66, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-09-14 (score 50, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-12 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-10 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-08 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (98)

### `search_station` (~93 tokens)

역명(부분일치)으로 역코드·영문명·지역본부를 통합 조회.
차세대예약발매 역코드(75역, 영문명 포함)와 철도운영정보 역코드(1255역) 두 시스템을 함께 검색.
예: name='서울', name='수서', name='광명'

Input parameters:

- `name` (string, required)

Output parameters:

- `result` (string)

### `decode_station_code` (~88 tokens)

역코드(숫자)로 역명을 조회. 다른 MCP 응답에서 코드가 나왔을 때 사용.
차세대예약발매(75역)와 철도운영정보(1255역) 두 시스템 동시 검색.
예: code='3900023'(서울), code='390'(부분매칭 가능)

Input parameters:

- `code` (string, required)

Output parameters:

- `result` (string)

### `search_route` (~58 tokens)

노선명(부분일치)으로 노선코드를 조회. name 미입력 시 전체 노선 목록 반환.
예: name='경부', name='호남', name='KTX'

Input parameters:

- `name` (string)

Output parameters:

- `result` (string)

### `list_stations_by_region` (~90 tokens)

지역본부명(부분일치)으로 관할 역 목록 조회.
주요 지역본부: 서울본부, 수도권동부본부, 충청본부, 전라본부, 대구본부, 부산경남본부, 강원본부
예: region='서울', region='부산경남'

Input parameters:

- `region` (string, required)

Output parameters:

- `result` (string)

### `get_station_facilities` (~167 tokens)

역 이름으로 편의시설 정보 조회 (B551457 실시간 API).
엘리베이터·에스컬레이터·화장실·수유실·종합안내센터 유무.
station_name: 역 이름 부분일치 (예: '서울', '부산')
(EN: station amenities/facilities - elevator, escalator, restroom, nursing room, information center.
JA: 駅の便宜施設・設備 - エレベーター、エスカレーター、トイレ、授乳室、案内センター)
※ 데이터기준일: 실시간 API (날짜 미포함). 현장 변경이 즉시 반영되지 않을 수 있음.

Input parameters:

- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_accessible_facilities` (~167 tokens)

역 이름으로 교통약자(장애인) 편의시설 조회 (B551457 실시간 API).
휠체어리프트·장애인경사로·장애인화장실 유무.
station_name: 역 이름 부분일치 (예: '서울', '부산')
(EN: accessible/accessibility facilities for disabled and mobility-impaired passengers -
wheelchair lift, accessible ramp, accessible restroom.
JA: 交通弱者・障害者向け便宜施設 - 車椅子リフト、スロープ、障害者トイレ)
※ 데이터기준일: 실시간 API. 현장 변경이 즉시 반영되지 않을 수 있음.

Input parameters:

- `station_name` (string, required)

Output parameters:

- `result` (string)

### `list_stations_with_elevator` (~79 tokens)

엘리베이터가 설치된 역 목록 전체 조회 (B551457 실시간 API).
(EN: list of stations with elevators. JA: エレベーターが設置された駅の一覧)
※ 데이터기준일: 실시간 API. 현장 변경이 즉시 반영되지 않을 수 있음.

Output parameters:

- `result` (string)

### `get_station_facilities_detail` (~209 tokens)

역사 내외부 시설현황 조회 (odcloud, 2024.12.31 기준, 288개 역).
엘리베이터·에스컬레이터·휠체어리프트·장애인경사로·장애인화장실·일반화장실·
모유수유실·종합안내소·환승주차장(면수) 수량 포함.
station_name: 역명 부분일치 (예: '서울', '광명'). 미입력 시 전체 반환.
(EN: detailed interior/exterior station facilities - elevator, escalator, wheelchair lift,
accessible ramp/restroom, nursing room, parking. JA: 駅舎内外の詳細な設備現況)
※ B551457 편의시설 API 대비 수량 정보 더 풍부하나 데이터 기준일 고정(2024.12.31).

Input parameters:

- `station_name` (string)

Output parameters:

- `result` (string)

### `get_station_transfer_info` (~165 tokens)

역별 타 교통수단과 환승현황 조회 (odcloud, 2024.12.31 기준, 93개 역).
노선별·역별 KTX·광역철도·도시철도 역수 및 환승주차장 면수 포함.
station_name: 역명 부분일치 (예: '서울', '동대구').
line_name: 노선명 부분일치 (예: '경부고속', '호남선').
미입력 시 전체 반환.
(EN: transfer info to other transit modes by station. JA: 駅別の他交通手段への乗換現況)

Input parameters:

- `line_name` (string)
- `station_name` (string)

Output parameters:

- `result` (string)

### `get_station_location` (~147 tokens)

역 위치 정보 조회 (odcloud, 2024.04.01 기준, 202개 간선 철도역).
지역본부·역명·위도·경도·출입구 개수 포함.
station_name: 역명 부분일치 (예: '서울', '부산').
region: 지역본부 부분일치 (예: '서울본부', '대전충청', '강원본부').
미입력 시 전체 반환.
(EN: station location - coordinates, regional HQ, number of exits. JA: 駅の位置情報)

Input parameters:

- `region` (string)
- `station_name` (string)

Output parameters:

- `result` (string)

### `search_freight_code` (~74 tokens)

내적화물코드 검색 (총 961건).

분류코드(예: 7404), 한글명, 영문명에 대한 부분일치 검색.
빈 query시 limit만큼 앞에서부터 반환.

Input parameters:

- `limit` (integer)
- `query` (string)

### `decode_freight_code` (~40 tokens)

내적화물분류코드 → 한글명/영문명 단건 디코딩.

Input parameters:

- `code` (string, required)

### `search_container_record` (~143 tokens)

컨테이너 적재 이력 페이지 조회 (총 166,275건, odcloud).

대용량이라 매 호출 시 odcloud에 페이지 단위로 요청.
필터(컨테이너번호/화차차량번호/화물수탁일자/품목명)가 주어지면 받은 페이지 내에서 부분일치로 후필터링.
per_page 최대 1000.

Input parameters:

- `container_number` (string)
- `item_name` (string)
- `page` (integer)
- `per_page` (integer)
- `receipt_date` (string)
- `wagon_number` (string)

### `list_freight_work_lines` (~83 tokens)

화물적하작업 - 전용 작업선 정보 (총 424건, odcloud, 전체 캐시).

역명 부분일치 필터 가능. 작업선 길이·작업거리·운임계산거리·할인할증 등 포함.

Input parameters:

- `limit` (integer)
- `station_name` (string)

### `list_standard_loading_time` (~97 tokens)

표준 적하시간 마스터 (총 11건, odcloud, 전체 반환).

⚠️ 명칭 주의: data.go.kr 등록명은 '적하시간'이지만 실제 데이터는 화물 유형별
표준 작업시간 마스터(일반 보통품·화약류·컨테이너 등 11건). 조정 이력은
search_loading_time_adjustment 사용.

### `search_loading_time_adjustment` (~170 tokens)

적하시간 조정 이력 페이지 조회 (총 35,967건, odcloud).

⚠️ 명칭 주의: data.go.kr 등록명은 '표준적하시간'이지만 실제 데이터는 표준 대비
조정된 이력. 마스터는 list_standard_loading_time 사용.

필터: 조정역(station), 조정사유(reason, 예: '천재지변등 악조건', '작업능력초과'),
조정지역본부(region). 받은 페이지 내 부분일치 필터링.
per_page 최대 1000.

Input parameters:

- `page` (integer)
- `per_page` (integer)
- `reason` (string)
- `region` (string)
- `station` (string)

### `search_consignment_change` (~122 tokens)

수탁변경요금 검색 (총 4,015건, 로컬 CSV).

화물 운송장 접수 후 발생한 착역 변경·화물 지시 변경 등 수탁 조건 변경 건별 요금 이력.
필터: 제요금입력역명(station), 운송장번호(waybill_no), 화물지시종류(change_type).

Input parameters:

- `change_type` (string)
- `limit` (integer)
- `station` (string)
- `waybill_no` (string)

### `search_consignment_change_per_wagon` (~109 tokens)

수탁변경요금 화차별 (총 6,681건, 로컬 CSV).

개별 화차 단위 지시번호·운송장번호·화통번호 매핑 및 화차요금 산출 근거.
필터: 화차차량번호(wagon_number), 운송장번호(waybill_no).

Input parameters:

- `limit` (integer)
- `wagon_number` (string)
- `waybill_no` (string)

### `get_logistics_facility` (~113 tokens)

물류시설 정보 통합 조회 (기본 210건 + 규모 71건 + 사진 457건).

역명 또는 지역본부명 부분일치 필터. 기본정보(시설 면적·요금·수입 등),
규모(싸이로 용량·수), 사진(첨부파일명·설명)을 역명 기준으로 결합 반환.

Input parameters:

- `limit` (integer)
- `region` (string)
- `station_name` (string)

### `get_freight_items` (~99 tokens)

화물 품목정보 조회 (총 861건, 로컬 CSV).

품목코드·품목명·품목약어명·최저톤수율 정보. 계층형 코드 구조
(상위 0000, 중위 00, 하위 01~99). 빈 query시 상위 항목부터 limit 반환.

Input parameters:

- `limit` (integer)
- `query` (string)

### `get_hazardous_cargo` (~259 tokens)

위험물 정보 조회 (로컬 CSV, 2025.09.15 기준).

위험물분류기준(52건) + 위험물코드상세(2301건) 두 테이블을 통합 조회.
\- query: 유엔위험물 한글명 또는 번호 부분일치 검색 (예: '가스', '아세틸렌', '1001')
\- grade: 위험물등급번호 정확일치 필터 (예: '1'=폭발물, '2'=가스, '3'=인화성액체)
\- limit: 최대 반환 건수 (기본 50)

위험물 등급 안내:
  1=폭발물, 2=가스(인화성·독성), 3=인화성액체, 4=가연성고체,
  5=산화성물질, 6=독성물질, 7=방사성물질, 8=부식성물질, 9=기타위험물

Input parameters:

- `grade` (string)
- `limit` (integer)
- `query` (string)

### `get_lease_stores` (~163 tokens)

역사 내 임대매장 운영정보 조회 (실시간 REST API).

역사 내 임대매장의 매장명, 매장위치, 역명, 본부, 개업일자,
계약기간, 승인면적, 평일·휴일 영업시간 등을 제공한다.

store_name:   매장명 부분일치 필터 (예: "파리바게뜨", "GS25")
station_code: 역코드 정확일치 필터 (예: "0001")
station_name: 역명 정확일치 필터 (예: "서울역", "부산역")

Input parameters:

- `station_code` (string)
- `station_name` (string)
- `store_name` (string)

Output parameters:

- `result` (string)

### `get_lease_codes` (~107 tokens)

임대 시스템 코드 조회 (실시간 REST API).

임대 관련 분류 코드표를 제공한다.
코드타입(type), 코드값(code), 코드설명(value)으로 구성된다.

code_type: 코드타입 정확일치 필터
code:      코드 정확일치 필터
value:     코드설명 부분일치 필터

Input parameters:

- `code` (string)
- `code_type` (string)
- `value` (string)

Output parameters:

- `result` (string)

### `get_leased_assets` (~190 tokens)

한국철도공사 임대자산 현황 조회 (1,773건).

철도공사가 관리 중인 임대 자산의 소재지, 시설명, 계약기간,
임대면적(㎡), 연간임대료(부가세 별도)를 제공한다.
역사 내 상업공간·건물·유휴부지 등 실제 임대 중인 부동산 자산 정보.
B551457 /stores(매장 운영정보)와 다름 — 이 도구는 자산/재무 관점.

location:      자산소재지 부분일치 필터 (예: "서울", "대전", "경기")
facility_name: 시설명 부분일치 필터 (예: "서울역", "용산역")

Input parameters:

- `facility_name` (string)
- `location` (string)

Output parameters:

- `result` (string)

### `get_dormitory_longterm_codes` (~113 tokens)

직원숙사 장기예약 사유 코드 조회 (15건).

장기숙박 예약 시 사용되는 사유코드(그룹·값·명칭)를 제공한다.
'장기'(교육생·출장자·비연고지 발령 등)와 '기타'(2급이상·야간근무 등) 구분.

group: 코드그룹 필터 (예: "장기", "기타")

Input parameters:

- `group` (string)

Output parameters:

- `result` (string)

### `get_social_funds` (~79 tokens)

사회공헌 펀드 종류 조회 (6건).

사회공헌 재원 펀드 유형(종류명, 기본값여부, 분류순서)을 제공한다.
'사랑의 성금', '매칭그랜트', '자체성금', '러브포인트' 등 구분.

Output parameters:

- `result` (string)

### `get_social_volunteer_fields` (~96 tokens)

사회공헌 봉사 분야 코드 조회 (7건).

봉사분야 구분코드, 분야명, 분야설명을 제공한다.
내일하우스·해피트레인·복지단체·환경봉사·헌혈 등.

keyword: 분야명 부분일치 필터 (예: "헌혈", "환경", "해피")

Input parameters:

- `keyword` (string)

Output parameters:

- `result` (string)

### `get_social_donations` (~163 tokens)

사회공헌 '사랑의 성금' 사용 내역 조회 (1,053건).

성금 지출 관리번호, 순번, 지출일자, 금액(원), 사용내역을 제공한다.
온누리상품권 구매, 해피트레인 여행상품비, 후원물품 구입 등.

date_from: 지출일자 시작 (예: "2025-01-01")
date_to:   지출일자 종료
keyword:   내역 부분일치 필터 (예: "온누리", "해피트레인", "헌혈")

Input parameters:

- `date_from` (string)
- `date_to` (string)
- `keyword` (string)

Output parameters:

- `result` (string)

### `get_social_volunteer_matching` (~157 tokens)

사회공헌 봉사활동 매칭 지출 내역 조회 (877건).

봉사활동 매칭 관련 지출의 관리번호, 순번, 지출일자,
사용금액(원), 사용내역을 제공한다.
매칭그랜트·온누리상품권·봉사요원 간식비 등.

date_from: 지출일자 시작
date_to:   지출일자 종료
keyword:   사용내역 부분일치 필터 (예: "매칭그랜트", "봉사자", "온누리")

Input parameters:

- `date_from` (string)
- `date_to` (string)
- `keyword` (string)

Output parameters:

- `result` (string)

### `get_social_org` (~193 tokens)

사회공헌 포털 조직정보 조회 (6,306건).

한국철도공사 전체 조직 현황(본부·역·사업소·팀 등)을 제공한다.
조직명은 'KORAIL/강원본부/강릉역' 형식의 계층 경로.
메모1·메모2·메모3에 본부명·소속 정보 포함.

※ 전체 조회 시 최대 200건 반환. org_name 또는 headquarter 필터 권장.

org_name:    조직명 부분일치 필터 (예: "강릉역", "차량사업소", "AI전략본부")
headquarter: 본부명 부분일치 필터 (예: "강원본부", "서울본부", "대전")

Input parameters:

- `headquarter` (string)
- `org_name` (string)

Output parameters:

- `result` (string)

### `get_support_facilities` (~92 tokens)

사옥 내 부대시설 목록 조회 (29건).

본사 사옥 내 부대시설(카페·어린이집·회의실·스포츠센터·편의점 등)의
시설명, 생성일시, 수정일시, 비고를 제공한다.

※ 최신성 주의: 2025.08.20 기준 데이터로 현재와 다를 수 있음.

Output parameters:

- `result` (string)

### `get_support_departments` (~195 tokens)

업무지원 부서별 직위·직급 인원 현황 조회 (10,015건).

부서명, 직위명, 직급명, 인원수를 제공한다.
조직 내 인력 배분 및 직무 구조 파악에 활용.

※ 전체 조회 시 최대 200건 반환. 필터 사용 권장.

dept_name: 부서명 부분일치 필터 (예: "서울역", "AI전략본부", "차량사업소")
position:  직위명 부분일치 필터 (예: "역장", "팀장", "기술원")
grade:     직급명 부분일치 필터 (예: "사무영업3급", "운전4급", "토목5급")

Input parameters:

- `dept_name` (string)
- `grade` (string)
- `position` (string)

Output parameters:

- `result` (string)

### `get_office_meeting_rooms` (~133 tokens)

본사 사옥 회의실 목록 조회 (11건).

회의실코드, 수용인원, 회의실사양(명칭·좌석수)을 제공한다.
대회의실(160석)부터 소회의실(18석), 영상회의실, 디지털허브 랩 포함.

※ 2024년 이후 최신화 이력 없음. 현재 운영 현황과 다를 수 있음.

min_capacity: 최소 수용인원 필터 (예: 30 → 30인 이상 회의실만)

Input parameters:

- `min_capacity` (integer)

Output parameters:

- `result` (string)

### `get_job_grades` (~148 tokens)

직급 코드 정보 조회 (109건).

직급등급(1~10급), 직급명, 직급코드를 제공한다.
사무·기술·차량·운전·전기통신·토목·건축·특수·열차승무·물류영업 등 직종별 구분.

grade_level: 직급등급 정확일치 필터 (예: 3 → 3급 전체)
keyword:     직급명 부분일치 필터 (예: "운전", "차량", "사무영업")

Input parameters:

- `grade_level` (integer)
- `keyword` (string)

Output parameters:

- `result` (string)

### `get_cafeteria_menu_stats` (~173 tokens)

구내식당 메뉴 건수 현황 조회 (33건).

각 구내식당의 조식·중식·석식 식단 라인 수(등록된 식단 항목 건수)를 제공한다.
용산역·서울역·대전충남본부·부산역·인재개발원 등 전국 식당 포함.

※ '메뉴 건수'는 실제 요리 가짓수가 아닌 식단 제공 라인 수임에 유의.
   (예: 중식 2라인 = A코스·B코스 2종 제공)

location: 식단지역명 부분일치 필터 (예: "서울역", "부산", "대전", "본사")

Input parameters:

- `location` (string)

Output parameters:

- `result` (string)

### `search_operation_patterns` (~262 tokens)

전국 철도 노선 정보를 검색합니다. (총 2,146개)

⚠️ 여기서 "노선"은 물리적 선로(경부선·호남선 등)가 아니라 열차 운행계통 코드입니다.
경부선 선로 하나에도 다양한 경유 패턴의 운행계통이 수백 개 존재합니다.
"비전기 노선이 몇 개냐" 같은 인프라 기준 질문에는 수치가 과대 계산됩니다.

Args:
    query: 노선코드(ROUT_CD) 또는 노선명(ROUT_NM) 검색어 (부분 일치). 없으면 전체 반환.
           ※ 노선명에 "KTX" 문자열 없음. 고속선은 "고속", "경부고속" 등으로 표기됨.
    electric_only: True면 전기동력차 운행 노선만, False면 비전기 노선만. None이면 전체.

Returns:
    노선코드(ROUT_CD), 노선명(ROUT_NM), 전기동력차운행여부(ELC_LCM_RUN_FLG) 목록.

Input parameters:

- `electric_only`
- `query`

### `get_station_distance` (~333 tokens)

두 역 간 최단 운행거리(km)를 조회합니다. 여객·화물 거리를 구분하며 경유역 정보 포함.

Args:
    from_station: 출발역명 (정확한 역명 권장, 부분 일치도 지원. 예: "서울", "부산").
    to_station: 도착역명 (부분 일치). 없으면 출발역에서 출발하는 모든 구간 거리 반환.
    current_only: True면 현재 유효 데이터(적용종료일자=9999-12-31)만 반환. 기본 True.

Returns:
    출발역명, 도착역명, 여객최단운행거리(km), 화물운행거리(km), 구간거리내용(경유역), 적용기간.
    ※ 총 220,782건. 최초 호출 시 로딩에 수 초가 소요됩니다. 최대 200건 반환.
    ※ 출발역명 기준 인덱스만 존재. "특정 역에 도착하는 모든 경로" 역방향 조회는 미지원.
    ※ 여객최단운행거리는 운임 계산 기준 거리로, 실제 열차 운행거리(XLSX 기준)와 다를 수 있음.
       예: 서울↔부산 여객최단 441.7 km vs KTX 운행거리 417.4 km (고속선 vs 운임 기준선 차이).

Input parameters:

- `current_only` (boolean)
- `from_station` (string, required)
- `to_station`

### `get_freight_minimum_fare` (~171 tokens)

화물 운송 최저운임 기준 정보를 조회합니다. (총 7건 — 역사적 이력 포함)

Args:
    fare_type: 운임요금유형 (예: "최저운임"). 없으면 전체.
    classification_no: 분류번호 (예: "10", "20", "30"). 없으면 전체.
    current_only: True면 적용종료일자가 2100년 이후인 현재 유효 운임만 반환.

Returns:
    운임요금유형, 분류번호, 분류번호내용, 적용최저운임(원), 적용시작일자, 적용종료일자.

Input parameters:

- `classification_no`
- `current_only` (boolean)
- `fare_type`

### `get_freight_rate` (~214 tokens)

철도 화물 임율(ton-km 기준 운임 요율) 정보를 조회합니다. (전체 249건, 현재 유효 약 123건)

Args:
    category: 신청구분 (예: "일반", "컨테이너"). 없으면 전체.
    classification_no: 분류번호 (예: "10", "1001", "1021"). 없으면 전체.
    current_only: True면 현재 적용 중인 임율만 반환 (적용종료일자 2100 이후). 기본 True.
                  ※ 분류번호 1xxx는 컨테이너 임율. 10~80번대는 일반 화물 임율.

Returns:
    신청구분, 분류번호, 분류번호내용(화물 유형 설명), 적용임율(원/ton-km), 컨테이너규격내용, 적용기간.

Input parameters:

- `category`
- `classification_no`
- `current_only` (boolean)

### `get_segment_info` (~218 tokens)

철도 전동차 세그먼트(구간) 정보를 조회합니다.
세그먼트는 노선을 운행 분석 최소 단위로 분리한 구간입니다.

Args:
    segment_code: 세그먼트코드 (예: "100", "200", "300").
    region: 운행지역본부 부분 일치 (예: "서울", "대전", "수도권서부", "부산").
    station: 세그먼트 시작역·종료역·경유역명 부분 일치 (예: "서울", "대전").

Returns:
    basic: 세그먼트 기본 정보 (코드, 기간, 지역본부, 시작역, 종료역, 거리(km)).
    detail: 해당 세그먼트 구성 역 상세 (역명, 역일련번호, 누적거리).
    total_segments: 매칭된 세그먼트 수.

Input parameters:

- `region`
- `segment_code`
- `station`

### `get_operation_distance` (~409 tokens)

전국 철도 노선별 역간 운행거리를 조회합니다. (20개 노선 그룹)

열차가 실제로 주행하는 선로 거리 기준입니다. 운임 계산용 여객최단운행거리와 다를 수 있습니다.
(예: 서울↔부산 KTX 운행거리 417.4 km, 여객최단운행거리 441.7 km)

⚠️ 이 데이터는 철도운행거리_전체 XLSX(노선별 삼각행렬)에 수록된 역만 포함합니다.
   KTX 전용선 경유 역(경부KTX: 서울·영등포·광명·천안아산·오송·대전·김천구미·동대구·부산 등)만 있고,
   같은 KTX가 경유해도 행신·수원처럼 별도 인입선·재래선 역은 미포함일 수 있습니다.

Args:
    line_name: 노선명 부분 일치 (예: "경부", "호남", "전라", "강릉", "영동", "중앙", "태백").
               없으면 전체 노선 그룹 목록 반환.
    from_station: 출발역명 (정확 일치). 해당 역에서 출발하는 모든 거리 반환.
    to_station: 도착역명 (정확 일치). from_station과 함께 지정 시 두 역 간 거리 반환.

Returns:
    line_name 없음: available_lines 목록.
    line_name만: 매칭 노선과 역 목록.
    from_station 추가: 출발역에서 각 역까지의 거리 목록(거리 오름차순 정렬).
    from+to 모두: 두 역 간 거리(km).
    ※ 최초 호출 시 XLSX 파싱에 수 초 소요됩니다.

Input parameters:

- `from_station`
- `line_name`
- `to_station`

### `get_ktx_stations` (~151 tokens)

KTX 노선별 역 정보(역명, 도로명주소, 정차 순번)를 조회합니다. (총 102건)

Args:
    line_name: KTX 노선명 부분 일치 (예: "경부선", "호남선", "경전선"). 없으면 전체.
    station_name: 역명 부분 일치 (예: "서울", "부산", "광명"). 없으면 필터 없음.

Returns:
    고속철도명, 철도운영기관, 노선명, 순번, 역명, 주소(도로명) 목록.

Input parameters:

- `line_name`
- `station_name`

### `get_station_track_info` (~264 tokens)

역별 선로·시설 상세 정보 조회 (공통기준 역상세, 로컬 CSV, 2025.06.18 기준, 5161행).

구내유효장·선로길이·지선·전용선 거리, 총선수, 분기역여부, 입환시작여부 등
현장 운영에 필요한 역 선로 제원 정보 제공.

\- station_name: 역이름 부분일치 (예: '서울', '부산', '대전'). 미입력 시 전체.
\- current_only: True(기본)이면 현재 유효한 이력만 반환 (역이력적용종료일자 빈 값).
                False이면 이력 전체(동일 역의 이력 변경 포함) 반환.

주요 컬럼:
  구내유효장(m), 구내선로길이(m), 지선유효장(m), 지선선로거리(m),
  전용선유효장(m), 전용선선로거리(m), 총선수, 분기역여부(Y/N), 입환시작여부(Y/N)

Input parameters:

- `current_only` (boolean)
- `station_name` (string)

### `search_material_group` (~90 tokens)

자재그룹코드 검색 (총 999건, 로컬 CSV).

그룹코드(예: BB1300) 또는 그룹명칭(예: EMU용품)으로 부분일치 검색.
active_only=True 시 사용 중(Y)인 코드만 반환.

Input parameters:

- `active_only` (boolean)
- `limit` (integer)
- `query` (string)

### `search_g2b_item` (~104 tokens)

G2B(나라장터) 분류번호·품명 검색 (총 13,400건, 로컬 CSV).

G2B분류번호(8자리) 또는 G2B품명(한글·영문)으로 부분일치 검색.
품명해설 포함. active_only=True 시 사용 코드만 반환.

Input parameters:

- `active_only` (boolean)
- `limit` (integer)
- `query` (string)

### `search_material_attr` (~117 tokens)

자재속성정보 조회 (총 34,630건, 로컬 CSV).

자재번호·G2B분류번호·속성코드로 조회. 자재별 속성값(규격·재질·치수 등) 확인.
최소 1개 필터 권장 (미지정 시 앞에서 limit건 반환).

Input parameters:

- `attr_code` (string)
- `g2b_code` (string)
- `limit` (integer)
- `material_no` (string)

### `search_material_equipment` (~76 tokens)

자재대상장비 조회 (총 24,258건, 로컬 CSV).

특정 자재번호가 사용되는 장비 코드 조회, 또는 장비코드로 해당 자재 역검색.

Input parameters:

- `equipment` (string)
- `limit` (integer)
- `material_no` (string)

### `get_train_type_specs` (~151 tokens)

동력차 형별제원 조회 (2024.12.31 기준, 47개 차종).
KTX·KTX-산천·KTX-이음·디젤기관차·전기기관차·디젤동차·전기동차·ITX 등
각 차종의 마력(HP)·보유대수·자중(톤)·내용연수 포함.
train_type: 형별명 부분일치 (예: 'KTX', '디젤기관차', '전기기관차', 'ITX').
미입력 시 전체 47개 반환.

Input parameters:

- `train_type` (string)

Output parameters:

- `result` (string)

### `get_rolling_stock_by_year` (~183 tokens)

연도별 차량보유현황 조회 (2024.12.31 기준, 2016~2024년 9개 연도).
KTX·SRT·KTX-이음·디젤기관차·전기기관차·디젤동차·전기동차·간선형전기동차·
ITX-청춘·객차·발전차·화차·기중기 차종별 연도별 보유 대수 포함.
year: 조회 연도 (예: '2024', '2020'). 미입력 시 전체 9개 연도 반환.
※ SRT는 SR(수서고속철도) 소속으로 KORAIL 보유 수치에 포함된 것으로 표기됨.

Input parameters:

- `year` (string)

Output parameters:

- `result` (string)

### `get_wagon_by_weight_class` (~187 tokens)

화차 자중별 보유현황 조회 (2024.12.31 기준, 70개 자중 구간).
자중(톤) 구간별 유개차·유조차·무개차·평판차·소화물·차장차·침식차 보유 대수.
wagon_type: 차종 필터 (예: '유개차', '유조차', '무개차', '평판차').
            해당 차종 보유량 > 0 인 행만 반환.
min_weight: 최소 자중(톤, 예: '20').
max_weight: 최대 자중(톤, 예: '25').
미입력 시 전체 70개 행 반환.

Input parameters:

- `max_weight` (string)
- `min_weight` (string)
- `wagon_type` (string)

Output parameters:

- `result` (string)

### `get_wagon_by_load_capacity` (~223 tokens)

화차 적재하중별 보유현황 조회 (2024.12.31 기준, 27개 하중 등급).
적재하중(화물 최대 적재 중량) 등급별 유개차·무개차·평판차·소화물·유조차·차장차·침식차 보유 대수.
필드명 주의: '유 개 차', '무 개 차', '평 판 차' 등 띄어쓰기 포함.
wagon_type: 차종 (예: '유 개 차', '무 개 차', '평 판 차', '유 조 차').
            해당 차종 보유량 > 0 인 행만 반환.
min_load: 최소 적재하중 (예: '40').
max_load: 최대 적재하중 (예: '60').
미입력 시 전체 27개 행 반환.

Input parameters:

- `max_load` (string)
- `min_load` (string)
- `wagon_type` (string)

Output parameters:

- `result` (string)

### `get_maintenance_equipment` (~181 tokens)

철도차량 검수용 기계 보유현황 조회 (2024.12.31 기준, 16개 지역).
지역(정비단·지역본부)별 공작기계·원동기계·시험기계·유체기계·양물기계·
공기기계·토목기계·계중기계·차량이동기계·전기기계·로기계·잡기계·고속시험기계 수량.
region: 지역 ���분일치 (예: '수도권', '부산', '대전', '강원').
         '정비단' 또는 '지역본부'로 구분 가능.
미입력 시 전체 16개 지역 반환.

Input parameters:

- `region` (string)

Output parameters:

- `result` (string)

### `get_train_operation_by_type` (~246 tokens)

차종별 연간 운행실적 조회 (로컬 CSV, 2025.08.31 기준, 2019~2025년).

디젤기관차·전기기관차·전동차(수도권) 등 KORAIL 보유 차종별 연간 운행 횟수.
2025년은 8월까지의 통계.

\- year: 특정 연도 (예: 2024). 0이면 전체(2019~2025).
\- train_type: 차종명 부분일치 필터 (예: 'KTX', 'ITX', '디젤기관차', '전기기관차').
              미입력 시 전체 차종 컬럼 반환.

주요 차종: 디젤기관차(4400·7300·7400·7500호대), 전기기관차(8200·8500호대),
          KTX, ITX-새마을, ITX-청춘, 누리로, 수도권전동차 각 계열

Input parameters:

- `train_type` (string)
- `year` (integer)

Output parameters:

- `result` (string)

### `get_mainline_station_per` (~112 tokens)

간선열차 역별 승하차 통계 (갱신: 매일 D-2~D-1). opr_ymd=특정일자(YYYYMMDD), opr_ymd_gte/lte=기간, stn_nm=역명

Input parameters:

- `opr_ymd` (string)
- `opr_ymd_gte` (string)
- `opr_ymd_lte` (string)
- `stn_nm` (string)

Output parameters:

- `result` (string)

### `get_mainline_route_per` (~74 tokens)

간선열차 노선별 이용인원 통계 (갱신: 매월 1일, M-2). run_ym=운행연월(YYYYMM), rte_nm=노선명

Input parameters:

- `rte_nm` (string)
- `run_ym` (string)

Output parameters:

- `result` (string)

### `get_wide_rail_station_per` (~76 tokens)

광역철도 역별 승하차 통계 (갱신: 매월 26일, M-1). run_ym=운행연월(YYYYMM), stn_nm=역명

Input parameters:

- `run_ym` (string)
- `stn_nm` (string)

Output parameters:

- `result` (string)

### `get_wide_rail_route_per` (~81 tokens)

광역철도 노선별 이용인원 통계 (갱신: 매월 26일, M-1). run_ym=운행연월(YYYYMM), sbwy_ln_nm=전철선명

Input parameters:

- `run_ym` (string)
- `sbwy_ln_nm` (string)

Output parameters:

- `result` (string)

### `get_mainline_distance_per` (~58 tokens)

간선열차 거리별 이용인원 통계 (갱신: 매월 1일, M-2). run_ym=운행연월(YYYYMM)

Input parameters:

- `run_ym` (string)

Output parameters:

- `result` (string)

### `get_mainline_model_per` (~78 tokens)

간선열차 차량별 이용인원 통계 (갱신: 매월 1일, M-2). run_ym=운행연월(YYYYMM), carmdl=차종명(예:KTX)

Input parameters:

- `carmdl` (string)
- `run_ym` (string)

Output parameters:

- `result` (string)

### `get_mainline_day_of_week_per` (~76 tokens)

간선열차 요일별 이용인원 통계 (갱신: 매월 1일, M-2). run_ym=운행연월(YYYYMM), rte_nm=노선명

Input parameters:

- `rte_nm` (string)
- `run_ym` (string)

Output parameters:

- `result` (string)

### `get_mainline_grade_per` (~79 tokens)

간선열차 객실별 이용인원 통계 (갱신: 매월 1일, M-2). run_ym=운행연월(YYYYMM), carmdl=차종명(예:KTX)

Input parameters:

- `carmdl` (string)
- `run_ym` (string)

Output parameters:

- `result` (string)

### `get_mainline_ticketing_stat` (~76 tokens)

간선열차 발권유형 통계 (갱신: 매월 1일, M-1). ntsl_ym=판매연월(YYYYMM), ise_type=발권유형명

Input parameters:

- `ise_type` (string)
- `ntsl_ym` (string)

Output parameters:

- `result` (string)

### `get_mainline_person_distance` (~73 tokens)

간선열차 노선별 인거리 통계 (갱신: 매월 1일, M-2). run_ym=운행연월(YYYYMM), rte_nm=노선명

Input parameters:

- `rte_nm` (string)
- `run_ym` (string)

Output parameters:

- `result` (string)

### `get_ktx_long_term_stats` (~279 tokens)

KTX 장기 통계 조회 (2004~2023년, 로컬 XLSX).

경부선(서울-부산)·호남선(용산-목포) 2개 노선의 20년 역사 데이터.

category 선택:
  "운행횟수_주중" — 화요일 기준 편도 운행 횟수 (단위: 회)
  "운행횟수_주말" — 토요일 기준 편도 운행 횟수 (단위: 회)
  "운임_원"       — 해당 연도 운임 (단위: 원, 서울-부산·용산-목포 기준)
  "이용객_천명월" — 월평균 이용객 수 (단위: 천명/월)
  빈값           — 위 4개 카테고리 전체 반환

route: "경부선" | "호남선" 부분일치 필터 (빈값=전체)
year_from / year_to: 연도 범위 필터 (예: year_from=2010, year_to=2019)

Input parameters:

- `category` (string)
- `route` (string)
- `year_from` (integer)
- `year_to` (integer)

Output parameters:

- `result` (string)

### `get_mainline_carriage` (~277 tokens)

간선 여객열차 수송실적 조회. 역별 승하차 인원수를 제공합니다.
운행일자, 주운행선(경부선·호남선 등), 역 기준으로 필터링 가능.

Args:
    run_ymd: 특정 운행일자 (YYYYMMDD). 입력 시 해당 날짜만 조회.
    run_ymd_gte: 운행일자 시작 (YYYYMMDD, 이후)
    run_ymd_lte: 운행일자 종료 (YYYYMMDD, 이전)
    mrnt_cd: 주운행선코드 (예: "01"=경부선)
    mrnt_nm: 주운행선명 (예: "경부선", "호남선")
    stn_cd: 역코드 (예: "3900023"=서울)
    stn_nm: 역명 (예: "서울", "부산")

Input parameters:

- `mrnt_cd` (string)
- `mrnt_nm` (string)
- `run_ymd` (string)
- `run_ymd_gte` (string)
- `run_ymd_lte` (string)
- `stn_cd` (string)
- `stn_nm` (string)

Output parameters:

- `result` (string)

### `get_wide_area_carriage` (~299 tokens)

광역 여객열차 수송실적 조회. 전철역별 시간대별 승하차 인원수를 제공합니다.
광역철도(수도권 전철 등) 이용 통계 조회에 사용.

Args:
    run_ymd: 특정 운행일자 (YYYYMMDD). 입력 시 해당 날짜만 조회.
    run_ymd_gte: 운행일자 시작 (YYYYMMDD, 이후)
    run_ymd_lte: 운행일자 종료 (YYYYMMDD, 이전)
    sbwy_ln_cd: 전철선코드 (예: "101")
    sbwy_ln_nm: 전철선명 (예: "경부선")
    sbwy_stn_cd: 전철역코드 (예: "010000")
    sbwy_stn_nm: 전철역명 (예: "서울")
    tmwd_se_cd: 시간대구분코드 (예: "01")

Input parameters:

- `run_ymd` (string)
- `run_ymd_gte` (string)
- `run_ymd_lte` (string)
- `sbwy_ln_cd` (string)
- `sbwy_ln_nm` (string)
- `sbwy_stn_cd` (string)
- `sbwy_stn_nm` (string)
- `tmwd_se_cd` (string)

Output parameters:

- `result` (string)

### `get_freight_carriage` (~396 tokens)

화물열차 수송실적 조회. 발송역~도착역 구간별 화물 발송톤·운송연톤키로를 제공합니다.
화물구분·품목(대/중/소분류)별 필터링 가능.

Args:
    crtr_ymd: 특정 기준일자 (YYYYMMDD). 입력 시 해당 날짜만 조회.
    crtr_ymd_gte: 기준일자 시작 (YYYYMMDD, 이후)
    crtr_ymd_lte: 기준일자 종료 (YYYYMMDD, 이전)
    sndng_stn_cd: 발송역코드 (예: "3900090"=약목)
    sndng_stn_nm: 발송역명 (예: "약목")
    arvl_stn_cd: 도착역코드 (예: "3900113"=부산진)
    arvl_stn_nm: 도착역명 (예: "부산진")
    item_lclsf_cd: 품목대분류코드 (예: "110")
    item_mclsf_cd: 품목중분류코드 (예: "111")
    item_sclsf_cd: 품목소분류코드 (예: "1111")

Input parameters:

- `arvl_stn_cd` (string)
- `arvl_stn_nm` (string)
- `crtr_ymd` (string)
- `crtr_ymd_gte` (string)
- `crtr_ymd_lte` (string)
- `item_lclsf_cd` (string)
- `item_mclsf_cd` (string)
- `item_sclsf_cd` (string)
- `sndng_stn_cd` (string)
- `sndng_stn_nm` (string)

Output parameters:

- `result` (string)

### `get_transport_stat_codes` (~198 tokens)

수송실적 통계 코드정보 조회. 간선·광역·화물 수송실적에서 사용되는 코드를 조회합니다.
(구 get_carriage_codes — carriageStatistics/codes)
최소 하나 이상의 파라미터를 입력해야 결과가 반환됩니다.

Args:
    code_type: 코드유형 (예: "stn_cd"=역코드, "mrnt_cd"=주운행선코드, "sbwy_ln_cd"=전철선코드)
    code: 코드값 정확일치 (예: "3900023")
    value: 코드명 부분일치 (예: "서울", "경부")

주의: 파라미터 없이 호출하면 0건 반환될 수 있습니다. code_type 지정을 권장합니다.

Input parameters:

- `code` (string)
- `code_type` (string)
- `value` (string)

Output parameters:

- `result` (string)

### `get_train_codes` (~111 tokens)

열차운행 코드정보 조회. 최소 하나 이상의 파라미터 필요.
code_type=코드유형(예:stn_cd,mrnt_cd), code=코드값(정확일치), value=코드명(부분일치)
주요 code_type: stn_cd(역코드), mrnt_cd(주운행선코드)

Input parameters:

- `code` (string)
- `code_type` (string)
- `value` (string)

Output parameters:

- `result` (string)

### `get_train_run_plan` (~157 tokens)

여객열차 운행계획 조회 (열차번호·출발/도착역·계획출발/도착시각).
run_ymd=특정일자(YYYYMMDD), run_ymd_gte/lte=기간 범위,
dptre_stn_nm=출발역명(예:서울), arvl_stn_nm=도착역명(예:부산)

Input parameters:

- `arvl_stn_nm` (string)
- `dptre_stn_nm` (string)
- `run_ymd` (string)
- `run_ymd_gte` (string)
- `run_ymd_lte` (string)

Output parameters:

- `result` (string)

### `get_train_run_info` (~147 tokens)

여객열차 실제 운행정보 조회 (운행일자·역별 실제 출발/도착시각·정차구분).
run_ymd=특정일자(YYYYMMDD), run_ymd_gte/lte=기간 범위,
stn_nm=역명(예:서울), mrnt_nm=주운행선명(예:경부선)

Input parameters:

- `mrnt_nm` (string)
- `run_ymd` (string)
- `run_ymd_gte` (string)
- `run_ymd_lte` (string)
- `stn_nm` (string)

Output parameters:

- `result` (string)

### `get_train_run_history` (~396 tokens)

차세대예약발매 열차 운행내역 조회 (2024-01-01 단일 일자 100건 스냅샷).

※ 데이터 한계 (반드시 참고):
\- 이 데이터는 2024-01-01 하루치만 존재. 다른 날짜 필터 시 0건 반환.
\- 실제 하루 운행 열차는 수백 편이나, 이 스냅샷은 일부 열차·역 포함.
\- 동일 (열차번호, 역)이 2건씩 중복 등장하는 경우 있음 (경유 처리 방식).
\- 정차 순번 필드 없음 → 정확한 정차 순서는 get_train_run_info 또는
  get_train_run_plan으로 교차 확인 필요.
\- 역코드 상세 정보(영문명·지역본부 등)는 korail-codebook의
  decode_station_code 도구로 조회 가능.

파라미터:
\- run_dt: 운행일자 (YYYY-MM-DD, 예: '2024-01-01')
\- trn_no: 열차번호 (예: '6' 또는 '00006', 숫자 자동 변환)
\- stn_nm: 한글역명 부분일치 (예: '서울', '부산')
\- stn_cd: 역코드 정확일치 (예: '3900023')
\- dedupe: True 시 동일 (열차번호+역코드) 중복 레코드 제거 (기본 False)

반환 필드: 운행일자(RUN_DT), 열차번호(TRN_NO), 역코드(STN_CD), 한글역명(KOR_STN_NM)

Input parameters:

- `dedupe` (boolean)
- `run_dt` (string)
- `stn_cd` (string)
- `stn_nm` (string)
- `trn_no` (string)

Output parameters:

- `result` (string)

### `search_urban_station` (~406 tokens)

전국 도시철도 역명으로 운영기관·선·역코드를 검색한다 (다른 조회의 선행 단계).

KRIC API는 운영기관·선·역코드가 필요하므로, 먼저 이 도구로 역을 특정하면
환승역 등 동일 역명의 운영기관 구분을 확인할 수 있다.
station_name: 역명 부분일치 (예: '서울역', '강남'). 미입력 시 operator 기준 전체.
operator: 운영기관 코드(예: 'S1') 또는 명(예: '서울교통공사') 부분일치로 좁힘.


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `operator` (string)
- `station_name` (string)

Output parameters:

- `result` (string)

### `get_urban_station_info` (~320 tokens)

도시철도 역사 기본정보 조회 (주소·좌표·다국어 역명).
station_name: 역명. operator: 환승역 구분용 운영기관 코드/명(선택).

[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_accessibility` (~519 tokens)

도시철도 역사 접근성 시설 조회 (교통약자).

facility_type:
  elevator             엘리베이터 현황
  elevator_route       엘리베이터 이동동선
  elevator_route_detail 엘리베이터 상세 이동동선(경로 텍스트)
  escalator            에스컬레이터 현황
  wheelchair_route     휠체어리프트 이동동선
  wheelchair_lift_loc  휠체어리프트 설치 위치(치수·한계중량)
  safety_step          승강장 안전발판 설치유무
  platform_gap         승강장-차량 이격거리
  braille              점자표시 유무
  disabled_toilet      장애인화장실 위치
  adjacent_elevator    인접 승강기 차량번호
  stair_car            인접 계단 차량번호(휠체어 하차위치)
  all                  위 전체 (역이 1~3개로 특정될 때만)
station_name: 역명. operator: 운영기관 코드/명(선택).


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `facility_type` (string)
- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_amenity` (~369 tokens)

도시철도 역사 편의시설 조회.

amenity_type: toilet(화장실) / nursing_room(수유실) / locker(물품보관함) /
              atm(ATM) / lost_found(유실물센터) / wifi(무선인터넷) / all(전체)
station_name: 역명. operator: 운영기관 코드/명(선택).


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `amenity_type` (string)
- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_safety` (~386 tokens)

도시철도 역사 안전시설 조회.

safety_type: defibrillator(제세동기) / fire_extinguish(소화설비) /
             emergency_phone(비상콜폰) / air_respirator(공기호흡기) /
             screen_door(스크린도어) / safety_fence(승강장 안전펜스) / all(전체)
station_name: 역명. operator: 운영기관 코드/명(선택).


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `operator` (string)
- `safety_type` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_exit_info` (~314 tokens)

도시철도 역사 출구정보 조회 (출구번호·주변시설·거리).
station_name: 역명. operator: 운영기관 코드/명(선택).

[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_transfer_info` (~316 tokens)

도시철도 역사 환승정보 조회 (환승노선·환승거리·동선).
station_name: 역명. operator: 운영기관 코드/명(선택).

[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_platform` (~320 tokens)

도시철도 역사 승강장 정보 조회 (승강장 유형·복합여부·안전발판 등).
station_name: 역명. operator: 운영기관 코드/명(선택).

[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_environment` (~414 tokens)

도시철도 역사 환경측정 정보 조회 (공기질·온도·습도·소음).

measure: air_quality(공기질·미세먼지·CO2) / temperature(온도) /
         humidity(습도) / noise(소음도) / all(전체)
station_name: 역명. operator: 운영기관 코드/명(선택).
주의: 환경측정기는 일부 운영기관·역에만 설치되어 데이터가 없을 수 있다
      (특히 소음도). 측정값에는 측정일시(msmtDttm)가 함께 온다.


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `measure` (string)
- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_timetable` (~382 tokens)

도시철도 역사별 운행시각표(열차 도착·출발시각) 조회.

station_name: 역명. operator: 운영기관 코드/명(선택).
day: 요일 — 평일/휴일/토/일/월~금 또는 전요일. (기본 평일)
express: True면 급행 시각표(운영기관에 따라 미제공일 수 있음).


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `day` (string)
- `express` (boolean)
- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_train_environment` (~499 tokens)

도시철도 열차 차내 환경정보 조회 (CO2·미세먼지·온도·습도·소음 등, 역 무관).

operator: 운영기관 코드(예 'S1') 또는 명(예 '서울교통공사').
train_no: 열차번호(선택). 미입력 시 해당 운영기관 전체 측정 데이터를 반환한다
          (사용자가 열차번호를 모를 때가 많으므로 보통 생략).
measure: 환경측정 항목코드(envrMsmtDvCd) — 1 미세먼지(PM10), 2 CO2, 21 온도,
         22 습도, 23 소음 등. 미입력 시 전체 항목.
참고: 차내 환경 데이터는 서울교통공사(S1)·부산(BS)·대구(DG) 등 일부 기관만 제공.
      한국철도공사(KR)·공항철도(AR) 등은 미제공.


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `measure` (string)
- `operator` (string, required)
- `train_no` (string)

Output parameters:

- `result` (string)

### `get_urban_surroundings` (~377 tokens)

도시철도 역 주변 시설 조회 (대중교통·주차장·자전거).

kind: public_transport(주변 버스 등 대중교통) / parking(주변 주차장) /
      bike_parking(자전거 주차시설) / bike_rental(자전거 대여) / all(전체)
station_name: 역명. operator: 운영기관 코드/명(선택).


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `kind` (string)
- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_movement` (~456 tokens)

도시철도 교통약자 출입구→승강장 이동경로(동선) 조회.

엘리베이터 등 무장애 경로를 출입구부터 승강장까지 단계별 텍스트(mvContDtl)와
안내 이미지(imgPath)로 제공한다.
station_name: 역명. operator: 운영기관 코드/명(선택). line: 노선(선택).
next_station: 열차 진행방면의 '다음 역명'(승강장 방향 특정에 사용). 같은
              노선의 다음 역명을 넣는다. 미입력 시 방면 구분 없이 조회.
참고: 역 내 엘리베이터 상세 동선은 get_urban_accessibility(elevator_route_detail)도 있다.


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최���(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `line` (string)
- `next_station` (string)
- `operator` (string)
- `station_name` (string, required)

Output parameters:

- `result` (string)

### `get_urban_route` (~379 tokens)

도시철도 노선 전체 역 구성(상행~하행 순서) 조회. 역 무관, 노선 단위.

line: 선코드(예 '1','A1','I1') 또는 노선명 일부(예 '1호선','경의중앙').
region: 권역 — 수도권/부산/대구/광주/대전 (또는 코드 01~05).
        수도권 노선은 region을 함께 주면 정확하다.


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `line` (string)
- `region` (string)

Output parameters:

- `result` (string)

### `get_urban_train_composition` (~455 tokens)

도시철도 운영기관별 열차 편성종류 조회 (역 무관).

편성유형코드(cpsTpCd)·편성명·호차별 좌석/출입문수/교통약자석 등을 준다.
이 도구로 얻은 cpsTpCd와 호차(scarNo)를 get_urban_train_facility의
composition_type·scar_seq 인자로 넘겨 차량별 시설을 조회한다.
operator: 운영기관 코드(예 'BS') 또는 명(예 '부산교통공사').
참고: 서울교통공사(S1)·한국철도공사(KR)·공항철도(AR)는 편성데이터 미제공.
      부산(BS)·대구(DG)·인천(IC)·대전(DJ)·광주(GJ) 등은 제공.


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `operator` (string, required)

Output parameters:

- `result` (string)

### `get_urban_train_facility` (~496 tokens)

도시철도 차량(호차)별 시설 조회 (역 무관).

facility_type:
  fire_extinguisher(소화기) / emergency_phone(비상콜폰) /
  crush_hammer(비상탈출망치) / door_manual(출입문 수동설정) / defibrillator(제세동기) /
  pregnant_seat(임산부 배려석) / priority_seat(노약자석) /
  wheelchair_board(휠체어 승차가능) / wheelchair_belt(휠체어 안전벨트) / all(전체)
operator: 운영기관 코드/명. scar_seq: 호차일련번호(scarSqno, 예 '1').
composition_type: 편성유형코드(cpsTpCd). get_urban_train_composition으로 먼저 확인한다.
주의: 운영기관마다 보유 항목이 달라 일부 종류는 빈 결과일 수 있다.


[답변 지침] _meta의 '데이터수정일'(KRIC 데이터 최종수정 시점, 측정성 데이터는 '측정시점')을 근거로 데이터 시점을 알리되, 수정일에 따라 톤을 달리하라.
\- 최근(약 2년 이내, 예 2025~2026): 답변 끝에 '데이터는 OOOO년 기준'을 간결히 한 줄만. 경고 문구나 고객센터 전화번호를 따로 나열하지 마라.
\- 오래됨(2019~2021 등): 한 줄 고지에 더해 '최신 현황과 다를 수 있어 운영기관 확인 권장'을 딱 한 번만 덧붙여라. 전화번호는 사용자가 묻거나 응급·안전 관련일 때만.
여러 데이터셋을 함께 보여줄 땐 가장 오래된 수정일 기준으로 한 번만 고지하면 된다. 시점 고지·주의 문구를 답변 안에서 반복하지 마라. 결과가 비어 있으면 지어내지 말고 '해당 데이터 없음'을 분명히 알려라.

Input parameters:

- `composition_type` (string, required)
- `facility_type` (string)
- `operator` (string, required)
- `scar_seq` (string, required)

Output parameters:

- `result` (string)

### `get_customer_satisfaction_stats` (~130 tokens)

고객의소리 만족도 일별 통계 조회.

철도 고객센터 만족도 조사 결과를 일별로 제공한다.
참여수와 평균 점수(100점 만점)를 확인할 수 있다.

date_from / date_to: 조사일자 범위 (예: "2025-01-01", "2025-03-31")
day_of_week: 요일 필터 (예: "월요일", "토요일")

Input parameters:

- `date_from` (string)
- `date_to` (string)
- `day_of_week` (string)

Output parameters:

- `result` (string)

### `get_consultation_types` (~91 tokens)

철도 고객센터 상담유형 코드 조회.

상담 대분류(MAJOR_COUNSEL), 중분류(MINOR_COUNSEL), 그룹명,
상담코드(COUNSEL_CODE), 유형명을 제공한다.

keyword: 그룹명 또는 유형명 부분일치 필터 (예: "운임", "예매", "분실")

Input parameters:

- `keyword` (string)

Output parameters:

- `result` (string)

### `get_consultation_departments` (~75 tokens)

철도 고객센터 담당 부서(역) 목록 조회.

본부명, 담당센터명(역명), 표기명을 제공한다.

headquarter: 본부명 부분일치 필터 (예: "강원", "대구", "서울")

Input parameters:

- `headquarter` (string)

Output parameters:

- `result` (string)

### `get_advance_disclosure` (~74 tokens)

홈페이지 사전정보공표 목록 조회.

공표대상, 공표시기, 담당부서 코드를 제공한다.
경영 투명성 확인 또는 특정 공표 항목 탐색에 활용.

keyword: 공표대상 부분일치 필터

Input parameters:

- `keyword` (string)

Output parameters:

- `result` (string)

### `get_advance_disclosure_detail` (~77 tokens)

홈페이지 사전정보공표 세부 내역 조회.

공표대상 제목, 담당부서코드, 조회수를 제공한다.

keyword: 제목 부분일치 필터
dept_code: 담당부서 코드 일치 필터

Input parameters:

- `dept_code` (string)
- `keyword` (string)

Output parameters:

- `result` (string)

### `get_advance_disclosure_files` (~63 tokens)

홈페이지 사전정보공표 첨부파일 목록 조회.

첨부파일명, 파일 확장자, 연결된 공표대상 번호를 제공한다.

keyword: 파일명 부분일치 필터

Input parameters:

- `keyword` (string)

Output parameters:

- `result` (string)

### `get_info_disclosure_dept` (~60 tokens)

정보공개 담당 부서 목록 조회.

부서코드, 부서명, 상위부서명(영문)을 제공한다.

keyword: 부서명 부분일치 필터

Input parameters:

- `keyword` (string)

Output parameters:

- `result` (string)

### `get_info_disclosure_codes` (~68 tokens)

정보공개 시스템 공통코드 조회.

분류코드(CODETYPE), 분류코드명(CODENAME), 사용여부를 제공한다.

code_type: CODETYPE 일치 필터 (빈값=전체)

Input parameters:

- `code_type` (string)

Output parameters:

- `result` (string)

### `get_homepage_dept` (~127 tokens)

KORAIL 홈페이지 부서 정보 조회 (전체 약 500건).

부서명(DEPT_NM), 부서코드(DEPT_CODE), 상위부서코드(UPPER_DEPT_CODE)를 제공한다.

keyword: 부서명 부분일치 필터 (예: "본부", "처", "단", "TF")
         ※ 전체 데이터가 크므로 keyword 없이 호출하면 처음 200건만 반환됨.
            전체 조회가 필요하면 keyword를 여러 번 나눠 호출할 것.

Input parameters:

- `keyword` (string)

Output parameters:

- `result` (string)

### `get_homepage_position` (~52 tokens)

KORAIL 홈페이지 직책 코드 조회.

직책 ID, 직책명, 직책코드를 제공한다.

keyword: 직책명 부분일치 필터

Input parameters:

- `keyword` (string)

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/lovelyquality-korail-mcp/korail-mcp#diagnostics

## Score history

- 2026-09-21: 69
- 2026-09-20: 68
- 2026-09-19: 68
- 2026-09-18: 67
- 2026-09-17: 67
- 2026-09-16: 66
- 2026-09-15: 66
- 2026-09-14: 50
- 2026-09-13: 65
- 2026-09-12: 65
- 2026-09-11: 64
- 2026-09-10: 64
- 2026-09-09: 63
- 2026-09-08: 63
- 2026-09-07: 62
- 2026-09-06: 62
- 2026-09-05: 61
- 2026-09-04: 61
- 2026-09-03: 60
- 2026-09-02: 60
- 2026-09-01: 57
- 2026-08-31: 57
- 2026-08-30: 57
- 2026-08-29: 57
- 2026-08-28: 57
- 2026-08-27: 57
- 2026-08-26: 57

## Common questions

### What is the io.github.lovelyquality/korail-mcp server?

io.github.lovelyquality/korail-mcp is listed in the public MCP registry as io.github.lovelyquality/korail-mcp. 한국철도공사(KORAIL) 공공데이터 MCP 서버, 98개 도구, API 키 신청 불필요. 역·열차·화물·통계 데이터 자연어 조회. This page covers its PyPI package (korail-mcp).

### Is the io.github.lovelyquality/korail-mcp server safe to use?

io.github.lovelyquality/korail-mcp scores 69 out of 100 on VerifyMCP. We recorded 10 known advisories against it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.lovelyquality/korail-mcp server expose?

io.github.lovelyquality/korail-mcp exposes 98 tools: search_station, decode_station_code, search_route, list_stations_by_region, get_station_facilities, and 93 more. Their descriptions and schemas cost roughly 18,422 tokens of context every time the server is loaded.

### Is the io.github.lovelyquality/korail-mcp server still maintained?

io.github.lovelyquality/korail-mcp is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- PyPI project: https://pypi.org/project/korail-mcp/
- Socket report: https://socket.dev/pypi/package/korail-mcp
- Repository: https://github.com/lovelyquality/korail-mcp
- Changelog RSS feed: https://verifymcp.io/servers/lovelyquality-korail-mcp/korail-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/lovelyquality-korail-mcp/korail-mcp.json
- HTML version of this page: https://verifymcp.io/servers/lovelyquality-korail-mcp/korail-mcp
