MCP server for DartLab — Korean DART & US SEC EDGAR filings as structured Python data. Provides financial analysis, company disclosure, and quantitative tools.
DartLab exposes 7 financial analysis tools with Korean-language descriptions and basic input schemas. However, critical gaps undermine production readiness: (1) Descriptions are domain-specific but lack LLM-optimized guidance on WHEN to use each tool vs. alternatives. (2) Input schemas present but lack enums for constrained fields (e.g., 'group' in company_analysis accepts free-form strings like 'financial, valuation, governance' with no enum constraint). (3) No output schemas documented, LLMs cannot predict response structure for downstream chaining. (4) Parameter descriptions are minimal (e.g., 'stock_code' lacks format guidance; 'period' says 'if unspecified use latest' but no format specified). (5) No error handling guidance, tools fail silently on invalid inputs. (6) Tool names lack action verbs (company_analysis, company_panel, gather_flow are noun-heavy; should be analyze_company, get_company_panel, fetch_flow). Baseline: 194 chars avg description, 72 chars avg param annotation, these tools average ~100 chars description, ~40 chars param annotation.
Analysis 엔진은 단일 기업의 재무제표, 가치평가, 지배구조, 전망, 기업 단위 매크로 민감도를 22개 분석 축으로 읽는 실행 스킬이다.
감사 리스크 판독 — DART 감사보고서 (auditor opinion · key audit matters · 강조사항 · 계속기업 가정 의문) 파싱. 외부감사인 의견 + KAM (핵심감사사항) 추출로 부도 위험 사전 감지.
Company.filings 응용 — 이벤트 timestamp + 본문 abstract.
임원 보수 판독 — 임원 보수 ≥ 5억 원 individual 공개 (자본시장법 §159, 2013-11-29 시행). US proxy NEO-5 와 달리 등기/미등기/퇴직 전원 공개. 급여 / 상여 / 주식매수선택권 행사이익 / 기타근로소득 / 퇴직소득 분해.
Company 엔진은 종목코드 하나를 target으로 고정하고 재무, 공시, 검색, 분석, 신용, 수집, 퀀트, 매크로, 스토리, 산업 연결을 제공하는 facade 실행 스킬이다.
dartlab.gather("flow", ...) — KRX 외국인/기관/개인 종목별 일별 net-buy. 한국 unique disclosure (US 시장은 종목별 net-buy 공개 X). KOSPI/KOSDAQ 외국인 수급의 가장 중요한 daily signal.
감사 리스크를 전상장사 횡단으로 (감사의견 · 감사인변경 · 특기사항 · 감사독립성비율)
No output schemas documented. LLMs cannot predict response structure, breaking tool chaining and forcing agents to guess field names for downstream calls.
Tool names lack action verbs. 'company_analysis', 'company_panel', 'gather_flow' are noun-heavy and ambiguous. Should be 'analyze_company', 'get_company_panel', 'fetch_flow' to signal intent.
Constrained parameters lack enums. 'group' in company_analysis accepts free-form strings ('financial, valuation, governance, outlook, macro_sensitivity') with no enum constraint. LLMs will hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Parameter descriptions are minimal and lack format guidance. 'period' says 'if unspecified use latest' but does not specify format (YYYY, YYYY-MM, YYYY-MM-DD?). 'stock_code' lacks format (KOSPI code vs EDGAR ticker distinction unclear).
No error handling guidance. Tools fail silently on invalid stock codes, date ranges, or periods. No recovery hints (e.g., 'If stock_code not found, try search_companies() first').