Skip to main content
Glama
rubatoyd

io.github.rubatoyd/kosis-openapi-mcp

by rubatoyd

kosis-openapi-mcp

CI Release Downloads

๐Ÿ“ˆ ์‚ฌ์šฉ๋Ÿ‰ โ€” ์ตœ๊ทผ 14์ผ ์กฐํšŒ 0ํšŒ(๊ณ ์œ  0) ยท ํด๋ก  0ํšŒ(๊ณ ์œ  0) ยท ๋ฆด๋ฆฌ์Šค ์ž์‚ฐ ๋ˆ„์  ๋‹ค์šด๋กœ๋“œ 93

์ผ๋ณ„ ํด๋ก ยท์กฐํšŒ ์ถ”์ด

2026-10-26 ์ž๋™ ๊ฐฑ์‹  ยท ์ „์ฒด ์ด๋ ฅ์€ docs/usage.csv. GitHub ํŠธ๋ž˜ํ”ฝ ํ†ต๊ณ„๋Š” 14์ผ ์ฐฝ๋งŒ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ด ์ €์žฅ์†Œ๊ฐ€ ๋งค์ผ ์ฐ์–ด ๋ˆ„์ ํ•œ๋‹ค.

KOSIS(๊ตญ๊ฐ€ํ†ต๊ณ„ํฌํ„ธ) ๊ณต์œ ์„œ๋น„์Šค OpenAPI ๋ฅผ ๊ฒ€์ƒ‰ยท์ˆ˜์ง‘ํ•˜๋Š” MCP ์„œ๋ฒ„ + CLI.

ํ†ต๊ณ„ํ‘œ๋ฅผ ์ฐพ๊ณ , ํ•ญ๋ชฉยท๋ถ„๋ฅ˜ยท์ฃผ๊ธฐ๋ฅผ ํ™•์ธํ•˜๊ณ , ์ˆ˜์น˜๋ฅผ ๋ฐ›์•„ xlsxยทcsvยทjsonยทsqlite ๋กœ ๋‚ด๋ณด๋‚ธ๋‹ค. 4๋งŒ ์…€ ์ œํ•œ์— ๊ฑธ๋ฆฌ๋ฉด ๊ธฐ๊ฐ„์„ ์•Œ์•„์„œ ์ชผ๊ฐœ ์ „์ˆ˜๋ฅผ ํšŒ์ˆ˜ํ•œ๋‹ค.

์ž๋งค ์ €์žฅ์†Œ: law-openapi-mcp(๋ฒ•์ œ์ฒ˜) ยท na-openapi-mcp(๊ตญํšŒ๋„์„œ๊ด€) ยท nl-openapi-mcp(๊ตญ๋ฆฝ์ค‘์•™๋„์„œ๊ด€) ยท kci-openapi-mcp ยท scienceON-mcp


๋ฌด์—‡์„ ๋Œ๋ ค์ฃผ๋‚˜

ํ†ต๊ณ„ ๊ทธ ์ž์ฒด๋‹ค. ํ‘œ์˜ ๋ฉ”ํƒ€(์ž‘์„ฑ๊ธฐ๊ด€ยท์กฐ์‚ฌ๋ช…ยท์ˆ˜๋ก๊ธฐ๊ฐ„ยท์ฃผ๊ธฐ)์™€ ์ˆ˜์น˜(์‹œ์  ร— ๋ถ„๋ฅ˜ ร— ํ•ญ๋ชฉ โ†’ ๊ฐ’)๋ฅผ ๋„๋ฉ”์ธ ๊ทธ๋Œ€๋กœ ์ค€๋‹ค.

์„œ์ง€ยท์ธ์šฉ ํ˜•์‹์€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ(kosis_citation)์œผ๋กœ ๋”ฐ๋กœ ๋‘์—ˆ๋‹ค. ์„œ์ง€๊ด€๋ฆฌ ๋„๊ตฌ๋กœ ๋„˜๊ธธ ๋•Œ๋งŒ ์“ฐ๋ฉด ๋˜๊ณ , ๊ทธ ๋„๊ตฌ๊ฐ€ ์•„๋Š” ์œ ํ˜• ๋ชฉ๋ก์ด ํ†ต๊ณ„ ์‘๋‹ต์˜ ๋ชจ์–‘์„ ๋ฐ”๊พธ์ง€๋Š” ์•Š๋Š”๋‹ค.

Related MCP server: Korea Stats MCP

์ค€๋น„๋ฌผ

์ธ์ฆํ‚ค ํ•˜๋‚˜. kosis.kr ํšŒ์›๊ฐ€์ž… ํ›„ ๊ณต์œ ์„œ๋น„์Šค ํ™œ์šฉ์‹ ์ฒญ(์ž๋™ ์Šน์ธ).

cp .env.example .env    # KOSIS_API_KEY=... ๋ฅผ ์ฑ„์šด๋‹ค

๐Ÿ”ด ๋ฐœ๊ธ‰๋œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋„ฃ์œผ์„ธ์š”. base64 ์ฒ˜๋Ÿผ ๋ณด์—ฌ๋„(๋์ด =) ๋””์ฝ”๋“œํ•˜๋ฉด err 11(์œ ํšจํ•˜์ง€ ์•Š์€ ์ธ์ฆํ‚ค)์ด ๋‚ฉ๋‹ˆ๋‹ค.

์„ค์น˜ยท์‹คํ–‰

uv sync
uv run kosis status
uv run kosis search ์‚ฌ๊ต์œก๋น„
uv run kosis meta --org 101 --tbl DT_1PE201 --kind ITM     # ํ•ญ๋ชฉ ID ํ™•์ธ
uv run kosis data --org 101 --tbl DT_1PE201 --prd Y --start 2020 --end 2025
uv run kosis collect --org 101 --tbl DT_1B040A3 --prd M --start 202101 --end 202512
# ๋ถ„๋ฅ˜์ถ•์ด ์—ฌ๋Ÿฟ์ธ ํ‘œ๋„ ๊ทธ๋Œ€๋กœ โ€” ์ถ• ๊ฐœ์ˆ˜๋Š” ์•Œ์•„์„œ ๋งž์ถ˜๋‹ค(์‚ฐ์—… ร— ๊ทœ๋ชจ)
uv run kosis data --org 118 --tbl DT_118N_MON051 --prd H --start 202401 --end 202401
# ์ฃผ์š”์ง€ํ‘œ(ํ†ต๊ณ„ํ‘œ์™€ ๋‹ค๋ฅธ ๊ณ„์—ด) โ€” ํ‘œ ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋„ ๊ฐ’๊นŒ์ง€ ๋ฐ”๋กœ
uv run kosis indicator ์ถœ์‚ฐ์œจ
uv run kosis indicator-data --id 13 --start 2020 --end 2025

MCP ๋“ฑ๋ก:

{
  "mcpServers": {
    "kosis": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/rubatoyd/kosis-openapi-mcp", "kosis-mcp"],
      "env": { "KOSIS_API_KEY": "๋ฐœ๊ธ‰๋ฐ›์€_๊ฐ’_๊ทธ๋Œ€๋กœ" }
    }
  }
}

PyPI ์— ์˜ฌ๋ฆฐ ํŒจํ‚ค์ง€๊ฐ€ ์•„์ง ์—†์–ด ์ €์žฅ์†Œ์—์„œ ๋ฐ”๋กœ ๋ฐ›์•„ ์“ด๋‹ค(์ž๋งค ์ €์žฅ์†Œ์™€ ๊ฐ™์€ ๋ฐฉ์‹). main ์˜ HEAD ๋ฅผ ์“ฐ๋ฏ€๋กœ ๋‹ค์Œ ๊ธฐ๋™์— ์ตœ์‹ ์ด ๋ฐ˜์˜๋œ๋‹ค.

MCP ๋„๊ตฌ

๋„๊ตฌ

ํ•˜๋Š” ์ผ

kosis_status

์ธ์ฆํ‚ค ๋ณด์œ  ์—ฌ๋ถ€ + ์‹ค์ œ ์™•๋ณต 1ํšŒ

kosis_guide

์„œ๋น„์Šค๋ทฐยท์ฃผ๊ธฐยท๋ฉ”ํƒ€ ์ข…๋ฅ˜ยท์˜ค๋ฅ˜์ฝ”๋“œยทํ•œ๊ณ„ยทํ•จ์ •

kosis_search

ํ†ต๊ณ„ํ‘œ ์ฐพ๊ธฐ(ํ†ตํ•ฉ๊ฒ€์ƒ‰)

kosis_list

ํ†ต๊ณ„๋ชฉ๋ก ํŠธ๋ฆฌ ํ•œ ๋‹จ๊ณ„(์ฃผ์ œ๋ณ„ยท๊ธฐ๊ด€๋ณ„ โ€ฆ)

kosis_meta

ํ‘œ์˜ ํ•ญ๋ชฉ(ITM)ยท๋ถ„๋ฅ˜(NCD)ยท์ฃผ๊ธฐ(PRD)ยท์ถœ์ฒ˜ ๋“ฑ

kosis_explain

ํ†ต๊ณ„์„ค๋ช…(์กฐ์‚ฌ๊ฐœ์š”)

kosis_data

์ˆ˜์น˜ โ€” 4๋งŒ ์…€ ์ดˆ๊ณผ ์‹œ ๊ธฐ๊ฐ„ ์ž๋™ ๋ถ„ํ• 

kosis_citation

ํ‘œ๋ฅผ ์„œ์ง€ ์นธ์œผ๋กœ ํˆฌ์˜(๋ถ€๊ฐ€ ๊ธฐ๋Šฅ)

kosis_collect

์ˆ˜์น˜๋ฅผ xlsx/csv/json/sqlite ๋กœ ์ €์žฅ

kosis_indicator_search

์ฃผ์š”์ง€ํ‘œ ์ฐพ๊ธฐ(ํ†ต๊ณ„ํ‘œ์™€ ๋‹ค๋ฅธ ๊ณ„์—ด) โ€” ํŽ˜์ด์ง• ์ „์ˆ˜ ํšŒ์ˆ˜

kosis_indicator_data

์ฃผ์š”์ง€ํ‘œ์˜ ์‹œ์ ๋ณ„ ์ˆ˜์น˜ โ€” ์„œ๋ฒ„๊ฐ€ ์•ˆ ๊ฑฐ๋ฅด๋Š” ์‹œ์ ์„ ๋Œ€์‹  ๊ฑฐ๋ฅธ๋‹ค

์•Œ์•„ ๋‘˜ ๊ฒƒ (์ „๋ถ€ ์‹ค์ธก)

172์ชฝ์งœ๋ฆฌ ๊ณต์‹ ๊ฐœ๋ฐœ๊ฐ€์ด๋“œ๊ฐ€ ์žˆ๋Š”๋ฐ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์…‹์ด ๊ทธ ์•ˆ์— ์—†๊ฑฐ๋‚˜ ํ‹€๋ฆฌ๋‹ค:

  • ๐Ÿ”ด jsonVD=Y ๊ฐ€ ์—†์œผ๋ฉด JSON ์ด ์•„๋‹ˆ๋‹ค โ€” ํ‚ค์— ๋”ฐ์˜ดํ‘œ๊ฐ€ ์—†๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ด ์˜จ๋‹ค. ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ฐ€์ด๋“œ์˜ ์ž…๋ ฅ ๋ณ€์ˆ˜ ํ‘œ์— ์—†๊ณ  JSP ์˜ˆ์ œ ์•ˆ์—๋งŒ ์žˆ๋‹ค.

  • ๐Ÿ”ด ํ†ต๊ณ„์ž๋ฃŒ๋ฅผ orgId/tblId ๋กœ ๋ถ€๋ฅด๋ ค๋ฉด /openapi/Param/statisticsParameterData.do ๋ฅผ ์จ์•ผ ํ•œ๋‹ค. ๊ฐ€์ด๋“œ๊ฐ€ ํ‘œ๋ฅผ ์‹ค์–ด ๋‘” statisticsData.do ๋กœ ๋ณด๋‚ด๋ฉด ํ•ญ์ƒ err 20.

  • ๐Ÿ”ด ์ธ์ฆํ‚ค๋ฅผ ๋””์ฝ”๋“œํ•˜์ง€ ๋ง ๊ฒƒ.

๊ทธ ๋ฐ–์—:

  • ๐Ÿ”ด ๋ถ„๋ฅ˜์ถ•(objL) ๊ฐœ์ˆ˜๊ฐ€ ํ‘œ์˜ ์ถ• ์ˆ˜์™€ ์ •ํ™•ํžˆ ๋งž์•„์•ผ ํ•œ๋‹ค โ€” ๋ชจ์ž๋ผ๋ฉด err 20 (objL), ๋„˜์น˜๋ฉด err 21. ๊ทธ๋Ÿฐ๋ฐ ์ถ• ๊ฐœ์ˆ˜๋ฅผ ์•Œ๋ ค ์ฃผ๋Š” ๋ฉ”ํƒ€ ์„œ๋น„์Šค๊ฐ€ ์—†๋‹ค(NCD ๋Š” ๋ถ„๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ ๊ทœ์ˆ˜๋ก ์‹œ์ ์ด๊ณ  OBJยทCLS ๋Š” err 30). kosis_data ๊ฐ€ ์ถ•์„ ํ•˜๋‚˜์”ฉ ๋Š˜๋ ค ๋งž์ถ”๋ฏ€๋กœ ๋‹ค์ถ• ํ‘œ(์˜ˆ: ์‚ฐ์—… ร— ๊ทœ๋ชจ)๋„ ๊ทธ๋ƒฅ ๋ถ€๋ฅด๋ฉด ๋œ๋‹ค โ€” ํ™•์ •๋œ ์ถ•์€ meta.obj_levels ์— ์‹ค๋ฆฐ๋‹ค.

  • ๋ชจ๋“  ์‹คํŒจ๊ฐ€ HTTP 200 ์ด๋‹ค. ์„ฑ๊ณต์€ ๋ฐฐ์—ด, ์‹คํŒจ๋Š” {err, errMsg} ๊ฐ์ฒด. Content-Type ์€ ๋‘˜ ๋‹ค text/html ์ด๋ผ ๋ฏฟ์„ ์ˆ˜ ์—†๋‹ค.

  • err 30(๊ฒฐ๊ณผ ์—†์Œ)์€ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋‹ค โ€” 0๊ฑด๊ณผ ์‹คํŒจ๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ๋ณด๊ณ ํ•œ๋‹ค.

  • ์š”์ฒญ๋‹น 4๋งŒ ์…€(err 31) ยท ๋ถ„๋‹น 200๊ฑด(err 40).

  • ํŽ˜์ด์ง•์ด ์—†๋‹ค โ€” ํ†ตํ•ฉ๊ฒ€์ƒ‰ยท๋ชฉ๋กยทํ†ต๊ณ„์ž๋ฃŒ๋Š” ์„œ๋ฒ„๊ฐ€ ์ค€ ๋งŒํผ์ด ์ „๋ถ€๋‹ค(์กฐ์šฉํžˆ ์ž๋ฅด์ง€ ์•Š๊ณ  ์•Œ๋ฆฐ๋‹ค). ๋‹จ ํ†ต๊ณ„์ฃผ์š”์ง€ํ‘œ ๊ณ„์—ด๋งŒ ์˜ˆ์™ธ๋กœ pageNoยทnumOfRows ๋ฅผ ๋ฐ›๊ณ  ์•ˆ ์ฃผ๋ฉด 10๊ฑด์—์„œ ์ž˜๋ฆฐ๋‹ค โ€” kosis_indicator_* ๊ฐ€ ๋๊นŒ์ง€ ๋„˜๊ฒจ ์ „์ˆ˜๋ฅผ ํšŒ์ˆ˜ํ•œ๋‹ค(docs ยง7).

  • ๐Ÿ”ด ์ฃผ์š”์ง€ํ‘œ ๊ณ„์—ด์€ ์‹œ์  ๋ฒ”์œ„๋ฅผ ๊ฑฐ๋ฅด์ง€ ์•Š๋Š”๋‹ค(๋ชจ๋“œ ์Šค์œ„์น˜์ผ ๋ฟ ๊ฐ’์€ ๋ฌด์‹œ๋œ๋‹ค). kosis_indicator_data ๊ฐ€ ์ „ ๊ตฌ๊ฐ„์„ ๋ฐ›์•„ ์ง์ ‘ ๊ฑฐ๋ฅด๊ณ  meta.server_filtered=false ๋กœ ์•Œ๋ฆฐ๋‹ค.

  • parentListId ๋Š” ํ•„์ˆ˜๋ผ๊ณ  ์ ํ˜€ ์žˆ์ง€๋งŒ ์ƒ๋žตํ•˜๋ฉด ์ตœ์ƒ์œ„๊ฐ€ ์˜จ๋‹ค.

์ž์„ธํ•œ ๊ทผ๊ฑฐ์™€ ์žฌํ˜„ ๋ฐฉ๋ฒ•์€ docs/KOSIS_API_GUIDE.md.

๋ผ์ด์„ ์Šค

MIT

Available Tools

11 tools
kosis_citationA
Read-only

ํ†ต๊ณ„ํ‘œ ํ•˜๋‚˜๋ฅผ ์„œ์ง€(์ธ์šฉ) ์นธ์œผ๋กœ ํˆฌ์˜ํ•œ๋‹ค โ€” ์„ ํƒ ๊ธฐ๋Šฅ.

โš ๏ธ ์ด ๋„๊ตฌ๋Š” ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์ด๋‹ค. ํ†ต๊ณ„๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ฉด kosis_search(ํ‘œ ๋ฉ”ํƒ€)์™€ kosis_data(์ˆ˜์น˜)๊ฐ€ ๋ณธ๋ น์ด๊ณ , ์ด ๋„๊ตฌ๋Š” ์„œ์ง€๊ด€๋ฆฌ ๋„๊ตฌ๋กœ ๋„˜๊ธธ ๋•Œ๋งŒ ์“ด๋‹ค.

KOSIS ๋Š” ์กฐ์‚ฌ(STAT_NM)์™€ ํ‘œ(TBL_NM) ๋‘ ์ธต์„ ๋‹ค ์ฃผ๋ฏ€๋กœ ์–ด๋А ์ธต์œผ๋กœ ์ธ์šฉํ• ์ง€๋Š” ๋ถ€๋ฅด๋Š” ์ชฝ์ด ๊ณ ๋ฅธ๋‹ค โ€” container_title ์ด ์กฐ์‚ฌ์ธต, title ์ด ํ‘œ์ธต์ด๋‹ค.

Args: accessed: ์กฐํšŒ์ผ์ž(YYYY-MM-DD). ๋ฐ์ดํ„ฐ์…‹ ์ธ์šฉ์—๋Š” ์กฐํšŒ์ผ์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

NameRequiredDescriptionDefault
org_idYes
tbl_idYes
accessedNo

TDQS

A3.9/5.0
Behavior3/5

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

No usable annotation flags are verifiable in this context, so the description carries the transparency burden. It adds genuine behavioral context: the KOSIS two-layer (STAT_NM/TBL_NM) structure, the caller-driven layer choice, and the accessed-date requirement for dataset citations. However, it never states what the tool returns (citation string? formatting?), whether the operation is pure/read-only, or any failure behavior โ€” gaps for a tool with no output schema.

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?

Purpose is front-loaded, and the โš ๏ธ block economically steers the agent away from overuse by naming alternatives. The layer-semantics paragraph is the longest section but is justified because it determines citation structure. The trailing Args line is minimal; each sentence 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 3-parameter, no-nested, no-output-schema tool, the description covers purpose, usage conditions, and layer semantics well. But because no output schema exists, the description should explain the return value, and it does not; two of three parameters also remain under-documented. Adequate for a simple auxiliary tool, with clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must document parameters; it explicitly covers only 'accessed' (YYYY-MM-DD and why it is needed). The two-layer discussion indirectly hints at what 'id' refers to (a table or survey), but the 'style' parameter is never mentioned and no enum/default guidance exists โ€” a meaningful gap for a citation-formatting tool.

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 and resource: 'ํ†ต๊ณ„ํ‘œ ํ•˜๋‚˜๋ฅผ ์„œ์ง€(์ธ์šฉ) ์นธ์œผ๋กœ ํˆฌ์˜ํ•œ๋‹ค' โ€” projecting one statistical table into a citation field, explicitly marked as an auxiliary feature. It also names sibling tools (kosis_search for metadata, kosis_data for numbers) as the mainline, which differentiates this tool without requiring an agent to open other schemas.

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?

Gives explicit when-to-use (only when handing off to a bibliographic management tool) and when-not-to (when the goal is using statistics, kosis_search and kosis_data are the main tools). It further instructs the caller to choose the citation layer โ€” container_title for the survey layer, title for the table layer โ€” leaving no ambiguity about selection criteria.

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

kosis_collectC

ํ†ต๊ณ„ํ‘œ ์ˆ˜์น˜๋ฅผ ๋ฐ›์•„ xlsx/csv/json/sqlite ๋กœ ์ €์žฅํ•œ๋‹ค.

โš ๏ธ ๋ถ„๋ฅ˜ ์ถ•์ด ํ‘œ๋งˆ๋‹ค ๋‹ค๋ฅด๋ฏ€๋กœ ์—ด ๊ตฌ์„ฑ์ด ๊ฐ€๋ณ€์ด๋‹ค โ€” ๋ถ„๋ฅ˜ ์ด๋ฆ„์ด ๊ทธ๋Œ€๋กœ ์—ด์ด ๋œ๋‹ค. ์ถ• ๊ฐœ์ˆ˜๋„ ํ‘œ๋งˆ๋‹ค ๋‹ค๋ฅด์ง€๋งŒ obj_l2~obj_l8 ์„ ๋น„์›Œ ๋‘๋ฉด ์ž๋™์œผ๋กœ ๋งž์ถ˜๋‹ค.

NameRequiredDescriptionDefault
endNo
nameNokosis
itemsNoALL
startNo
obj_l1NoALL
obj_l2No
obj_l3No
obj_l4No
obj_l5No
obj_l6No
obj_l7No
obj_l8No
org_idYes
prd_seYes
recentNo
tbl_idYes
formatsNo
out_dirYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, openWorldHint=true, and destructiveHint=false. The description adds useful behavior: saving to files, variable column structure, and auto-adjustment of axes. However, it does not disclose other behaviors such as file overwriting, authentication requirements, or rate limits. It adds some value beyond annotations but is not comprehensive.

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 concise with two sentences. The first sentence states the main purpose, and the second warns about variable columns. It is efficient and front-loaded, though the second sentence is a bit long and could be split for clarity.

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 the tool's complexity (18 parameters, no output schema, no enums), the description is far from complete. It does not explain required parameters like org_id, tbl_id, or prd_se, nor optional ones like start/end/recent. The warning about variable columns is helpful, but the overall context is insufficient for an agent to call the tool correctly without further investigation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains obj_l2~obj_l8 auto-adjustment and the formats parameter implicitly (xlsx/csv/json/sqlite). However, it leaves the other 14 parameters (org_id, tbl_id, prd_se, start, end, recent, name, items, obj_l1) undocumented. This is a significant gap for a tool with 18 parameters.

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 clear verb+resource: receives statistics table values and saves them as xlsx/csv/json/sqlite. It also mentions the variable column structure, but does not differentiate from sibling tools like kosis_data or kosis_indicator_data, which may also fetch data. The purpose is specific but not distinguished from alternatives.

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 vs alternatives. It provides a technical note about variable columns and auto-adjustment, but does not state when this tool is preferred over siblings like kosis_data. The agent is left to infer usage from the name and description.

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

kosis_dataA
Read-only

ํ†ต๊ณ„ํ‘œ์˜ ์ˆ˜์น˜๋ฅผ ๋ฐ›๋Š”๋‹ค.

๐Ÿ”ด ๋ถ„๋ฅ˜์ถ•์ด ์—ฌ๋Ÿฟ์ธ ํ‘œ(์˜ˆ: ์‚ฐ์—… ร— ๊ทœ๋ชจ)๋„ ๊ทธ๋ƒฅ ๋ถ€๋ฅด๋ฉด ๋œ๋‹ค. KOSIS ๋Š” ์š”์ฒญ์˜ ๋ถ„๋ฅ˜์ถ• ๊ฐœ์ˆ˜๊ฐ€ ํ‘œ์˜ ์ถ• ๊ฐœ์ˆ˜์™€ ์ •ํ™•ํžˆ ๋งž๊ธฐ๋ฅผ ์š”๊ตฌํ•˜๋Š”๋ฐ(๋ชจ์ž๋ผ๋ฉด err 20 (objL), ๋„˜์น˜๋ฉด err 21) ์ถ• ๊ฐœ์ˆ˜๋ฅผ ์•Œ๋ ค ์ฃผ๋Š” ๋ฉ”ํƒ€๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋„๊ตฌ๊ฐ€ ์ถ•์„ ํ•˜๋‚˜์”ฉ ๋Š˜๋ ค ๊ฐ€๋ฉฐ ๋งž์ถ˜๋‹ค โ€” ๊ฒฐ๊ณผ์˜ meta.obj_levels ์— ํ™•์ •๋œ ์ถ•์ด ์‹ค๋ฆฐ๋‹ค.

Args: org_id: ๊ธฐ๊ด€ ID(์˜ˆ: '101'). tbl_id: ํ†ต๊ณ„ํ‘œ ID(์˜ˆ: 'DT_1B040A3'). prd_se: ์ˆ˜๋ก์ฃผ๊ธฐ โ€” Y(๋…„)ยทH(๋ฐ˜๊ธฐ)ยทQ(๋ถ„๊ธฐ)ยทM(์›”)ยทD(์ผ). kosis_meta(kind='PRD') ๋กœ ํ™•์ธ. start, end: ์‹œ์  ๋ฒ”์œ„(์˜ˆ: '202101''202512'). ๐Ÿ”ด ์ด ๋ฐฉ์‹์ด๋ฉด 4๋งŒ ์…€์„ ๋„˜์–ด๋„ ์ž๋™์œผ๋กœ ๊ธฐ๊ฐ„์„ ์ชผ๊ฐœ ์ „์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค. recent: ์ตœ๊ทผ N๊ฐœ ์‹œ์ . start/end ๋Œ€์‹  ์“ด๋‹ค(์ด ๋ฐฉ์‹์€ ์ž๋™ ๋ถ„ํ• ์ด ์•ˆ ๋œ๋‹ค). obj_l1: ๋ถ„๋ฅ˜1 โ€” 'ALL' ์ „์ฒด, '11' ํŠน์ •, '11*' ํ•˜์œ„ ์ „์ฒด, '11+21' ์—ฌ๋Ÿฟ. obj_l2 ~ obj_l8: ๋ถ„๋ฅ˜28. ๋น„์›Œ ๋‘๋ฉด ํ•„์š”ํ•œ ๋งŒํผ 'ALL' ๋กœ ์ž๋™์œผ๋กœ ์ฑ„์šด๋‹ค. 4๋งŒ ์…€(err 31)์— ๊ฑธ๋ฆด ๋•Œ ํŠน์ • ์ฝ”๋“œ๋กœ ์ขํžˆ๋Š” ์ž๋ฆฌ์ด๊ธฐ๋„ ํ•˜๋‹ค. items: ํ•ญ๋ชฉ โ€” 'ALL' ๋˜๋Š” ํ•ญ๋ชฉ ID(kosis_meta(kind='ITM')). max_rows: ๋Œ๋ ค์ค„ ์ตœ๋Œ€ ํ–‰ ์ˆ˜(ํŒŒ์ผ๋กœ ๋ฐ›์œผ๋ ค๋ฉด kosis_collect).

NameRequiredDescriptionDefault
endNo
itemsNoALL
startNo
obj_l1NoALL
obj_l2No
obj_l3No
obj_l4No
obj_l5No
obj_l6No
obj_l7No
obj_l8No
org_idYes
prd_seYes
recentNo
tbl_idYes
max_rowsNo

TDQS

A4.8/5.0
Behavior5/5

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

The description richly discloses behaviors beyond annotations: it explains automatic axis-count matching (with error codes 20/21), automatic period splitting for >40,000 cells, auto-filling of obj_l2-8 with 'ALL', and the presence of meta.obj_levels in the result. It also notes the 40,000-cell limit (err 31). These are valuable behavioral traits not covered by the readOnlyHint/openWorldHint annotations.

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 well-structured: a one-line summary, a highlighted note about classification axes, then a bulleted Args list. Key behaviors are front-loaded with red emojis to draw attention. Every sentence adds valueโ€”no fluff or repetition. It is detailed but efficiently organized.

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 complexity (16 params, no output schema, no enums), the description is remarkably complete. It covers error conditions, parameter relationships, alternatives, and behavioral nuances. It mentions the result's meta.obj_levels, which gives insight into the return structure. An agent can reliably call this tool correctly without additional documentation.

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?

With 0% schema description coverage, the description fully compensates by documenting all 16 parameters. It explains each parameter's purpose, format (e.g., '101' for org_id, 'DT_1B040A3' for tbl_id), valid values (Y/H/Q/M/D for prd_se), and special behaviors (wildcards like '11*', multiple codes '11+21', and auto-fill logic). This is exceptional given the schema provides no help.

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 clear, specific verb and resource: 'Gets the numbers of a statistical table.' This unambiguously states the tool's purpose and inherently distinguishes it from siblings like kosis_meta (metadata) and kosis_search. It is not a tautology and adds concrete scope.

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

Usage Guidelines4/5

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

The description provides explicit alternatives: it directs users to kosis_collect for file retrieval and to kosis_meta for validating prd_se and items. It also explains when to use start/end vs recent and the auto-fill behavior for obj_l2-8. However, it does not explicitly contrast with kosis_indicator_data, a sibling that might overlap, so it stops short of a perfect 5.

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

kosis_explainB
Read-only

ํ†ต๊ณ„์„ค๋ช…(์กฐ์‚ฌ๊ฐœ์š”) โ€” ๋ชฉ์ ยท๊ทผ๊ฑฐยท์ฃผ๊ธฐยท๋ฒ”์œ„ ๋“ฑ.

ํ†ต๊ณ„ํ‘œ์—๋Š” ์ดˆ๋ก์ด ์—†์œผ๋ฏ€๋กœ, ๊ด€๋ จ๋„ ์ฑ„์ ์ด๋‚˜ ์š”์•ฝ์ด ํ•„์š”ํ•  ๋•Œ ์ด ์„ค๋ช…์ด ์žฌ๋ฃŒ๋‹ค.

NameRequiredDescriptionDefault
org_idYes
tbl_idYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds content-level behavior by listing what the explanation contains, but it does not discuss return format or limitations. This is acceptable given the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no fluff; the resource type comes first and the usage rationale second. It is concise and front-loaded, though the second sentence is somewhat indirect.

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 read-only tool, the description covers return content and one use case. However, there is no output schema and no explanation of parameter semantics, so an agent cannot fully infer invocation details from this description alone.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain org_id or tbl_id formats, provenance, or how to obtain them. The parameter names are somewhat self-explanatory, but the description fails to compensate for the lack of schema documentation.

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 that the tool provides statistical explanation/survey overview with purpose, basis, period, and scope. This is specific enough to identify the tool's resource and distinguish it from generic data or status siblings, though it does not explicitly contrast with kosis_meta.

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

Usage Guidelines4/5

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

It gives a clear usage context: statistical tables lack abstracts, so this explanation is material when relevance scoring or summarization is needed. It does not mention exclusions or alternatives, but the intended use case is explicit.

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

kosis_guideA
Read-only

์ด API ๋ฅผ ์“ธ ๋•Œ ์•Œ์•„์•ผ ํ•  ๊ฒƒ โ€” ์„œ๋น„์Šค๋ทฐยท์ฃผ๊ธฐยท๋ฉ”ํƒ€ ์ข…๋ฅ˜ยทํ•œ๊ณ„ยทํ•จ์ •.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds useful behavioral context by listing limitations and pitfalls, signaling that this is a meta/orientation resource rather than a data-returning operation.

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 phrase with a compact list of covered topics. There is no wasted wording or redundancy with the schema or annotations.

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 no-parameter, read-only guide tool, the description is reasonably complete: it states what knowledge areas it covers and flags limitations and pitfalls. It does not describe the response format, but no output schema exists and the tool's purpose as a guide makes that less critical.

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 input schema is empty with 0 parameters and 100% schema coverage, so there are no parameter semantics for the description to clarify. A baseline of 4 is appropriate because no parameter documentation is needed.

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 this tool provides the knowledge needed to use the KOSIS API, specifically covering service view, cycle, meta types, limitations, and pitfalls. This is clear as a guide/resource, but it does not explicitly differentiate itself from siblings like kosis_explain.

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 phrase 'what to know when using this API' implies the agent should consult this guide alongside or before the other kosis_* tools, but no explicit when-to-use or when-not-to-use guidance is given. Alternatives are not named or excluded.

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

kosis_indicator_dataA
Read-only

์ฃผ์š”์ง€ํ‘œ์˜ ์‹œ์ ๋ณ„ ์ˆ˜์น˜๋ฅผ ๋ฐ›๋Š”๋‹ค.

๐Ÿ”ด KOSIS ๊ฐ€ ์ด ๊ณ„์—ด์—์„œ๋Š” ์‹œ์  ๋ฒ”์œ„๋ฅผ ๊ฑฐ๋ฅด์ง€ ์•Š๋Š”๋‹ค. startPrdDe/endPrdDe ๋Š” ๊ฐ’์ด ๋ฌด์‹œ๋˜๊ณ  ๋ชจ๋“œ ์Šค์œ„์น˜๋กœ๋งŒ ์ž‘๋™ํ•ด์„œ, ๋ฌด์—‡์„ ์ฃผ๋“  ์ „ ๊ตฌ๊ฐ„์ด ์˜จ๋‹ค(์‹ค์ธก). ๊ทธ๋ž˜์„œ ์ด ๋„๊ตฌ๊ฐ€ ์ „ ๊ตฌ๊ฐ„์„ ๋ฐ›์•„ ์ง์ ‘ ๊ฑฐ๋ฅด๊ณ , ๊ทธ ์‚ฌ์‹ค์„ meta.server_filtered (=false)์™€ meta.filter_note ๋กœ ์•Œ๋ฆฐ๋‹ค โ€” ์„œ๋ฒ„๊ฐ€ ๊ฑธ๋Ÿฌ ์คฌ๋‹ค๊ณ  ๋ฏฟ์œผ๋ฉด ์š”์ฒญํ•˜์ง€ ์•Š์€ ๊ตฌ๊ฐ„์„ ๋ฐ›๊ณ ๋„ ๋ชจ๋ฅธ๋‹ค.

Args: jipyo_id: ์ง€ํ‘œID(kosis_indicator_search ๋กœ ์ฐพ๋Š”๋‹ค). start, end: ์‹œ์  ๋ฒ”์œ„(์˜ˆ: '2015'~'2025'). ๋น„์šฐ๋ฉด ์ „ ๊ตฌ๊ฐ„. recent: ์ตœ์‹  N๊ฐœ ์‹œ์ ๋งŒ(start/end ๋ฅผ ์•ˆ ์คฌ์„ ๋•Œ).

NameRequiredDescriptionDefault
endNo
startNo
recentNo
jipyo_idYes

TDQS

A4.5/5.0
Behavior5/5

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

The description prominently discloses that the server does not filter by time range, that the tool filters locally, and that the outcome is reported via meta.server_filtered=false and meta.filter_note. This is valuable behavioral information beyond the readOnlyHint annotation and contradicts nothing.

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 purpose is stated first, followed by a justified warning and a clean Args list. The warning is slightly long but contains essential caveats needed for correct usage, so it earns its place.

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?

The description provides all necessary input semantics, the critical filtering caveat, and mentions relevant metadata keys. Since there is no output schema, the absence of output format details is acceptable; the tool can be used correctly with the given information.

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?

The schema provides zero parameter descriptions, but the description explains all four parameters: jipyo_id, start, end, and recent, including the special meaning of start/end as mode switches rather than true server-side filters. This fully compensates for the schema's lack of documentation.

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 clearly states the tool retrieves time-series values for major indicators by jipyo_id, and references kosis_indicator_search for finding the ID. It is specific enough to distinguish the resource, though it does not explicitly differentiate it from sibling data tools like kosis_data.

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

Usage Guidelines4/5

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

The description gives practical usage instructions: start/end range examples, behavior when empty, and recent usage with constraints. It also warns about server-side filtering behavior. However, it does not explicitly state when to use this tool versus the other sibling data tools.

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

kosis_listA
Read-only

ํ†ต๊ณ„๋ชฉ๋ก ํŠธ๋ฆฌ๋ฅผ ํ•œ ๋‹จ๊ณ„ ํ›‘๋Š”๋‹ค(์ฃผ์ œ๋ณ„ยท๊ธฐ๊ด€๋ณ„ ๋“ฑ).

Args: vw_cd: ์„œ๋น„์Šค๋ทฐ ์ฝ”๋“œ. kosis_guide ์˜ ์„œ๋น„์Šค๋ทฐ ์ฐธ์กฐ. parent_id: ์ƒ์œ„ ๋ชฉ๋ก ID. ๋น„์šฐ๋ฉด ์ตœ์ƒ์œ„๊ฐ€ ์˜จ๋‹ค(๊ฐœ๋ฐœ๊ฐ€์ด๋“œ๋Š” ํ•„์ˆ˜๋ผ ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ โ€” ์‹ค์ธก).

NameRequiredDescriptionDefault
vw_cdNoMT_ZTITLE
parent_idNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this as read-only and non-destructive. The description adds useful behavioral detail beyond that: traversal is one step at a time, empty parent_id returns top-level items, and an empirical note contradicts the development guide's claim that parent_id is required. It does not describe return shape, but that is minor for a simple read-only list tool.

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 compact and efficiently structured: a one-sentence purpose statement followed by a concise argument list. There is no filler, and the empirically grounded note about parent_id 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 two-parameter, read-only listing tool, the description covers purpose, parameter semantics, and key call behavior. It does not explicitly describe the return format, but the nature of a one-level tree scan makes it reasonably inferable, and the annotations cover the safety profile.

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?

Schema coverage is 0%, so the description carries the full parameter-documentation burden. Both parameters are meaningfully explained: vw_cd is tied to the service-view definitions in kosis_guide, and parent_id's optionality and empty-value behavior are explicitly clarified.

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 ('scans one level of the statistics list tree') and a clear resource, optionally scoped by topic or institution. It is clearly not tautological and conveys the tool's basic function, but it does not explicitly differentiate it from sibling tools such as kosis_search or kosis_meta.

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 context of use is implied: browse the statistics list hierarchy one level at a time, and leave parent_id empty to get the top level. However, the description never states when to prefer this tool over its siblings, nor does it mention any exclusions or alternative tools.

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

kosis_metaA
Read-only

ํ†ต๊ณ„ํ‘œ์˜ ๋ฉ”ํƒ€์ž๋ฃŒ โ€” ํ•ญ๋ชฉ(ITM)ยท์ˆ˜๋ก๊ธฐ๊ฐ„(PRD)ยท์ถœ์ฒ˜(SOURCE)ยท์ฃผ์„(CMMT) ๋“ฑ.

โš ๏ธ kosis_data ๋ฅผ ๋ถ€๋ฅด๊ธฐ ์ „์— ITM ์œผ๋กœ ํ•ญ๋ชฉ ID ๋ฅผ, PRD ๋กœ ์ˆ˜๋ก์ฃผ๊ธฐ๋ฅผ ํ™•์ธํ•˜๋ฉด err 20/21 ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ”ด ๋ถ„๋ฅ˜์ถ•์„ ์•Œ๋ ค ์ฃผ๋Š” ์ข…๋ฅ˜๋Š” ์—†๋‹ค. NCD ๋Š” ๋ถ„๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ ๊ทœ์ˆ˜๋ก ์‹œ์ ์ด๊ณ  OBJยทCLS ๋Š” err 30 ์ด๋‹ค(์‹ค์ธก) โ€” ์ถ•์€ kosis_data ๊ฐ€ ์•Œ์•„์„œ ๋งž์ถ˜๋‹ค. โš ๏ธ ์—†๋Š” kind ๋Š” err 21 ์ด ์•„๋‹ˆ๋ผ err 30(0๊ฑด)์œผ๋กœ ์˜ค๋ฏ€๋กœ ์˜คํƒ€๊ฐ€ '์ž๋ฃŒ ์—†์Œ'์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋Š” ์ข…๋ฅ˜๋งŒ ๋ฐ›๋Š”๋‹ค โ€” ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ kosis_guide ์˜ ๋ฉ”ํƒ€_์ข…๋ฅ˜.

NameRequiredDescriptionDefault
kindNoTBL
org_idYes
tbl_idYes

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 specific error behaviors (err 20/21 vs. err 30), what kinds are not supported (NCD, OBJ, CLS), and that axes are automatically handled by kosis_data. This adds meaningful behavioral context.

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 dense but well-organized, front-loading the main purpose then listing crucial warnings. Each sentence contributes actionable information, and the use of emojis aids scannability without adding fluff.

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?

For a metadata-lookup tool with no output schema, the description covers all essential context: what it returns, relationship to sibling tools, error semantics, and limitations. It is complete enough for an agent to decide when and how to use it.

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 description explains the 'kind' parameter and its accepted values (from kosis_guide) and its default, but does not elaborate on org_id or tbl_id. Since these are self-explanatory in context and the schema covers them implicitly, the description adds moderate semantic value beyond the raw 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 clearly states that the tool retrieves metadata (items, periods, sources, comments) for a statistical table, distinguishing it from data retrieval. It is specific about the resource and the scope of information provided.

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?

Explicitly instructs to call this tool before kosis_data to check ITM and PRD to avoid errors 20/21, and warns about the absence of classification-axis kinds and the error behavior of unknown kinds. It also points to kosis_guide for possible kind values, providing clear when-to-use and when-not-to-use guidance.

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

kosis_statusA
Read-only

์—ฐ๊ฒฐ ์ ๊ฒ€ โ€” ์ธ์ฆํ‚ค ๋ณด์œ  ์—ฌ๋ถ€ + KOSIS ์‹ค์ œ ์™•๋ณต 1ํšŒ.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses meaningful behavioral traits: it checks authentication-key possession and performs one live network round trip to KOSIS. This reveals the external dependency, latency, and auth-relevant behavior, which are valuable for the agent to anticipate.

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 entire description is one short, front-loaded sentence that conveys the tool's purpose and behavior with no filler. Every part of the description adds information.

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 status-check tool with no output schema, the description is largely complete: it says what is checked and that a live network call occurs. The only minor gap is that it does not specify the exact return format, but this is low-impact for such a simple tool.

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 schema coverage is 100%, so the baseline of 4 applies. The description does not need to explain parameter meanings since there are none.

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 and resource: '์—ฐ๊ฒฐ ์ ๊ฒ€' (connection check) for KOSIS, and specifies two concrete checks: whether an API key is held and whether one actual round trip works. This clearly distinguishes the status tool from siblings like kosis_data, kosis_search, or kosis_explain.

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

Usage Guidelines4/5

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

The description clearly implies when to use the tool: when an agent needs to verify KOSIS connectivity or API key validity before relying on other KOSIS operations. It does not explicitly name alternatives, but none of the sibling tools serve this health-check role, so the context is sufficient.

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. 4 tool updates
    • Changedkosis_collect7 fields changed
      • addedInput schema / properties / obj_l2
        Added value: +{
        +  "default": "",
        +  "title": "Obj L2",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l3
        Added value: +{
        +  "default": "",
        +  "title": "Obj L3",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l4
        Added value: +{
        +  "default": "",
        +  "title": "Obj L4",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l5
        Added value: +{
        +  "default": "",
        +  "title": "Obj L5",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l6
        Added value: +{
        +  "default": "",
        +  "title": "Obj L6",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l7
        Added value: +{
        +  "default": "",
        +  "title": "Obj L7",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l8
        Added value: +{
        +  "default": "",
        +  "title": "Obj L8",
        +  "type": "string"
        +}
    • Changedkosis_data7 fields changed
      • addedInput schema / properties / obj_l2
        Added value: +{
        +  "default": "",
        +  "title": "Obj L2",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l3
        Added value: +{
        +  "default": "",
        +  "title": "Obj L3",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l4
        Added value: +{
        +  "default": "",
        +  "title": "Obj L4",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l5
        Added value: +{
        +  "default": "",
        +  "title": "Obj L5",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l6
        Added value: +{
        +  "default": "",
        +  "title": "Obj L6",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l7
        Added value: +{
        +  "default": "",
        +  "title": "Obj L7",
        +  "type": "string"
        +}
      • addedInput schema / properties / obj_l8
        Added value: +{
        +  "default": "",
        +  "title": "Obj L8",
        +  "type": "string"
        +}
    • Addedkosis_indicator_data
    • Addedkosis_indicator_search
  2. 9 tool updatesv0.1.0
    • First observedkosis_citation
    • First observedkosis_collect
    • First observedkosis_data
    • First observedkosis_explain
    • First observedkosis_guide
    • First observedkosis_list
    • First observedkosis_meta
    • First observedkosis_search
    • First observedkosis_status

TDQS

A4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a single clear role: table search vs indicator search, table data vs indicator data, metadata vs survey explanation, data retrieval vs file export. The detailed descriptions explicitly distinguish the similar indicator/table families, so an agent can reliably choose between them.

Naming Consistency4/5

All tools share the kosis_ prefix and snake_case, and the search/data pairs are parallel (kosis_search/kosis_indicator_search, kosis_data/kosis_indicator_data). However, the second part mixes bare verbs (search, list, explain, collect) with bare nouns (meta, data, citation, guide), so it is not a strict verb_noun convention.

Tool Count5/5

11 tools is well within the ideal range and each one earns its place: status/guide for orientation, search/explain/list/meta/data for the table workflow, indicator_search/indicator_data for the indicator workflow, plus collect and citation for output and scholarship.

Completeness5/5

For a read-only statistical data API, the surface is complete: users can discover tables by search or tree, read survey descriptions and table metadata, fetch full table data with automatic axis/period handling, access major indicators, export to files, and generate citations. No obvious dead ends or missing core operations remain.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables natural language querying of Korean statistical data from KOSIS, including population, employment, GDP, housing prices, and more, with support for regional and trend analysis.
    8
    5 npm
    17
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Korean official statistics from KOSIS via natural language in MCP clients like Claude Desktop, wrapping the KOSIS OpenAPI for search, data retrieval, and metadata exploration.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying Bank of Korea ECOS economic statistics via Open API, including searching tables, retrieving time series data, and accessing key indicators.
    MIT