Skip to main content
Glama

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: MCP OpenDART

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.8/5.0
Behavior3/5

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

With no annotations, the description details the output structure (time series, checks, snapshots, rankings) and mentions parallel execution. However, it lacks information on potential side effects, prerequisites, or limitations (e.g., data costs, error conditions).

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 very concise (2-3 lines) and front-loaded with the primary purpose. Every sentence adds value without redundancy.

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?

Despite having no output schema, the description only vaguely describes outputs (time series, checks, snapshots, rankings). It omits details on error handling, data precision, and additional context needed for effective use.

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 baseline is 3. The description adds context about how corps count affects behavior and implies years as 'N years', but does not provide additional meaning beyond the existing parameter 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 specifies the tool's function: generating a Buffett quality checklist with two distinct modes based on the number of companies (1 vs 2-10). It mentions integration with quality_compare, distinguishing it from sibling tools.

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 clear guidance on when to use the tool (based on corps count) and explains the different behaviors. However, it does not explicitly state when not to use it or list alternatives beyond mentioning quality_compare.

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

disclosure_anomalyB

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

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

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description bears full burden for behavioral disclosure. It explains that the tool returns a structured score, flags, and evidence without making direct recommendations. However, it does not mention side effects, read-only nature, rate limits, or error handling, leaving some transparency gaps.

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 three sentences covering purpose, output, and a note on LLM use. It front-loads the key information without wasted words, though a more structured format could enhance readability.

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?

With no output schema, the description partially covers the return format (score, flags, evidence, data frame) but lacks detail on the structure of flags and evidence. Given the tool's complexity (multiple factors), more completeness would be beneficial.

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 100%, with each parameter having a description in the schema. The tool description does not add significant meaning beyond the schema, as it focuses on the output rather than parameter details. Baseline 3 is appropriate.

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 computes an accounting/governance anomaly score based on several factors (correction disclosure ratio, auditor change, etc.) and returns a score 0-100 with flags and evidence. It distinguishes itself from sibling tools like 'get_financials' by focusing on anomaly detection rather than raw data retrieval, though sibling differentiation is not explicit.

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 analyzing disclosure anomalies and notes the tool does not make direct recommendations, leaving judgment to the LLM. However, it does not explicitly state when to use it versus alternatives or provide conditions for use, leaving guidance implicit.

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

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 discloses key behaviors: format conversion, DART-specific parsing, truncation at 100,000 characters, and applicability to all disclosures. No contradictions or omissions of major traits.

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 efficient sentences, front-loaded with purpose and key details, no waste. Every sentence adds useful information.

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 3 parameters, no output schema, the description fully covers purpose, parameters, truncation behavior, and scope. No missing elements for an agent to invoke correctly.

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 covers all 3 parameters 100%. Description adds value by explaining truncation limit, linking rcept_no to search_disclosures, and describing format options beyond the enum values.

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 returns disclosure documents in markdown/raw/text, specifies DART-specific XML parsing with heading/table preservation, and distinguishes from sibling tools like search_disclosures by focusing on downloading content.

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 implies usage for any disclosure documents and mentions default format and truncation, but lacks explicit guidance on when to use vs siblings. Context is clear enough for an agent to infer purpose.

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

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses that the tool is based on DART viewer HTML scraping (not official API), and mentions the kordoc conversion engine. With no annotations provided, this covers key behavioral traits. It does not discuss rate limits or authentication, but the scraping approach is clearly stated.

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 with front-loaded purpose. It is concise and includes technical details (scraping, conversion engine). Could be slightly more structured, but overall 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 7 parameters with 100% schema coverage and no output schema, the description covers the tool's behavior well: dual modes, scraping basis, conversion engine, and parameter roles. It is missing error handling or pagination details, but the core use case is well addressed.

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 100%, so the schema already documents all 7 parameters. The description adds context about the mode behavior and conversion engine, but does not significantly enhance per-parameter understanding beyond the schema. Baseline 3 is appropriate.

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's purpose: to list or extract attachments from Korean disclosures (HWP/PDF/DOCX/XLSX) using two modes (list and extract). It specifies the resource (attachments) and the action (list or extract to markdown), and distinguishes the two modes effectively.

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 (list vs extract) and provides parameter guidance (e.g., filename vs index, truncate_at, outline_max_items). It does not explicitly discuss when not to use the tool or compare with siblings, but the sibling tools are unrelated to attachments, 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.

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?

With no annotations, the description should disclose more behavioral traits. It indicates a read operation but lacks details on side effects, authentication requirements, rate limits, or data freshness. The list of returned fields is helpful but incomplete for full 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 a single, well-structured sentence that immediately conveys the tool's purpose and included data fields. No unnecessary words or repetition.

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 simple tool with one parameter and no output schema, the description adequately covers what the tool does and the type of data returned. It could be improved by mentioning return format or behavior when the company is not found, but it is largely 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% because the single parameter 'corp' has a description (company name/stock code/corp_code). The tool description does not add additional semantic value beyond what is already in the schema, so the baseline score of 3 is appropriate.

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 company overview and lists specific data fields (industry, establishment date, representative, etc.). It uses a specific verb (조회합니다) and resource (기업의 개황), distinguishing it from sibling tools that focus on financials or holdings.

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 the tool is for basic company information but does not explicitly state when to use it versus alternatives, nor does it provide exclusion criteria or if additional tools might be needed for specific fields.

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

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description bears full burden. It indicates a read operation ('조회'), and details that timeline mode collects events in parallel and integrates them by date, revealing batch behavior. This is valuable context beyond a simple query.

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 two sentences, front-loading the core purpose and then detailing modes. Every sentence provides essential information with zero waste. Highly 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 has 6 parameters and no output schema, the description covers the main functionality and mode differentiation well. It could optionally mention the return format, but the core behavior is sufficiently described for an agent to use correctly.

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 meaning by explaining the purpose of each mode and the automatic capital-related event selection in timeline mode when event_types is omitted. This goes beyond the schema's enum lists.

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 queries 36 types of corporate events from DS005 major reports. It distinguishes two modes (single and timeline) and, given sibling tools are about other financial data, this tool's purpose is unique and well-defined.

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 explicitly explains when to use each mode: single for detailed event_type inquiry, timeline for capital-related events in parallel and date-sorted. It positions timeline as a 'killer mode' for extracting capital stress narratives. No explicit when-not, but context 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.1/5.0
Behavior3/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as data freshness, performance limits, or side effects. It only states what it does, not how it behaves or what constraints exist. Since annotations are absent, the description carries the burden but doesn't fully address it.

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 with only two sentences, no redundancy, and places the core purpose first followed by a helpful alternative reference. Every word 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?

With 4 parameters (2 required) and no output schema, the description covers the main composite query functionality and points to an alternative, but does not explain return format, parameter constraints (e.g., year minimum), or how the report parameter affects results. The schema fills some gaps, but the description 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 50% (descriptions for corp and sections only). The description adds value by explaining the six possible sections in prose, reinforcing the sections parameter, but does not clarify the year or report parameters beyond what the schema provides (e.g., year range, quarterly options). Thus, it provides marginal improvement over 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 it performs a composite query of 6 specific executive compensation sections, using strong verbs like '합성 조회' (composite query) and explicitly lists all sections, distinguishing it from sibling tool get_periodic_report which handles 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 Guidelines5/5

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

It explicitly tells when to use this tool (for all six sections at once) and when to use the alternative (individual sections via get_periodic_report), providing clear usage context and exclusions.

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

TDQS

A3.6/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. Mentions speed and data volume differences between scopes, but does not disclose mutability, authentication needs, or side effects. Adequate 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.

Conciseness4/5

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

Efficient single sentence front-loading purpose. Information-dense but well-structured for quick understanding.

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, so description must explain return values. It does so for scope levels (rows, core items) but lacks details on error handling, nulls, or specific field names. Adequate for simple use cases.

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 high (83%), so the description adds marginal value beyond parameter-level details. The description summarizes scopes but does not enrich parameter meaning significantly.

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 financial information with two distinct scopes (summary and full), listing specific accounts and statements. It distinguishes from siblings by focusing on financial statements vs other corporate data.

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?

Implied usage via scope options (single vs multi, summary vs full) but no explicit guidance on when to prefer this over siblings like get_xbrl or other tools. No exclusion criteria.

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

get_major_holdingsB

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

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

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It only states 'snapshot' without detailing data freshness, rate limits, permissions, or what happens when no data exists. The composite nature is mentioned but lacks depth on 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?

The description is a single well-structured sentence that front-loads the key concept. Every word is meaningful and earns its place, with no redundancy.

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 5 parameters and no output schema, the description is too minimal. It lacks explanation of return format, pagination, result combination, or default behavior. For a composite tool, more completeness is needed.

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 100%, so baseline is 3. The description does not add additional meaning beyond what the schema already provides for each parameter; it only gives high-level context about the composite query.

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 composite query of two types of equity disclosures (major holdings and insider holdings) as a snapshot. The verb '조회' and resource '지분공시 2종 합성' are specific and distinguish from siblings like get_shareholders which likely handles only one type.

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 a composite snapshot but does not explicitly state when to use this tool versus alternatives like get_shareholders or how to choose between included types. No exclusions or alternative recommendations are provided.

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 must carry the burden. While it explains the scope (29 sections), it does not discuss side effects, authentication needs, rate limits, or behavior when data is missing. Adequate 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?

Single, well-structured sentence with essential information front-loaded. Examples and alternative tool mention are concise. No wasted words.

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 4 parameters, no output schema, and no annotations, the description is fairly complete. It explains the tool's scope, key parameter options, and provides an alternative for full text. Lacks output format or error handling details, but sufficient for a retrieval 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?

Schema description coverage is 50%. The description adds value by grouping report_type enum values into categories (shareholders, executives, etc.) and providing an example. It compensates for the coverage gap by explaining the meaning of the key parameter 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 it retrieves 29 detailed sections of a periodic report via a single tool call using the report_type enum, with specific examples (e.g., largest shareholder, executive compensation). It also distinguishes the sibling tool download_document for full text.

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?

Description explicitly states when to use this tool (for specific sections) and when not to (use download_document for full text). No ambiguity.

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

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 carries the full burden. It discloses that the tool returns four sections but does not mention read-only nature, permissions, or potential side effects. The transparency is adequate for a retrieval tool but not detailed.

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, consisting of a main sentence and a parenthetical. Every part is informative and front-loaded. No wasted words.

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 moderate complexity, the description covers the main purpose, usage guidance, and key parameter behavior. It could mention the combined response structure, but for a tool with four sections it is fairly 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 50%. The description adds value by explaining the 'sections' parameter defaults and listing the four sections in Korean, mapping to enum values. However, it does not clarify the 'corp', 'year', or 'report' parameters beyond the schema. Baseline score of 3 with partial compensation.

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's purpose as a governance structure snapshot aggregating four specific sections. It uses a specific verb-resource pairing ('composite query') and distinguishes itself from the sibling tool get_periodic_report by indicating it does a combined query.

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 composite query of all four sections) and when to use an alternative (get_periodic_report for a single section). This provides clear usage guidance.

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

get_xbrlB

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

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

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description minimally discloses behavior: it describes output formats and sizes but omits any effects on the system, authorization needs, or side effects. It does not state that the operation is read-only.

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 with a clear break into format options. It is front-loaded with the main purpose and includes key details efficiently.

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 moderate complexity, the description covers format choices, sizes, and applicability of parameters. It lacks error handling or prerequisite info but is otherwise adequate.

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 echoes parameter details with slight additions (e.g., automatic industry response for markdown_full). It adds marginal value beyond the schema.

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 XBRL financial statements and explains three format options with specific characteristics. However, it does not explicitly distinguish from sibling tools like get_financials or get_periodic_report.

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 explains when to use each format (raw, markdown, markdown_full) based on output type and size, but does not provide guidance on when to choose this tool over alternatives or mention prerequisites.

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

TDQS

A3.6/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 full burden. It describes aggregation and calculation behavior but does not disclose side effects, permissions, or limitations. Adequate but could be more transparent.

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?

Description is concise and front-loaded with purpose. Only one paragraph, no wasted words, though it could benefit from clearer structuring of 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?

Given 5 parameters, no output schema, and no annotations, description covers core functionality but lacks explanation of output format or interpretation of results. Adequate but not fully 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%, so the schema already describes each parameter. The description adds context (e.g., Buffett philosophy, cluster threshold logic) beyond schema, but does not significantly enhance understanding of individual parameters.

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 aggregates insider transactions into buy/sell clusters, calculates net change, number of buyers, and quarterly clusters. It also mentions the Buffett-style signal, which distinguishes it from sibling tools like buffett_quality_snapshot and 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 Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. Usage is implied from the description of what it does, but no guidance on context or exclusions is provided.

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
queryYes회사명(한/영), 6자리 종목코드, 또는 8자리 corp_code
limitNo최대 반환 개수

TDQS

A4.6/5.0
Behavior4/5

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

The description discloses the sorting order (listed companies first, then exact match, then short name) and notes that it returns candidates for ambiguous queries. No annotations are provided, so the description carries the burden, and it covers key behavioral traits adequately, though it could mention error handling or empty results.

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 two sentences, both highly informative and front-loaded. The first sentence states the action and resource, the second provides guidance. No unnecessary words.

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 absence of an output schema, the description adequately implies the return of candidate matches and the sorting order. It could be more explicit about the response format (e.g., list of corp_codes with names), but the intended use case is clear.

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 each parameter has a description. The tool description adds value by specifying the allowed input types for the query parameter (company name, stock code, corp_code) and the usage context, which goes beyond the schema's parameter 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's purpose: to look up the OpenDART corp_code by company name or stock code. It also distinguishes itself from sibling tools by noting that other tools automatically resolve company names, but this tool is for manual candidate checking when results are ambiguous.

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 provides usage guidelines: it explains that company names are automatically resolved in other tools, and this tool should only be used when automatic resolution results are ambiguous. This helps the agent decide when to invoke this tool versus relying on automatic resolution.

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
corpNo회사명/종목코드/corp_code. 생략 시 전체
beginNo시작일 YYYY-MM-DD (생략 시 기본값)
endNo종료일 (생략 시 오늘)
daysNobegin 대신 오늘 기준 과거 N일 (preset 모드 기본 7, 일반 90)
kindNo공시유형: periodic/major/issuance/holdings/audit/other/fund/abs/exchange/ftc
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·키워드 자동 + 전량 페이지 병렬 수집.
final_onlyNo최종보고서만 (정정공시 제외)
include_correctionsNo정정공시 포함 (preset 모드 전용). correction_all 은 자동 true.
all_pagesNopreset 없이도 기간 전체를 병렬 수집. true 시 page/size 대신 limit 적용.
pageNo페이지 모드 시 페이지 번호
sizeNo페이지 모드 시 페이지 크기
limitNo배치 모드 최종 반환 개수 상한
concurrencyNo배치 모드 페이지 병렬 동시성 (1~10, 기본 5). 높이면 빠르지만 DART 일일 20,000건 한도/분당 쿼터 근접 위험.

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 fully carries the burden. It discloses parallel fetching, concurrency settings, API quota warnings (daily 20k limit, per-minute quota), and mode behaviors. Also links rcp_no to other tools.

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?

Single dense paragraph covering modes, parameters, and connections. Could be more structured (e.g., bullet points), but every sentence adds value. Concise overall.

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 high schema coverage and no output schema, the description explains core functionality well: modes, parameters, API limits, and tool integration. Lacks output format details but is adequate for selection and invocation.

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%, baseline 3. Description adds context: explains how parameters like preset, all_pages, page, size, limit, concurrency map to modes, and warns about concurrency affecting API quotas. This goes beyond schema descriptions.

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

Purpose5/5

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

The description clearly states it searches DART disclosures and specifies three distinct modes (basic, preset, all_pages), distinguishing it from siblings like download_document and get_attachments. Uses specific verb 'search' and resource 'disclosures'.

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?

Explains the three modes and when to use each, including the preset list and parallel fetching. Mentions concurrency and API quota limits. Does not explicitly list when not to use or compare to all siblings, but provides sufficient guidance.

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.3
    • 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/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, covering company overview, financials, XBRL, disclosures, attachments, corporate events, shareholdings, insider trading, executive compensation, anomaly detection, and quality analysis. Overlaps are minimal and clarified by descriptions.

Naming Consistency4/5

Most tools follow a verb_noun pattern (get_*, search_*, download_*, resolve_*), but three tools (buffett_quality_snapshot, disclosure_anomaly, insider_signal) deviate from this convention, making the set slightly inconsistent.

Tool Count5/5

With 15 tools, the set is well-scoped for a Korean financial disclosure API. It covers all necessary areas without being overwhelming or too sparse.

Completeness5/5

The tool set provides comprehensive coverage for typical Korean company analysis workflows, including company info, financials, disclosures, events, shareholdings, insider trading, and governance anomalies. No obvious gaps are present.

Maintenance

ActivitySlowing
ResponsivenessSlow

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
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query Korean listed companies' financial statements, public disclosures, executive information, and shareholder structures in real-time using the DART API.
    2
    -
  • 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
    B
    quality
    D
    maintenance
    Provides natural language access to South Korean corporate disclosure data, financial statements, and shareholder information through the DART Open API. It enables users to query 83 different tools for real-time reporting and regulatory filings from Korean listed companies.
    83
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to analyze Korean financial disclosures (DART) with insider trading signals, accounting risk scores, Buffett-style quality checklists, and automatic conversion of HWP/PDF attachments to markdown.
    15
    327
    3
    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/chrisryugj/korean-dart-mcp'

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