Skip to main content
Glama
aesthetic-legalism5470

korean-dart-mcp

Korean DART MCP

OpenDART 83개 API를 15개 도구로. 공시·재무·지분·XBRL + 버핏급 애널리스트 프레임(내부자 시그널·회계 리스크·퀄리티 체크리스트) + HWP/PDF 첨부 마크다운화를 AI 어시스턴트에서 바로 사용.

npm version MCP 1.27 License: MIT

금융감독원 OpenDART 전자공시 기반 MCP 서버 + CLI. Claude Desktop, Cursor, Windsurf, Claude Code 등에서 바로 사용 가능.

자매 프로젝트: korean-law-mcp (법제처 41 API → 15 도구)

English documentation → README-EN.md


⚡ 30초 설치 — 한 줄로 끝

macOS / Linux / Windows 공용. Node.js 20.19+ 만 깔려있으면 됩니다.

npx -y korean-dart-mcp setup

대화형 마법사가 띄웁니다:

  1. OpenDART 인증키 입력 (없으면 Enter — 나중에 설정 가능, 여기서 무료 발급)

  2. 사용 중인 AI 클라이언트 번호 선택 (Claude Desktop / Cursor / Claude Code / Windsurf / VS Code / Gemini CLI / Zed / Antigravity — 설치된 건 [감지됨] 표시)

  3. 설정 파일 자동 패치 → 클라이언트 재시작

Windows 도 자동으로 cmd /c npx 래핑해줘서 npx not found 이슈 해결됨. 수동 JSON 편집 불필요.

수동 설정을 원하면 아래 설치 및 사용법 섹션 참고.


Related MCP server: opendart-mcp-server

v0.9 — 무엇이 새로운가

  • get_xbrl format="markdown_full" — presentation/calculation linkbase 를 파싱해 전체 계정 + 계층 구조 + 합산 검증. 기존 markdown 의 whitelist 50태그 대비 BS 50+ / IS 15+ / CF 10+ 전부 커버. 금융지주 DX prefix 등 업종별 택소노미 자동 대응. 6MB XBRL → ~30-60KB 마크다운.

  • search_disclosures 90일 자동분할corp_code 미지정 + 기간 90일 초과 시 자동으로 90일 청크 분할 (OpenDART "전체시장 3개월 제약" 우회). 최대 40 chunks(≈10년).

  • insider_signal / disclosure_anomaly summary_text — 한국어 자동 요약문 필드 추가. LLM 이 원시 테이블 뽑기 전 한 줄로 맥락 파악.

  • 보안 하드닝 (v0.9.1) — ZIP slip / ZIP bomb 방어 공용 헬퍼, HTTPS 뷰어 스크래핑, chunks 상한, presentation 재귀 depth 가드, XBRL 파싱 경고 노출.


💡 주식에 관심 많은 일반인이 쓸 수 있는 5가지

증권사 앱만으론 아쉬운 개미 투자자 기준 킬러 유스케이스. Claude 에게 프롬프트로 그냥 말하면 됨.

1. 내 보유종목 "경영진 눈치게임"

"삼성전자 최근 1년 임원·대주주 매수/매도 보고 어때?"

insider_signal 이 매수 vs 매도 클러스터 시그널로 집계. 실측: 매수 2,429 vs 매도 43 → strong_buy_cluster (경영진이 자기 돈으로 사고 있음). HTS 에선 공시 하나하나 뒤져야 알 수 있는 것을 한 줄 프롬프트로.

2. "이 회사 회계 뭐 수상한 거 없나"

"카카오 최근 3년 회계 리스크 점수 뽑아줘"

disclosure_anomaly0-100 스코어 + verdict(clean/watch/warning/red_flag). 실측: 카카오 40점 warning — 정정공시 32.8% 가 임계 초과. 개인이 수동으로 확인 불가능한 리스크 플래그를 자동 탐지.

3. "사업보고서 300쪽 읽기 싫어"

"삼성전자 2023 사업보고서에서 '위험요소'·'주요 사업' 섹션 요약"

get_attachments(mode="extract") 가 PDF 2.2MB → 마크다운 92만 자로 변환 (3.7초). Claude 가 섹션별로 직접 검색·요약. 증권사 리포트 없이도 원본 읽기 가능.

4. "오늘 이런 공시 낸 회사 누구?"

"최근 30일 자기주식 취득 결정한 상장사 전부"
"최근 일주일 유상증자·CB 발행 공시 회사"
"최근 30일 합병·분할 결정 공시"

search_disclosures(preset=...) 22개 프리셋. 자기주식 취득 = 주가 부양 시그널 / 유상증자·CB = 희석 경계. 실측: 최근 30일 자기주식 취득 59건. HTS 에서 놓치는 배치 정보를 한 번에.

5. "A랑 B 중 뭐가 더 튼튼해"

"삼성전자 · SK하이닉스 · LG전자 5년 ROE·부채·성장성 비교"

buffett_quality_snapshot(corps=[...]) 이 5지표 자동 랭킹. 실측 (위 실전 시나리오 1 표 참고): SK하이닉스 3/4 체크 통과, 부채 안정성은 삼성 압도적. 종목 고를 때 감각 의존 대신 수치 근거.


이런 사람에게 딱

  • 본인 보유 종목 5-20개 있고 분기·반기마다 공시 점검하는 중급 개미

  • 뉴스 해석 말고 원본 공시 직접 보고 싶은 사람 (기자 편향 싫어하는 타입)

  • 네이버 금융·HTS 정보 부족해서 답답한 사람

  • 증권사 리포트 안 사고 직접 기업 분석하고 싶은 사람

이런 사람한텐 오버스펙

  • 차트 보고 들어가는 단타 — 이 도구엔 차트·실시간 주가 없음

  • 코스피 ETF 만 사는 장투 — 개별 종목 분석 필요 없음

  • Excel·Python 으로 DataFrame 돌리는 퀀트 — OpenDartReader·dart-fss 가 나음 (pandas 네이티브)

솔직한 진입 장벽

  • Claude Desktop / Cursor 설치 + OpenDART 키 발급 (10분, 무료, 일 20,000건)

  • ROE · CAGR · 부채비율 용어는 알아야 결과 이해 가능

  • Claude Pro 구독 $20/월 (대용량 PDF 요약엔 컨텍스트 넉넉한 상위 플랜이 편함)

  • 이 도구는 리서치 보조용. 투자 판단은 본인이.


실전 시나리오 — 실제 API 호출 결과

아래 결과는 실제 DART API 를 때려 얻은 실측값. 전부 scripts/showcase-v0_9_1.mjs 로 재현 가능 (12/12 PASS).

1. 버핏식 5년 퀄리티 비교 + 자동 랭킹

프롬프트: "삼성전자·SK하이닉스·LG전자 최근 5년 퀄리티 지표 비교해줘"

buffett_quality_snapshot(corps=["삼성전자","SK하이닉스","LG전자"], years=5)

기업

평균 ROE

최근 D/E

매출 CAGR

순이익 CAGR

체크리스트

삼성전자

10.39%

29.94%

4.51%

3.17%

1/4

SK하이닉스

12.86%

45.95%

22.6%

45.37%

3/4

LG전자

5.37%

140.33%

4.81%

-3.63%

0/4

자동 생성 랭킹 (5지표별):

  • ROE: SK하이닉스(12.86) > 삼성전자(10.39) > LG전자(5.37)

  • 부채 안정성: 삼성전자(29.94) > SK하이닉스(45.95) > LG전자(140.33)

  • 순이익 CAGR: SK하이닉스(45.37) > 삼성전자(3.17) > LG전자(-3.63)

  • ROE 일관성 (stddev ↓): LG전자(2.09) > 삼성전자(3.91) > SK하이닉스(18.44)

2. 경영진이 본인 돈으로 매수하고 있는가 (insider_signal)

프롬프트: "삼성전자 최근 1년 내부자 거래 매수/매도 클러스터"

insider_signal(corp="삼성전자", start="2025-04-18", end="2026-04-18")

삼성전자: 2,473건 보고 (매수 2,429 / 매도 43).
고유 매수자 1,047명 vs 매도자 40명, 순매수 +2,302,375주.
→ strong_buy_cluster 시그널.
최강 클러스터: 2026Q1 (매수 985명/매도 18명).

버핏 철학의 "경영진이 본인 돈으로 매수하는가" 를 한 호출로 정량화. 최근 24:1 매수 우세.

3. 회계·거버넌스 리스크 스코어 (disclosure_anomaly)

프롬프트: "카카오 최근 3년 회계 리스크"

disclosure_anomaly(corp="카카오")

카카오 (2023-04~2026-04): ⚠️ 경고, 점수 40/100
- 정정공시 167/509건 (32.8%)  ← 임계(20%) 초과로 +30점
- 자본 스트레스 공시 5건       ← +10점
- verdict: warning

정정공시·감사인 교체·비적정 의견·자본 스트레스 4개 축을 0-100 스코어로 집계 + 개별 flag 의 evidence 구조화. LLM 은 스토리만 만들면 됨.

4. XBRL 전체 계정 + 계산 검증 (v0.9 markdown_full)

프롬프트: "삼성전자 2023 사업보고서 재무제표 전체 계정 뽑아줘"

get_xbrl(rcept_no="20240312000736", format="markdown_full")

기간: 당기 2023-12-31 / 전기 2022-12-31 / 전전기 2021-12-31
계정 수: BS 52행 · IS 18행 · CF 12행 (whitelist 모드의 17/13/7행 대비 3배)
마크다운 크기: 8,905자 (원본 XBRL 6MB → 99.85% 절감)
계산 검증: ✅ 모두 일치 (0 건 위반)
taxonomy roles: presentation 10개 · calculation 8개
소요: 615ms

계산 검증 자동화가 핵심 — calculation linkbase 의 summation-item 관계로 "부모=자식 합산"을 검증해서 공시 오기재를 즉시 탐지.

5. 업종별 택소노미 자동 대응 (금융지주)

프롬프트: "신한지주 최신 사업보고서 재무제표 전체"

→ 내부적으로 search_disclosures 로 rcept_no 찾고 → get_xbrl(format="markdown_full")

신한지주 2025 사업보고서 (rcept_no=20260318000826)
BS 44행 · IS 49행
계산 검증 위반: 3건 (금융업 특유 항목)
→ DX prefix (금융지주 전용) taxonomy 를 코드 변경 없이 자동 처리

dart-fss 도 XBRL ZIP 은 받지만 금융업 DX prefix 택소노미 자동 대응은 문서에 명시되어있지 않음. 업종별 커버리지는 이 MCP 의 강점.

6. 최근 30일 자기주식 취득 결정 상장사 전수

프롬프트: "최근 30일 자기주식 취득 결정한 상장사 전부"

search_disclosures(preset="treasury_buy", days=30, limit=500)

매칭 공시 59건 / 8페이지 병렬 수집 (17.5초)

최신 5건:
  2026-04-17 티플랙스 — 자기주식취득신탁계약해지결정
  2026-04-17 엠투엔 — 자기주식취득결정
  2026-04-17 PS일렉트로닉스 — 자기주식취득신탁계약해지결정
  2026-04-15 아세아 — 자기주식취득신탁계약해지결정
  2026-04-15 아세아시멘트 — 자기주식취득신탁계약해지결정

22개 프리셋이 pblntf_ty + report_nm 정규식을 자동 조립. LLM 이 DART 코드를 외울 필요 없음.

7. 전체시장 180일 공시 (90일 자동분할, v0.9)

프롬프트: "최근 6개월 사업보고서 낸 회사 전부"

search_disclosures(preset="annual_report", days=180)

자동분할: 3 chunks (DART '전체시장 3개월' 제약 자동 우회)
총 수집 6,000건 → 사업보고서 매칭 2,625건 (10.3초)

최신 3건:
  2026-01-09 미라셀 사업보고서 (2024.12)
  2026-01-08 케이원제15호판교위탁관리부동산투자회사 사업보고서 (2025.10)
  2026-01-08 삼성FN리츠 사업보고서 (2025.10)

8. 자본 이벤트 타임라인 (카카오 3년)

프롬프트: "카카오 최근 3년 자본 이벤트 전부"

get_corporate_event(corp="카카오", mode="timeline", start="2023-04-18", end="2026-04-18")

이벤트 유형

건수

자기주식 처분

14

감자

3

합병

2

CB 발행

1

EB 발행

1

합계

21

36개 이벤트 enum 을 한 번에 병렬 수집 → 날짜순 통합. LLM 이 "카카오가 최근 뭘 했는지" 즉시 파악.

9. 지분공시 통합 (5%룰 + 임원 지분)

프롬프트: "삼성전자 최근 3년 지분 변동 전부"

get_major_holdings(corp="삼성전자")

majorstock(5%룰): 41건 — 최근: 삼성물산 19.70% (2026-04-17)
elestock(임원·주요주주): 200건 반환 (2,615건 중 최근순)
기간: 2023-04-18 ~ 2026-04-18

두 엔드포인트(majorstock + elestock)를 한 호출로 합성 — Python 래퍼는 두 번 호출 + pandas merge 필요.

10. 단일기업 버핏 체크리스트 (근거 포함)

프롬프트: "삼성전자 6년 버핏 체크리스트"

buffett_quality_snapshot(corps=["삼성전자"], years=6)

삼성전자 2020~2025:
- ROE 평균 10.26% (min 4.26 / max 15.69 / stddev 3.58)
- D/E 최근 29.94% / 평균 31.11%
- 매출 CAGR 7.09% · 순이익 CAGR 11.35%

체크리스트 3/4:
  ❌ consistent_high_roe (모든 연도 ROE ≥ 15%)
  ✅ low_debt         (최근 부채비율 ≤ 100%)
  ✅ growing_revenue  (매출 CAGR ≥ 5%)
  ✅ growing_earnings (순이익 CAGR ≥ 5%)

11. 공시 원문 마크다운 (DART XML → MD)

프롬프트: "삼성전자 최근 자기주식 취득 결정 공시 원문"

search_disclosures(preset="treasury_buy") 로 rcept_no 찾고 → download_document(format="markdown")

원본: 2026-03-18 주요사항보고서(자기주식취득결정)
원본 XML 32,618자 → 마크다운 2,272자 변환 (93% 절감)
# 주요사항보고서(자기주식 취득 결정) / 삼성전자
## 자기주식 취득 결정
| 1. 취득예정주식(주) | 보통주식 | ...
| 3. 취득예상기간 | 시작일 | 2026년 03월 19일 |

DART 전용 XML(dart4.xsd)을 자체 파서로 heading·테이블 보존 마크다운으로.

12. 사업보고서 첨부 → 마크다운 본문

프롬프트: "삼성전자 2023 사업보고서 PDF 본문"

get_attachments(rcept_no="20240312000736", mode="extract", index=0)

  • PDF 첨부 2.2MB → 921,998자 마크다운 (3.7초). LLM 이 "위험요소" 섹션을 직접 검색해 요약 가능.

  • kordoc 엔진 (HWP/HWPX/PDF/DOCX/XLSX 통합) — OpenDartReader·dart-fss·기존 DART MCP 6종 어디에도 없는 기능.


기존 DART 도구와의 차별점

한국 DART 생태계 조사 결과 (2026-04-18 기준):

기능

OpenDartReader (438⭐, Python)

dart-fss (364⭐, Python)

hypn4/opendart-fss-mcp (85 도구)

RealYoungk/opendart-mcp (83 도구)

korean-dart-mcp (15 도구)

MCP 네이티브

Node.js/TypeScript (npm)

(유일)

엔드포인트 1:1 커버리지

대부분

공시+재무

85개 전부

83개 전부

83→15 enum 압축

회사명 자동 해결

부분

부분

✅ (오타·초성)

✅ (SQLite FTS 선적재)

XBRL presentation/calculation linkbase

ZIP만

ZIP+taxonomy

ZIP만

자동 markdown + 계산 검증

HWP/PDF 첨부 → 마크다운

(유일, kordoc)

insider_signal 클러스터

(유일)

disclosure_anomaly 0-100 스코어

(유일)

buffett_quality_snapshot 체크리스트

(유일)

90일 자동분할 · 페이지 병렬화

ZIP slip/bomb 방어

n/a

n/a

포지셔닝 한 줄

Python 래퍼(OpenDartReader · dart-fss) 는 "quant·백테스터가 Jupyter 에서 DataFrame 으로 쓰는 용", 기존 Python DART MCP 6종은 "LLM 이 DART 원시 JSON 을 그대로 받아보는 용", 이 프로젝트는 한국 DART 생태계에서 유일하게 LLM 네이티브로 설계된 Node.js MCP — 83 API 를 15 enum 으로 압축하고, XBRL 완전 파싱 · HWP/PDF 마크다운화 · 내부자/어노말리/버핏 애널리스트 프레임을 기본 탑재한 유일한 서버.

정직한 약점

  • 엔드포인트 1:1 커버리지는 hypn4 (85 도구) / RealYoungk (83 도구) 가 더 넓음 — 희귀 엔드포인트 직접 호출이 필요하면 그쪽이 낫다. 이 프로젝트는 83→15 압축이라 자주 쓰는 조합을 제외한 엣지 엔드포인트는 제공하지 않음.

  • 한국 DART MCP 시장 전체가 작아서 (최대 9⭐ · 2026-04 기준) 생태계 자체가 아직 초기.


v0.7.0 — LLM 네이티브 분석 레이어

DART 83 API 를 LLM 이 스토리로 해석 가능한 분석 프레임으로 가공해서 넘깁니다. 아래는 대표적인 네 가지 사용 시나리오.

버핏·그레이엄 관점 정량화

"삼성전자 임원 거래 최근 2년 매수/매도 클러스터 분석해줘"

insider_signal 한 번으로:

  • 매수 보고 103건 (고유 임원 103명)

  • 매도 보고 4건 (고유 임원 4명)

  • 시그널: strong_buy_cluster (매수/매도 비율 25:1)

  • 분기별 클러스터: 2024Q1 buy_cluster (n=42, net +380만주) → 2024Q2 buy_cluster (n=31, net +210만주) ...

버핏 철학의 "경영진이 본인 돈으로 매수하는가?" 를 데이터로 굳혀 LLM 에 넘깁니다.

N년 퀄리티 체크리스트 + 피어 비교

"삼성전자·SK하이닉스·LG전자 5년 퀄리티 비교"

buffett_quality_snapshot(corps=[...]):

기업

평균 ROE

D/E

매출 CAGR

순이익 CAGR

체크리스트

SK하이닉스

12.86%

45.95%

22.6%

45.37%

3/4

삼성전자

10.39%

29.94%

4.51%

3.17%

1/4

LG전자

5.37%

140.33%

4.81%

-3.63%

0/4

  • ROE 랭킹: SK하이닉스 > 삼성전자 > LG전자

  • 부채 안정성 랭킹: 삼성전자 > SK하이닉스 > LG전자

  • ROE 일관성 (stddev): LG전자(2.09) > 삼성전자(3.91) > SK하이닉스(18.44)

회계·거버넌스 리스크 스코어

"카카오 최근 3년 회계 리스크 스코어"

disclosure_anomaly:

  • 정정공시 비율, 감사인 교체 이력, 감사의견 비적정, 자본 스트레스 이벤트 빈도를 0-100 스코어로 집계

  • verdict: clean / watch / warning / red_flag

  • 각 flag 의 근거(evidence) 구조화

HWP/PDF 첨부를 LLM이 직접 읽음

"삼성전자 2023 사업보고서 본문에서 '위험요소' 섹션 요약해줘"

get_attachments(mode=extract):

  • DART 뷰어 HTML 스크래핑으로 첨부 목록 조회

  • kordoc 엔진으로 HWP/HWPX/PDF/DOCX/XLSX → 마크다운 변환

  • 삼성전자 2.2MB PDF 사업보고서 → 921,998 자 마크다운 (3.7초). LLM 이 원문 전체를 컨텍스트로 읽고 분석

DART XML 원문(download_document(format=markdown)) 도 자체 파서로 heading/테이블 보존된 마크다운 변환.


왜 만들었나

한국 상장사 약 3,000개의 공시·재무가 DART 한 곳에 모여 있지만, 개발자가 쓰려면 83개 엔드포인트를 직접 조합해야 합니다. 다행히 한국 개발자 생태계에는 OpenDartReader(438⭐) 와 dart-fss(364⭐) 라는 훌륭한 Python 래퍼가 있어, 엔드포인트 매핑·XBRL 파싱 노하우가 이미 정리돼 있습니다. 이 프로젝트도 그 매핑을 상당 부분 그대로 수용했습니다.

이 프로젝트는 두 래퍼가 커버하지 못하는 다른 레이어를 목표로 합니다:

  • pandas 생태계용 — OpenDartReader / dart-fss. DataFrame 으로 분석가가 직접 핸들링.

  • LLM 네이티브용 — 이 프로젝트. raw 테이블을 전문가가 쓰는 각도(버핏 체크리스트·내부자 시그널·회계 리스크 스코어·공시 타임라인·마크다운 원문)로 한 번 더 정제해, AI 어시스턴트가 바로 스토리를 만들 수 있게 합니다.

둘은 보완 관계입니다. DataFrame 이 필요하면 Python 래퍼, AI 에이전트용 프레임이 필요하면 이 MCP.


설치 및 사용법

0단계: API 키 발급 (무료, 1분)

모든 방법에 공통으로 OpenDART 인증키가 필요합니다.

  1. OpenDART 가입 페이지 에서 회원가입

  2. 로그인 후 인증키 신청 → 이메일로 40자 인증키 즉시 수신

  3. 이 인증키를 아래 설정의 DART_API_KEY 에 넣습니다. 일 20,000건 무료.


방법 0: setup 마법사 (추천, 30초)

npx -y korean-dart-mcp setup

대화형으로 API 키 입력 → 클라이언트 감지 → 설정 파일 자동 패치. macOS / Linux / Windows 공용. Windows 에선 cmd /c npx 래핑까지 자동 처리. 수동 JSON 편집 불필요.

지원: Claude Desktop / Claude Code / Cursor / VS Code / Windsurf / Gemini CLI / Zed / Antigravity.

MODULE_NOT_FOUND / Cannot find module ...\build\index.js 가 뜨면: 과거에 깨진 글로벌 설치가 남아있는 상태입니다. 아래 중 하나로 해결:

# A. 글로벌 구버전 제거 후 재시도 (Windows/Mac/Linux 공통)
npm uninstall -g korean-dart-mcp
npx -y korean-dart-mcp@latest setup

# B. 또는 글로벌 무시하고 항상 최신 받아오기
npx --yes --package=korean-dart-mcp@latest korean-dart-mcp setup

방법 1: Claude Code 플러그인 (한 줄 설치)

Claude Code 사용자는 marketplace 등록 후 /plugin 으로 설치하면 끝.

/plugin marketplace add chrisryugj/korean-dart-mcp
/plugin install korean-dart

설치 시 OpenDART 인증키 입력 프롬프트가 뜸 (한 번만). 이후 15개 DART 도구 자동 활성화.


방법 2: Claude Desktop / Cursor / Windsurf (수동 설정)

사전 준비: Node.js 20.19.0 이상 설치 (LTS 권장).

설정 파일에 아래 내용을 추가하세요 (YOUR_API_KEY 를 본인 키로 교체):

설정 파일 위치:

Windows

Mac

Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json

~/Library/Application Support/Claude/claude_desktop_config.json

Cursor

프로젝트 .cursor/mcp.json

프로젝트 .cursor/mcp.json

Windsurf

프로젝트 .windsurf/mcp.json

프로젝트 .windsurf/mcp.json

Claude Code

~/.claude.json 또는 프로젝트 .mcp.json

~/.claude.json 또는 프로젝트 .mcp.json

설정 내용:

{
  "mcpServers": {
    "korean-dart": {
      "command": "npx",
      "args": ["-y", "korean-dart-mcp"],
      "env": {
        "DART_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

저장 후 앱을 재시작하면 15개 DART 도구가 활성화됩니다.

이미 다른 MCP 서버를 쓰고 있다면, "mcpServers": { ... } 안에 "korean-dart": { ... } 부분만 추가하세요.

⚠️ Windows 사용자: 위 설정으로 fail 이 뜨면 Claude Desktop 이 Windows PATH 의 .cmd 확장자를 해석하지 못해 npx 를 못 찾는 이슈입니다. 아래처럼 cmd /c 로 래핑하세요:

{
  "mcpServers": {
    "korean-dart": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "korean-dart-mcp"],
      "env": { "DART_API_KEY": "YOUR_API_KEY" }
    }
  }
}

그래도 안 되면: ① Node.js 20.19.0 이상 설치 여부 확인 (node --version), ② 방화벽이 opendart.fss.or.kr 차단하는지 확인, ③ 첫 기동 시 corp_code 덤프(11.6만건, 약 5-10초) 다운로드 중이니 10초 정도 기다린 후 재시도.


방법 3: 내 컴퓨터에 직접 설치 (글로벌)

npm install -g korean-dart-mcp

설정 파일에 command 를 바꿔 등록:

{
  "mcpServers": {
    "korean-dart": {
      "command": "korean-dart-mcp",
      "env": {
        "DART_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

첫 실행 시 OpenDART 가 제공하는 전체 기업 덤프(약 11.6만 건) 를 내려받아 ~/.korean-dart-mcp/corp_code.sqlite 에 FTS 인덱싱합니다 (약 5초, 24시간 TTL). 이후 회사명 / 종목코드 / corp_code 어느 형식으로 넘겨도 자동 해석됩니다.


API 키 전달 방법

방법

사용법

언제 쓰나

환경변수

DART_API_KEY=...

Claude Desktop 등 설정 파일

.env 파일

프로젝트 루트 .env

로컬 개발


사용 예시 — 킬러 프롬프트

기본 조회

"삼성전자 최근 분기 매출·영업이익, 전년 동기 대비 변화"
"최근 30일 자기주식 취득 결정한 상장사 전부"
"네이버 2023년 임원 보수 5억 이상 명단"

애널리스트 프레임

"삼성전자 임원 거래 최근 2년 매수/매도 클러스터 분석"     → insider_signal
"카카오 최근 3년 회계 리스크 스코어 (정정·감사인·의견)"   → disclosure_anomaly
"네이버 10년 버핏식 퀄리티 체크리스트"                    → buffett_quality_snapshot
"삼성·SK하이닉스·LG전자 5년 퀄리티 비교 + 순위"           → buffett_quality_snapshot(corps=[...])
"LG에너지솔루션 2021년 이후 자본 이벤트 타임라인 전부"    → get_corporate_event(mode=timeline)

원문 분석

"삼성전자 2023 사업보고서 PDF 본문에서 '위험요소' 섹션 요약"   → get_attachments(mode=extract)
"삼성전자 자기주식 취득 결정 원본 XML 마크다운으로"           → download_document(format=markdown)

배치 조회

"최근 7일 자기주식 취득 결정 상장사 전부"        → search_disclosures(preset=treasury_buy)
"최근 30일 전환사채·신주인수권부사채 발행 공시"    → search_disclosures(preset=cb_issue, days=30)

도구 구조 (15개)

기본 조회 (7)

도구

용도

resolve_corp_code

회사명 → corp_code (SQLite FTS 선적재, 전수 11.6만 건)

search_disclosures

공시 검색. page / preset(22종 자동필터) / all_pages 3모드 + 페이지 병렬화 + 90일 자동분할(v0.9)

get_company

기업 개황 (업종·대표자·설립일)

get_financials

재무정보. scope: summary(주요계정, 단일/다중사) / full(전체 BS/IS/CF, 단일사)

download_document

공시 원문 → format: markdown(DART XML 자체 파서) / raw / text

get_xbrl

XBRL. format: raw ZIP 해제(보안 가드) / markdown whitelist 50태그 / markdown_full taxonomy 전체(v0.9)

get_periodic_report

정기보고서 29 섹션 enum (배당·최대주주·감사인·보수·자금사용 등)

합성 래퍼 (4)

도구

용도

get_shareholders

지배구조 4섹션(최대주주·변동·소액주주·주식총수) 병렬 합성

get_executive_compensation

임원 보수 6섹션(전체·5억 이상·상위 5·미등기·주총승인·유형별)

get_major_holdings

5%룰(majorstock) + 임원·주요주주 본인 지분(elestock)

get_corporate_event

주요사항보고서 36 이벤트 enum + mode: single / timeline

애널리스트 프레임 (3 · 킬러)

도구

용도

insider_signal

임원 거래를 매수/매도 클러스터 시그널로 집계 (strong_buy_cluster 등)

disclosure_anomaly

정정공시·감사인 교체·비적정 의견·자본 스트레스 → 0-100 score + verdict

buffett_quality_snapshot

N년 ROE/부채/CAGR + 버핏 체크리스트 4종. corps 배열 지원 (1개=시계열, 2+=비교+랭킹)

원문 분석 (1)

도구

용도

get_attachments

공시 첨부 HWP/HWPX/PDF/DOCX/XLSX → 마크다운 (kordoc) + ZIP 재귀 파싱


주요 특징

  • 83 API → 15 도구 — OpenDART 전체(공시·재무·지분·주요사항·정기보고서·XBRL) 를 enum 압축. LLM 컨텍스트 8-10k → 6-8k 토큰

  • 회사명 자동 해결 — "삼성전자" / "005930" / "00126380" 어느 형식이든 자동 변환 (SQLite FTS 선적재, 24h TTL)

  • 버핏급 애널리스트 프레임 — raw 테이블 위에 시그널/스코어/체크리스트 레이어를 얹어 AI 에이전트가 바로 쓰도록 가공

  • HWP/PDF 첨부 마크다운화kordoc 엔진으로 공시 원문 본문을 LLM 이 직접 읽음 (2.2MB PDF → 3.7초)

  • DART XML 자체 파서dart4.xsd 전용 마크업을 heading·테이블 보존된 마크다운으로 변환

  • 페이지 병렬화search_disclosures 배치 모드 30-50초 → 17초 (2-3배)

  • 22 프리셋 — 자기주식·CB/BW·합병·5%보유·정정·부실·소송 등 자주 쓰는 조합을 enum 으로

  • XBRL 원본 노출 — 파싱 안 하고 해제 경로만 반환. Claude 가 직접 집계 가능

  • OpenDartReader/dart-fss 호환 매핑 — 검증된 Python 래퍼들의 엔드포인트 매핑을 그대로 수용


참고

Star History

라이선스

MIT


Made by 류주임 @ 광진구청 AI동호회 AI.Do

Available Tools

15 tools
buffett_quality_snapshotA

버핏 퀄리티 체크리스트. corps 1개 → N년 ROE/부채/CAGR 시계열 + 체크 4종. corps 2~10개 → 각 기업 스냅샷 + 5지표별 랭킹 (기존 quality_compare 통합). 기업별 병렬 실행.

ParametersJSON Schema
NameRequiredDescriptionDefault
corpsYes회사 1~10개. 1개면 시계열+체크리스트, 2+면 비교+랭킹 추가
yearsNo과거 N년 (기본 10)
end_yearNo기준연도 (미지정=작년)
prefer_consolidatedNo연결재무제표 우선

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses parallel execution per company, the mode switching based on input count, and the type of metrics (ROE, Debt, CAGR, checks, rankings). However, it lacks details on what the '4 check types' or '5 indicators' are and does not describe output format, which slightly reduces transparency.

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 three sentences in Korean, front-loading the purpose ('버핏 퀄리티 체크리스트'). It efficiently covers the two modes, time series details, and integration. No redundant or unnecessary content.

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?

Given the tool's complexity (4 parameters, no output schema, no annotations), the description provides high-level behavioral context but omits specific definitions of 'check types' and 'indicator rankings'. The output structure is not described, which could leave an agent uncertain about the exact return format. It is adequate but could be more complete.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all four parameters. The tool description reinforces the corps parameter's mode-switching behavior but adds minimal new meaning beyond the schema. The description introduces output-related terms (ROE, CAGR, checks) but these are not tied to specific parameters, so the added value is marginal.

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 the tool provides a 'Buffett quality checklist' and distinguishes two modes based on the number of companies: for one company it returns a time series of ROE/Debt/CAGR and four checks; for multiple companies it returns snapshots and rankings. It also mentions integration with the existing 'quality_compare' tool, making its purpose and behavior specific and distinct from siblings.

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

Usage Guidelines3/5

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

The description implies usage for Buffett quality analysis but does not explicitly state when to use this tool versus alternatives, such as 'get_financials' or 'search_disclosures'. No when-not or exclusion criteria are provided. The integration note with quality_compare gives some context but not clear guidance.

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

disclosure_anomalyA

회계·거버넌스 이상 징후 스코어: 정정공시 비율, 감사인 교체, 감사의견 비적정, 자본 스트레스. 점수 0-100 + 개별 flag 와 evidence 를 구조화해 반환. LLM 이 판단을 내릴 수 있는 데이터 프레임 제공 (직접 권고하지 않음).

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo기간 종료 (기본: 오늘)
corpYes회사명/종목코드/corp_code
startNo기간 시작 (기본: 3년 전)
audit_yearsNo감사인·의견 비교할 연도 (미지정 시 기간의 최근 3년)

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It explains what the tool computes (score, flags, evidence) and that it does not give recommendations. It does not disclose data freshness, rate limits, or side effects of calling the 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?

Description is a single sentence succinctly listing what the tool does and returns, with no wasted words. It is front-loaded with the key concept and then details.

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 tool with no output schema, the description adequately explains the output (score, flags, evidence, data frame). Parameters are fully covered. Sibling tools exist but not explicitly compared. The description is fairly complete for the tool's purpose.

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?

Schema coverage is 100% with descriptions for all 4 parameters. The added description explains the composite nature of the score and the purpose of audit_years for comparing auditor/opinion, providing meaning beyond schema parameter names.

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?

Description clearly states the tool computes a score (0-100) for accounting/governance anomaly signs including restatement ratio, auditor change, adverse audit opinion, capital stress, and returns structured flags and evidence. This distinguishes it from sibling tools like buffett_quality_snapshot or insider_signal.

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?

Description implies use for anomaly detection and provides a data frame for LLM judgment without direct recommendations. However, it lacks explicit when-to-use, when-not-to-use, or mention of alternative tools among siblings.

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

download_documentA

공시서류 원문을 마크다운/원본XML/plain text 로 반환합니다. 기본값 markdown — DART 전용 XML 을 자체 파서로 heading·테이블 보존해 변환. 대형 사업보고서는 수백 KB 이상이라 기본 10만 자에서 절단. 사업보고서·반기보고서·주요사항보고 등 모든 공시 원문에 사용.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo출력 포맷. markdown=DART XML → 마크다운, raw=원본 XML, text=태그 제거markdown
rcept_noYes접수번호 14자리 (search_disclosures 의 rcept_no)
truncate_atNo텍스트 최대 길이 (초과분은 잘림)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses key behaviors: custom parser for markdown, default truncation at 100,000 characters, and handling of large documents. Missing details like error handling or authentication, but overall transparent for a download 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?

Two sentences with dense, relevant information. No fluff, front-loaded purpose, every sentence adds value. Ideal conciseness.

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?

Covers return formats, custom processing, truncation, and scope. Missing details on error responses or behavior for missing documents, but adequate given the tool's simplicity and full schema coverage.

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?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the custom parser for markdown and the truncation behavior, providing context beyond the schema's parameter descriptions.

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 returns disclosure documents in markdown, raw XML, or plain text, and mentions the custom parser and default format. However, it doesn't explicitly differentiate from sibling tools like get_periodic_report, which may also return document content.

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?

It says the tool is used for 'all disclosure originals' and lists examples, implying broad usage. However, it lacks explicit when-not-to-use guidance or references to alternatives among siblings, leaving the agent to infer usage context.

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

get_attachmentsA

공시 첨부파일(HWP/PDF/DOCX/XLSX)을 목록 조회(mode=list) 하거나 다운받아 마크다운으로 추출(mode=extract). DART 뷰어 HTML 스크래핑 기반 — OpenDART 표준 API 에 첨부 엔드포인트가 없어 공식 뷰어를 통해 접근. extract 모드는 kordoc 엔진으로 HWP/HWPX/PDF/DOCX/XLSX → 마크다운 변환.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNolist: 첨부 목록만. extract: 파일 하나 다운·파싱해 마크다운list
indexNoextract 모드에서 0-based index (filename 우선)
filenameNoextract 모드에서 정확한 파일명 (부분일치 폴백 없음)
rcept_noYes접수번호 14자리
zip_indexNoZIP 첨부 extract 시 내부 파일 index (0-based). 미지정 & ZIP 인 경우 내부 파일 목록만 반환.
truncate_atNoextract 마크다운 최대 길이
outline_max_itemsNooutline(목차) 최대 항목 수. 사업보고서 outline 은 수천 개 → 디폴트 50. 0=outline 생략.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It transparently discloses the scraping-based approach and the kordoc conversion engine. It also mentions truncation and outline parameters, providing insight into limitations. However, it does not detail failure modes, rate limits, or the exact behavior when scraping fails.

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 extremely concise: two sentences that convey the purpose, mode options, file types, and technical background. Every sentence adds essential information without redundancy.

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

Completeness4/5

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

Given the complexity (2 modes, multiple file types, scraping-based) and no output schema, the description covers key aspects. However, it lacks details about the return format for list mode (e.g., what fields are in the attachment list) and the exact structure of the extracted markdown. This minor gap prevents a perfect score.

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 100%, but the description adds significant value beyond the schema. It explains the mode-dependent behavior of index/filename, the special handling of ZIP attachments via zip_index, and the purpose of truncate_at and outline_max_items. This allows an agent to understand parameter interactions and defaults.

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?

Description clearly states the two modes (list/extract) and the types of attachments (HWP/PDF/DOCX/XLSX). It distinguishes the tool as a specialized attachment handler for DART disclosures, which is distinct from other sibling tools that focus on financial data or document downloads.

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 explains the two modes and when to use each ('list' for listing attachments, 'extract' for downloading and converting to markdown). It provides context that the tool uses DART viewer scraping due to missing official API endpoints. However, it does not explicitly compare against sibling tools like 'download_document' or provide 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.

get_companyA

기업의 개황(업종·설립일·대표자·주소·홈페이지·종목코드 등)을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
corpYes회사명/종목코드/corp_code

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It indicates a read operation without side effects, but lacks details on authentication, rate limits, or data freshness. Adequate for a simple retrieval but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single sentence front-loads the purpose with specific details. No filler words; every part contributes to clarity.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema), the description covers the essential returned fields and input format. Minor gaps like error conditions or response format are not critical but could enhance completeness.

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

Parameters3/5

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

Schema description covers the 'corp' parameter fully (company name/stock code/corp_code). The tool description adds value by listing output fields but does not enhance parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a company overview, listing specific fields (industry, establishment date, etc.). It uses a specific verb and resource, distinguishing it from sibling tools like search_disclosures and resolve_corp_code.

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

Usage Guidelines3/5

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

The description implies usage for getting company overview by name/code, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among siblings.

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

get_corporate_eventA

DS005 주요사항보고서 36종 이벤트 조회. mode='single' 은 단일 event_type 상세, mode='timeline' 은 자본 관련 이벤트(증자·감자·CB/BW/EB·자사주·합병분할·영업양수도 등)를 지정 기간 병렬 수집 후 날짜순 통합. timeline 은 '최근 N년 자본 스트레스 내러티브' 를 한 번에 뽑기 위한 킬러 모드.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo종료일 (YYYY-MM-DD / YYYYMMDD)
corpYes회사명/종목코드/corp_code
modeNosingle: 단일 event_type 조회. timeline: 여러 자본 관련 이벤트를 날짜순 통합 (킬러 모드)single
startNo시작일 (YYYY-MM-DD / YYYYMMDD)
event_typeNosingle 모드 필수. 36개 이벤트 중 하나
event_typesNotimeline 모드용 수동 선택. 미지정 시 자본 관련 이벤트(capital=true) 전체 자동 선택

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It describes the two modes but does not explicitly state that the tool is read-only, nor does it mention any side effects, rate limits, or auth requirements. The Korean word '조회' implies inquiry, but it is not explicit for non-Korean readers.

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 two sentences, front-loaded with the core purpose. It is concise but could be better structured (e.g., bullet points). Every sentence contributes meaning.

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?

Given 6 parameters, 100% schema coverage, and no output schema, the description covers the two modes well but lacks details on return format, pagination, or any constraints. It is moderately complete.

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?

Schema coverage is 100%, but the description adds value by explaining mode semantics (e.g., timeline auto-selects capital events if event_types not specified) and the corporate parameter. It goes beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves corporate events from a specific report (DS005) with two modes. It distinguishes itself from sibling tools, none of which query events.

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 explains when to use each mode: single for one event type, timeline for capital-related events over a period, calling it a 'killer mode' for extracting capital stress narratives. It does not explicitly mention when not to use, but the guidance is clear.

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

get_executive_compensationA

임원 보수 6개 섹션을 한 번에 합성 조회: 전체·개인별 5억 이상·상위 5인·미등기·주총 승인금액·유형별. (단일 섹션은 get_periodic_report 로도 조회 가능.)

ParametersJSON Schema
NameRequiredDescriptionDefault
corpYes회사명/종목코드/corp_code
yearYes
reportNoannual
sectionsNo조회할 섹션 (미지정 시 6개 모두). total=전체 평균, individual_5eok=개인별 5억↑, top5=상위 5인, unregistered=미등기 임원, approval_limit=주총 승인한도, by_type=직책별 지급금액

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. While '조회' (inquiry) implies a read-only operation, the description does not explicitly state that the tool does not mutate data or require special authorization. It focuses on data retrieval but lacks explicit safety or permission cues.

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 extremely concise: two sentences that front-load the primary purpose and sections, then provide an alternative usage note. Every word earns its place with no redundancy.

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

Completeness4/5

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

Given the tool's complexity (4 parameters, composite of 6 sections, no output schema), the description covers the core purpose and usage context well. It could mention the output format to aid agent understanding, but the schema's section descriptions already handle defaults. Adequate for effective tool selection.

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

Parameters3/5

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

Schema description coverage is 50%, and the description adds value by listing and explaining the six section values for the 'sections' parameter. However, it does not elaborate on the 'corp', 'year', or 'report' parameters beyond what the schema minimally provides, leaving gaps for an agent.

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 the tool performs a composite query of six sections of executive compensation, listing each section and distinguishing it from the sibling tool get_periodic_report for single-section queries. The verb '합성 조회' (synthetic query) and resource '임원 보수 6개 섹션' are specific and unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool (for all six sections at once) and when to use an alternative (get_periodic_report for a single section), providing clear guidance on tool selection.

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

get_financialsA

재무정보 조회 — scope=summary(주요계정, 단일/다중사 자동) 또는 full(전체 재무제표, 단일사). summary 는 매출·영업이익·당기순이익·자산/부채/자본 핵심만, full 은 BS/IS/CF 전체 수백 행.

ParametersJSON Schema
NameRequiredDescriptionDefault
fsNoscope=full 시 연결(consolidated)/별도(separate) 선택consolidated
yearYes
corpsYes회사 배열. scope=summary 면 1개(단일) 또는 2+(다중사 비교). full 은 1개만.
scopeNosummary: 주요계정 8~10행 (빠름). full: 전체 재무제표(BS/IS/CF/CIS/SCE) 수백~천여 행summary
reportNoq1/half/q3/annualannual
sj_divNoscope=full 시 재무제표 종류 필터 (미지정 시 BS+IS — 기본 응답 사이즈 ~70% 절감). BS=재무상태표, IS=손익계산서, CF=현금흐름표, CIS=포괄손익계산서, SCE=자본변동표. 전체 받으려면 ["BS","IS","CF","CIS","SCE"] 명시.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, but description explains scope-dependent behavior, response size impact of sj_div, and speed differences. Lacks error conditions or rate limits but sufficient for safe use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Description is informative but somewhat verbose with multi-sentence explanations. Core purpose is front-loaded, but could be more concise.

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?

Completeness is good given no output schema; covers all parameters and behavioral nuances. Does not describe return format explicitly but implied by '행' (rows).

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?

Schema description coverage is high (83%), but description adds valuable context for scope and sj_div, including corps count limitations and default response size reduction that schema doesn't capture.

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?

Description clearly states '재무정보 조회' (financial info retrieval) and distinguishes between summary (key accounts) and full (complete statements). However, it could better differentiate from sibling tools like get_xbrl.

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 describes when to use summary (single/multi companies, fast) vs full (single company, detailed), and how sj_div can reduce response size. Also explains constraints on corps count per scope.

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

get_major_holdingsA

지분공시 2종 합성 조회: 대량보유(5%룰) + 임원·주요주주 본인 소유. 내부자·외부 대주주 지분 이력을 한 번에 스냅샷.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo기간 종료 (미지정 시 오늘)
corpYes회사명/종목코드/corp_code
limitNo최대 반환 행 수 (각 kind 별). 대형 상장사는 누적 수만 건 → 디폴트 200.
startNo기간 시작 (YYYY-MM-DD / YYYYMMDD). 미지정 시 최근 3년.
includeNo조회 대상 (미지정 시 둘 다). majorstock=대량보유 5%룰, elestock=임원·주요주주 본인 보유

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden. It mentions 'snapshot' but lacks details on data merging, pagination effects, authorization needs, or output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two concise sentences in Korean with no redundancy, efficiently conveying the tool's purpose.

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

Completeness3/5

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

Adequate for a 5-parameter tool with high schema coverage, but lacks explanation of output structure (no output schema) and how combined results are presented.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter is already documented. The description adds little extra meaning beyond naming the two disclosure types, which the schema's include parameter already enumerates.

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 it is a synthetic query combining two types of equity disclosure (major shareholding and executive holdings), providing a snapshot of insider/outsider history. This distinguishes it from simpler sibling tools like get_shareholders.

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

Usage Guidelines3/5

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

The description implies usage for consolidated equity disclosure but provides no explicit guidance on when to use it versus alternatives or when not to use it.

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

get_periodic_reportA

사업보고서 내 29개 세부 섹션을 report_type enum 으로 단일 도구 호출. 예: 최대주주 현황·임원 보수·감사인·배당·자기주식·회사채 미상환 등. (정기보고서 전체 원문이 필요하면 download_document.)

ParametersJSON Schema
NameRequiredDescriptionDefault
corpYes회사명/종목코드/corp_code
yearYes
reportNoannual
report_typeYes섹션 29종: 주주(largest_shareholder·largest_shareholder_changes·minority_shareholders·total_stocks) / 임직원(executives·employees·outside_director_changes) / 보수(executive_compensation_total·executive_compensation_individual·individual_pay_top5·unregistered_executive_comp·director_total_comp_approval·director_total_comp_by_type) / 회계감사(auditor_opinion·audit_service_contract·non_audit_service_contract) / 자본(capital_increase_decrease·dividends·treasury_stock) / 자금사용(private_placement_fund_use·public_offering_fund_use) / 타법인출자(other_company_investment) / 채무증권(debt_securities_issuance·cp_unredeemed·short_term_bond_unredeemed·corp_bond_unredeemed·hybrid_capital_unredeemed·contingent_capital_unredeemed)

TDQS

A4.4/5.0
Behavior3/5

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

No annotations provided, so description should disclose behavioral traits. It does not mention read-only nature, authorization needs, rate limits, or side effects. The description focuses on functionality rather than behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two concise sentences, front-loaded with core information. Every word adds value; no redundancy.

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

Completeness4/5

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

Given no output schema and 4 parameters, the description covers the tool's purpose, provides examples, and mentions alternatives. It lacks details on return format or pagination, but is adequate for selection.

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?

Schema coverage is 50%. The description adds value by grouping report_type values into semantic categories (주주, 임직원, 보수, etc.) that are not in the schema, aiding understanding beyond the enum list.

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?

Description clearly states the tool retrieves 29 specific sections from a business report using enum values. It gives concrete examples and distinguishes from the sibling tool download_document for full-text retrieval.

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 says to use this for individual sections and notes that download_document is the alternative for full document text, providing clear when-to-use guidance.

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

get_shareholdersA

지배구조 스냅샷: 최대주주·변동·소액주주·주식총수 4개 섹션을 한 번에 합성 조회. (특정 섹션만 필요하면 get_periodic_report 로 단일 조회 가능.)

ParametersJSON Schema
NameRequiredDescriptionDefault
corpYes회사명/종목코드/corp_code
yearYes
reportNoannual
sectionsNo조회할 섹션 (미지정 시 4개 모두)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. It implies read-only behavior by calling it a 'snapshot' and describes the composite nature, but lacks details on side effects, auth requirements, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two concise sentences: first states purpose, second provides usage guidance. No redundant information, front-loaded with core functionality.

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?

Despite missing output schema, description gives high-level overview of composite output. However, it lacks details about return format and does not fully address all four parameters.

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

Parameters3/5

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

Schema coverage is 50% with some parameter descriptions; the description adds context by naming the four sections, which maps to the sections enum. However, it does not compensate fully for undocumented parameters like year and report.

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?

Description clearly states it provides a governance snapshot with four specific sections (largest shareholder, changes, minority shareholders, total stocks). It distinguishes itself from sibling tool get_periodic_report by noting that tool can be used for individual sections.

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?

Explicitly mentions when to use get_periodic_report instead if only specific sections are needed. Provides clear context for tool selection, though does not cover all usage scenarios.

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

get_xbrlA

재무제표 XBRL 조회 — format 선택: raw=원본 ZIP 파일시스템 해제, markdown=whitelist 50태그 3년 3열 (~8KB), markdown_full=taxonomy 전체 계정 + 계산 검증 (업종별 자동 대응, ~30-60KB).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoraw: ZIP 파일시스템 저장. markdown: whitelist 50태그 마크다운. markdown_full(v0.9.0+): taxonomy 전체 계정 + 계산 검증.raw
fs_divNomarkdown/markdown_full 전용: 연결/별도 기준consolidated
reportNo보고서 종류annual
out_dirNoformat="raw" 전용: 저장 디렉터리 (미지정 시 ~/.korean-dart-mcp/xbrl/{rcept_no}_{report}/)
rcept_noYes접수번호 14자리
sectionsNomarkdown/markdown_full 전용: 생성할 재무제표 종류

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description fully discloses behavioral traits: raw returns original ZIP, markdown is filtered (50 tags, 3 years, 3 columns, ~8KB), markdown_full includes full taxonomy with calculation verification (~30-60KB). No contradictions or missing destructive hints.

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?

Single sentence with a dash structure efficiently conveys all key options and their characteristics. No extraneous information; every part is informative.

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

Completeness4/5

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

Given 6 parameters, 3 enums, and no output schema, the description adequately explains the tool's core functionality and format trade-offs. However, it could explicitly state when to choose each format (e.g., raw for full data, markdown for quick analysis) and what the output structure looks like.

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?

Schema coverage is 100%, but the description adds value by explaining the format options' implications (e.g., file sizes, industry-specific auto response) and connecting parameters like fs_div and out_dir to specific formats, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves XBRL financial statements and explicitly differentiates three format options (raw, markdown, markdown_full) with specifics about each, such as file sizes and content scope.

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?

No explicit guidance on when to use this tool versus sibling tools like get_financials or get_periodic_report. Usage context is implied through format descriptions but not directly stated.

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

insider_signalA

임원·주요주주 거래(DS004 elestock)를 매수·매도 클러스터로 집계. 기간 내 순증감·매수자수·분기별 클러스터 여부 산출. 버핏 철학의 '경영진 본인 돈으로 매수' 시그널을 LLM 해석 가능한 단위로 제공.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo기간 종료
corpYes회사명/종목코드/corp_code
startNo기간 시작 (YYYY-MM-DD / YYYYMMDD)
reporters_topnNo분기별 reporters 명단 상위 N (절대값 큰 순). 대형사는 분기당 수백명 → 디폴트 5. 0=빈 배열.
cluster_thresholdNocluster 인정 최소 인원 (기본 3: 분기 내 같은 방향 거래 3명 이상)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full responsibility. It explains clustering based on direction and threshold (default 3), but omits details about data source limitations, rate limits, or authentication needs. Some behavioral context is provided, but 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.

Conciseness5/5

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

Three sentences, front-loaded with main purpose and key outputs. No fluff, every sentence contributes essential information.

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?

No output schema exists, so the description must clarify return format. It mentions net change, buyer count, cluster presence, and signal, but lacks specifics on structure or data types. Adequate but not fully complete.

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?

Schema coverage is 100% with Korean descriptions. The description adds meaning by explaining the aggregation logic and signal interpretation, going beyond individual parameter descriptions. However, all content is in Korean, which may limit universal clarity.

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 the tool aggregates insider transactions into buy/sell clusters, calculates net change, buyer counts, and quarterly clusters, providing a Buffett-style signal. This distinctively separates it from siblings like buffett_quality_snapshot or disclosure_anomaly.

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 explicit guidance on when to use this tool versus alternatives. While the purpose is clear, the description does not specify scenarios or exclusions, leaving the agent to infer usage context.

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

resolve_corp_codeA

회사명 또는 종목코드로 OpenDART corp_code 를 조회합니다. 상장사·정확일치·짧은 이름 순으로 정렬해 반환. 모든 다른 도구에 회사명을 바로 넘겨도 내부에서 자동 해결되지만, 결과가 모호할 때 후보를 확인하는 용도로 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo최대 반환 개수
queryYes회사명(한/영), 6자리 종목코드, 또는 8자리 corp_code

TDQS

A4.4/5.0
Behavior4/5

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

Describes sorting order and that it returns corp_code candidates. With no annotations, description carries full burden. Does not mention not-found behavior or rate limits, but the read-only nature is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, front-loaded with main purpose, no wasted words. Efficient and clear.

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?

No output schema, but description implies a list of candidates. Could be more explicit about return format, but adequate given the tool's simple purpose.

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

Parameters3/5

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

Schema coverage is 100% and the description repeats the schema's parameter descriptions. Does not add new meaning beyond the schema, but mentions sorting behavior which indirectly helps understand query use.

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?

Description clearly states the tool resolves company names or stock codes to OpenDART corp_code, with sorting logic (listed, exact match, short name). Clearly distinguishes from sibling tools that use internal resolution.

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 states that other tools automatically resolve corp_code internally, and this tool is for checking candidates when results are ambiguous. Provides 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.

search_disclosuresA

DART 공시 검색 (3 모드): 기본(단일 페이지, page+size), preset(22개 프리셋 자동 필터+전량 병렬), all_pages(프리셋 없이 기간 전체 병렬). rcp_no(rcept_no) 로 download_document / get_attachments 연동.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo종료일 (생략 시 오늘)
corpNo회사명/종목코드/corp_code. 생략 시 전체
daysNobegin 대신 오늘 기준 과거 N일 (preset 모드 기본 7, 일반 90)
kindNo공시유형: periodic/major/issuance/holdings/audit/other/fund/abs/exchange/ftc
pageNo페이지 모드 시 페이지 번호
sizeNo페이지 모드 시 페이지 크기
beginNo시작일 YYYY-MM-DD (생략 시 기본값)
limitNo배치 모드 최종 반환 개수 상한
presetNo프리셋 22종: treasury_buy/sell/trust · cb/bw/eb_issue · rights_offering/bonus_issue/capital_reduction · merger/split/stock_exchange · business_transfer/acquisition · large_holding_5pct · annual_report/half_report/quarterly_report · audit_report · correction_all · insolvency · litigation. 지정 시 kind·키워드 자동 + 전량 페이지 병렬 수집.
all_pagesNopreset 없이도 기간 전체를 병렬 수집. true 시 page/size 대신 limit 적용.
final_onlyNo최종보고서만 (정정공시 제외)
concurrencyNo배치 모드 페이지 병렬 동시성 (1~10, 기본 5). 높이면 빠르지만 DART 일일 20,000건 한도/분당 쿼터 근접 위험.
include_correctionsNo정정공시 포함 (preset 모드 전용). correction_all 은 자동 true.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It details behavioral traits: three modes with parallel execution, automatic filter application in preset, concurrency limits, and DART API daily/quota limits. It also links results to download/get_attachments via rcp_no.

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 (one sentence) but dense; it packs mode details and linking into a single line. Could benefit from structured formatting, but remains clear and efficient.

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

Completeness4/5

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

Given the tool's complexity (13 parameters, 3 modes, no output schema), the description covers modes, parameter notes, and API limits. However, it does not explicitly describe the output format (e.g., that results include rcp_no), which would enhance completeness.

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?

Schema coverage is 100% with all 13 parameters described. The description adds context beyond schema, e.g., 'days' default for preset vs. normal mode, and concurrency parameter notes about API limits. Baseline is 3, and extra context justifies a 4.

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 'DART disclosure search' and lists three distinct modes (basic, preset, all_pages), specifying their use cases. This distinguishes it from sibling tools like download_document or get_attachments.

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 explains when to use each mode (basic for single page, preset for automatic filters, all_pages for full period), providing clear context. However, it does not explicitly exclude alternative tools or state prerequisites, as there are no similar sibling tools.

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. Dates show when Glama detected each change.

  1. 15 tool updatesv0.9.2
    • First observedbuffett_quality_snapshot
    • First observeddisclosure_anomaly
    • First observeddownload_document
    • First observedget_attachments
    • First observedget_company
    • First observedget_corporate_event
    • First observedget_executive_compensation
    • First observedget_financials
    • First observedget_major_holdings
    • First observedget_periodic_report
    • First observedget_shareholders
    • First observedget_xbrl
    • First observedinsider_signal
    • First observedresolve_corp_code
    • First observedsearch_disclosures

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a distinct purpose: quality snapshot, anomaly scoring, document download, financials, XBRL, corporate events, insider trading, etc. Overlaps are minimal and clarified by descriptions.

Naming Consistency3/5

Naming uses mixed conventions: some prefixed with 'get_', others not (e.g., 'buffett_quality_snapshot', 'insider_signal'). Also varied verb forms like 'download_document' vs 'get_attachments'. While mostly readable, the pattern is inconsistent.

Tool Count5/5

15 tools is well-scoped for a comprehensive Korean disclosure server. Covers company info, financials, filings, governance, and anomalies without being overwhelming.

Completeness5/5

The tool set covers the full lifecycle of disclosure analysis: search, retrieve raw documents, extract sections, financials, XBRL, corporate events, shareholder info, executive comp, insider trading, and anomaly detection. No dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    Not graded
    maintenance
    Enables AI assistants to access South Korea's financial disclosure system (OpenDART), allowing users to retrieve corporate financial reports, disclosure documents, shareholder information, and automatically extract and search financial statement notes through natural language queries.
    85
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to access Korean corporate disclosure data from DART, allowing natural language queries about companies, financial statements, and disclosures.
    61
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides 15 tools covering OpenDART 83 APIs for disclosures, financials, equity, XBRL, plus insider signals, accounting risk scores, and Buffett-style quality checklists, and converts HWP/PDF attachments to markdown for AI assistants.
    15
    327
    96
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with real-time access to Korean listed companies' disclosures, financial statements, and corporate information via the DART API.
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aesthetic-legalism5470/korean-dart-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server