Powerful OpenDART API-based Korean corporate disclosure tools for accounting professionals
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
An eocpa token (free at https://eocpa.kr/token) or your own OpenDART API key (free at https://opendart.fss.or.kr) — either kind, same header. Required for tool calls; discovery (tools/list) works without it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
MyDART MCP의 download_document 도구는 공시 원문을 마크다운으로 읽고 검색합니다(heading·표 구조 보존). 감사보고서·주석별 조회 포함. [Purpose] - Full disclosure text; audit analysis (감사의견·KAM): get_audit_report. - 감사보고서·연결감사보고서 원문·주석: here (role·sections), not get_attachments. - 비상장 non-filers: the F 감사보고서 rcept IS the route to 재무제표·주석. - ZIP 밖 형제문서(정관·운영실태보고서)·스캔: get_attachments. XBRL: get_financials(rcept_no). [Usage] 1. "이 사업보고서 원문 읽어줘" → rcept_no="20260310002820" 2. "연결감사보고서 특수관계자 주석" → role="consolidated_audit", sections=["특수관계자"] 3. "원문에서 횡령·배임 찾아줘" → find=["횡령","배임"] [Response] - documents[]: metadata only (role per 원문) — content ONLY with all_docs=true [Rules] - 감사의견·KAM are in 별도(_00760)/연결(_00761): pick by role. - Long doc: sections=[] → outline (헤딩 + 주석 번호별), then sections=[index|제목]. - find = 표 단위 발췌 from every doc. 0 matches ≠ absent — 스캔 이미지 표는 get_attachments(mode=images). - truncated=true → raise truncate_at or pick sections. - 원문 XML 없음([014]) → 뷰어 자동 전환(source=viewer): documents[]·doc_index = 뷰어 섹션.
14-digit 접수번호 from search_disclosures; hyphens·spaces stripped.
Search EVERY 원문 XML in the ZIP (본문 + 별도/연결 감사보고서); returns `find` (table-level excerpt bundles + other hit locations) INSTEAD of content. Several terms in one filing → ONE call with an array (max 8, OR; blocks with more terms first), not parallel calls. One string = ONE term (commas not split). Case-insensitive literal, not regex; 0 hits → retried letter-spaced (`핵 심 감 사`). doc_index/role narrows to that 원문 (doc_index out of range → searches all, with a note). Whole 절·주석 of a hit: same doc_index/role + sections=[section_index]. format=markdown only; not with all_docs. source=viewer ([014]): top-level 뷰어 sections (first 24; sub-sections inside parents); bundles[].doc_index = section index.
Pick the 원문 by role instead of doc_index: separate_audit = 감사보고서(별도, `_00760`), consolidated_audit = 연결감사보고서(`_00761`), internal_control = 내부회계관리제도 보고서. No such 원문 in the ZIP (e.g. no 연결 without 종속기업) → fails with the 원문 list. Not with doc_index·all_docs.
markdown = DART XML → 마크다운; raw = original XML; text = tags stripped (tables flattened). source=viewer ([014], no 원문 XML): no raw; markdown/text from 뷰어 HTML.
Every 원문 XML in the ZIP with content as documents[] (본문 + 별도/연결 감사보고서). source=viewer ([014]): one entry per top-level 뷰어 section (max 24; sub-sections nested).
Read only PART of the selected 원문 (role/doc_index; else 본문). [] = 목차 only (headings + one row per 주석 번호; 주석 boundaries inferred from 'N.'). Then pick by 목차 index (numbers), partial 제목 match (strings, spaces ignored; both 연결·별도 주석 if both exist) or "주석 31". A pick inside another comes back once; no match → 목차 instead. source=viewer ([014]): 뷰어 목차 (numbers = documents[].index; strings = 제목 only, no 주석 번호). format=markdown only; not with find·all_docs.
0-based index of one 원문 XML in the ZIP (documents[].index); omitted = 0 = 본문. 감사보고서: use role, not a guessed 1~2. Out of range → 본문 WITH a note in notes — check it. source=viewer ([014]): picks one 뷰어 목차 섹션 (same index as get_attachments mode=text sections).
Max content chars (default 300,000; excess cut; out-of-range clamped). Caps the sections total; all_docs: split across documents (per_doc_truncate_at). Ignored with find.
Max total bundle size, UTF-8 bytes not chars (한글 3 bytes; default 12,000); oversized bundle cut by table row (header rows kept), clipped=true.
Max bundles (default 5); other hits → locations only. Fewer if find_max_bytes fills first.
MyDART MCP의 download_document 도구는 공시 원문을 마크다운으로 읽고 검색합니다(heading·표 구조 보존). 감사보고서·주석별 조회 포함. [Purpose] - Full disclosure text; audit analysis (감사의견·KAM): get_audit_report. - 감사보고서·연결감사보고서 원문·주석: here (role·sections), not get_attachments. - 비상장 non-filers: the F 감사보고서 rcept IS the route to 재무제표·주석. - ZIP 밖 형제문서(정관·운영실태보고서)·스캔: get_attachments. XBRL: get_financials(rcept_no). [Usage] 1. "이 사업보고서 원문 읽어줘" → rcept_no="20260310002820" 2. "연결감사보고서 특수관계자 주석" → role="consolidated_audit", sections=["특수관계자"] 3. "원문에서 횡령·배임 찾아줘" → find=["횡령","배임"] [Response] - documents[]: metadata only (role per 원문) — content ONLY with all_docs=true [Rules] - 감사의견·KAM are in 별도(_00760)/연결(_00761): pick by role. - Long doc: sections=[] → outline (헤딩 + 주석 번호별), then sections=[index|제목]. - find = 표 단위 발췌 from every doc. 0 matches ≠ absent — 스캔 이미지 표는 get_attachments(mode=images). - truncated=true → raise truncate_at or pick sections. - 원문 XML 없음([014]) → 뷰어 자동 전환(source=viewer): documents[]·doc_index = 뷰어 섹션.
| Argument | Type | Description |
|---|---|---|
| find | any | Search EVERY 원문 XML in the ZIP (본문 + 별도/연결 감사보고서); returns `find` (table-level excerpt bundles + other hit locations) INSTEAD of content. Several terms in one filing → ONE call with an array (max 8, OR; blocks with more terms first), not parallel calls. One string = ONE term (commas not split). Case-insensitive literal, not regex; 0 hits → retried letter-spaced (`핵 심 감 사`). doc_index/role narrows to that 원문 (doc_index out of range → searches all, with a note). Whole 절·주석 of a hit: same doc_index/role + sections=[section_index]. format=markdown only; not with all_docs. source=viewer ([014]): top-level 뷰어 sections (first 24; sub-sections inside parents); bundles[].doc_index = section index. |
| role | string | Pick the 원문 by role instead of doc_index: separate_audit = 감사보고서(별도, `_00760`), consolidated_audit = 연결감사보고서(`_00761`), internal_control = 내부회계관리제도 보고서. No such 원문 in the ZIP (e.g. no 연결 without 종속기업) → fails with the 원문 list. Not with doc_index·all_docs. |
| format | string | markdown = DART XML → 마크다운; raw = original XML; text = tags stripped (tables flattened). source=viewer ([014], no 원문 XML): no raw; markdown/text from 뷰어 HTML. |
| all_docs | boolean | Every 원문 XML in the ZIP with content as documents[] (본문 + 별도/연결 감사보고서). source=viewer ([014]): one entry per top-level 뷰어 section (max 24; sub-sections nested). |
| rcept_no* | string | 14-digit 접수번호 from search_disclosures; hyphens·spaces stripped. |
| sections | array | Read only PART of the selected 원문 (role/doc_index; else 본문). [] = 목차 only (headings + one row per 주석 번호; 주석 boundaries inferred from 'N.'). Then pick by 목차 index (numbers), partial 제목 match (strings, spaces ignored; both 연결·별도 주석 if both exist) or "주석 31". A pick inside another comes back once; no match → 목차 instead. source=viewer ([014]): 뷰어 목차 (numbers = documents[].index; strings = 제목 only, no 주석 번호). format=markdown only; not with find·all_docs. |
| doc_index | integer | 0-based index of one 원문 XML in the ZIP (documents[].index); omitted = 0 = 본문. 감사보고서: use role, not a guessed 1~2. Out of range → 본문 WITH a note in notes — check it. source=viewer ([014]): picks one 뷰어 목차 섹션 (same index as get_attachments mode=text sections). |
| truncate_at | integer | Max content chars (default 300,000; excess cut; out-of-range clamped). Caps the sections total; all_docs: split across documents (per_doc_truncate_at). Ignored with find. |
| find_max_bytes | integer | Max total bundle size, UTF-8 bytes not chars (한글 3 bytes; default 12,000); oversized bundle cut by table row (header rows kept), clipped=true. |
| find_max_bundles | integer | Max bundles (default 5); other hits → locations only. Fewer if find_max_bytes fills first. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"rcept_no"
],
"properties": {
"find": {
"anyOf": [
{
"type": "string",
"maxLength": 200,
"minLength": 1
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 8,
"minItems": 2
}
],
"description": "Search EVERY 원문 XML in the ZIP (본문 + 별도/연결 감사보고서); returns `find` (table-level excerpt bundles + other hit locations) INSTEAD of content. Several terms in one filing → ONE call with an array (max 8, OR; blocks with more terms first), not parallel calls. One string = ONE term (commas not split). Case-insensitive literal, not regex; 0 hits → retried letter-spaced (`핵 심 감 사`). doc_index/role narrows to that 원문 (doc_index out of range → searches all, with a note). Whole 절·주석 of a hit: same doc_index/role + sections=[section_index]. format=markdown only; not with all_docs. source=viewer ([014]): top-level 뷰어 sections (first 24; sub-sections inside parents); bundles[].doc_index = section index."
},
"role": {
"enum": [
"main_body",
"separate_audit",
"consolidated_audit",
"internal_control"
],
"type": "string",
"description": "Pick the 원문 by role instead of doc_index: separate_audit = 감사보고서(별도, `_00760`), consolidated_audit = 연결감사보고서(`_00761`), internal_control = 내부회계관리제도 보고서. No such 원문 in the ZIP (e.g. no 연결 without 종속기업) → fails with the 원문 list. Not with doc_index·all_docs."
},
"format": {
"enum": [
"markdown",
"raw",
"text"
],
"type": "string",
"default": "markdown",
"description": "markdown = DART XML → 마크다운; raw = original XML; text = tags stripped (tables flattened). source=viewer ([014], no 원문 XML): no raw; markdown/text from 뷰어 HTML."
},
"all_docs": {
"type": "boolean",
"default": false,
"description": "Every 원문 XML in the ZIP with content as documents[] (본문 + 별도/연결 감사보고서). source=viewer ([014]): one entry per top-level 뷰어 section (max 24; sub-sections nested)."
},
"rcept_no": {
"type": "string",
"pattern": "^\\d{14}$",
"description": "14-digit 접수번호 from search_disclosures; hyphens·spaces stripped."
},
"sections": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"minimum": 0
},
{
"type": "string",
"maxLength": 100,
"minLength": 1
}
]
},
"maxItems": 24,
"description": "Read only PART of the selected 원문 (role/doc_index; else 본문). [] = 목차 only (headings + one row per 주석 번호; 주석 boundaries inferred from 'N.'). Then pick by 목차 index (numbers), partial 제목 match (strings, spaces ignored; both 연결·별도 주석 if both exist) or \"주석 31\". A pick inside another comes back once; no match → 목차 instead. source=viewer ([014]): 뷰어 목차 (numbers = documents[].index; strings = 제목 only, no 주석 번호). format=markdown only; not with find·all_docs."
},
"doc_index": {
"type": "integer",
"minimum": 0,
"description": "0-based index of one 원문 XML in the ZIP (documents[].index); omitted = 0 = 본문. 감사보고서: use role, not a guessed 1~2. Out of range → 본문 WITH a note in notes — check it. source=viewer ([014]): picks one 뷰어 목차 섹션 (same index as get_attachments mode=text sections)."
},
"truncate_at": {
"type": "integer",
"maximum": 2000000,
"minimum": 1000,
"description": "Max content chars (default 300,000; excess cut; out-of-range clamped). Caps the sections total; all_docs: split across documents (per_doc_truncate_at). Ignored with find."
},
"find_max_bytes": {
"type": "integer",
"maximum": 60000,
"minimum": 1000,
"description": "Max total bundle size, UTF-8 bytes not chars (한글 3 bytes; default 12,000); oversized bundle cut by table row (header rows kept), clipped=true."
},
"find_max_bundles": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Max bundles (default 5); other hits → locations only. Fewer if find_max_bytes fills first."
}
}
}MyDART MCP의 find_corp_code 도구는 회사명·종목코드로 DART 법인 식별자(corp_code)의 후보를 확인합니다. [Purpose] - IMPORTANT: first call when a company's corp_code is unknown. - Also to disambiguate same-named companies. - ID resolution only — 업종·data location: get_company_profile; disclosure listings: search_disclosures. [Usage] 1. "카카오" → corp_code 획득 → 재무제표 조회(get_financials) 2. "삼성전자" → corp_code 획득 → 임원 현황 조회(get_periodic_report) 3. "'동양' 들어가는 회사 후보 보여줘" → query="동양", limit=20 4. "005930이 어느 회사야?" → query="005930" [Response] - stock_code: 보통주 code (kept after 상장폐지·합병); empty = 비상장. - count = rows returned (capped by `limit`), not the total match count. 0 hits adds `notes`. [Rules] - `results` is a similarity-ranked candidate array — do not assume the first item is the answer. - corp_code identifies the DART LEGAL ENTITY CODE, not the listing ticker. 우선주 codes map to the 보통주 issuer; ETF/ETN codes have no mapping. - Common names may overflow the default `limit` — raise it when candidates look truncated.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max candidates returned |
| query* | string | One 회사명 (한/영), 6-char 종목코드 (005930·0126Z0) or 8-digit corp_code |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Max candidates returned"
},
"query": {
"type": "string",
"minLength": 1,
"description": "One 회사명 (한/영), 6-char 종목코드 (005930·0126Z0) or 8-digit corp_code"
}
}
}MyDART MCP의 get_attachments 도구는 공시의 첨부파일 목록과 형제문서 본문·페이지 이미지를 다룹니다. [Purpose] - Attachment list + 형제문서 routing; body text = mode=text. 감사보고서·주석은 download_document(role). - 자금부정통제 붙임·경영진 운영실태보고서 live here (mode=text; 붙임 = attachment_links[].retrieve). - Scan-only (도장·서명·스캔 서식): mode=images only. [Usage] 1. 정관·영업보고서 본문 → list 로 dcm_no 확보 → dcm_no, mode="text" 2. 표가 이미지뿐이면 mode="images" (뒷장 image_from, PDF 페이지 pages) [Response] - format: hwpx/hwp/pdf/docx/doc/xlsx/xls/zip/html/unknown - images: source="viewer" or "pdf" — different field shapes. [Rules] - supported:false → unsupported_reason·suggestion·note·retrieve·next_step = the fallback route; follow it verbatim. - No bulk sweeps — mass viewer calls bring DART IP bans. - Ladder: text (표 lossless) → empty·링크 껍데기 body → images → download_url. Attachment files are never parsed server-side. - images returns pictures: OCR·판독 is the client's job, 1 image per capped call (image_from). - partial:true ⇒ section_errors[]; markdown is partial — 빈 곳 ≠ 사실 없음.
| Argument | Type | Description |
|---|---|---|
| mode | string | list: attachment list only, nothing downloaded (cheap). text: document body as 마크다운 from the 뷰어 원문 — text·tables lossless. images: embedded raster (도장·스캔본·차트). No filename/index → 뷰어 원본 JPEG in document order, per-section eleId (manifest.source="viewer"); filename or index → scans THAT attachment PDF: decoded PNGs in page order, with page numbers (source="pdf"; pages narrows it). |
| index | integer | images mode: 0-based index of the attachment to scan; filename wins if both. Selects the PDF-scan route, like filename. |
| pages | string | images mode, PDF-scan route: 1-based pages WITHIN the attachment picked by filename/index (requires one), e.g. "2,4,7-9". Unset = that PDF's FIRST 40 pages only. Max 2000 pages per call — wider span rejected, not trimmed. |
MyDART MCP의 get_audit_profile 도구는 감사인·감사의견·업무수행이사에 감사보수·감사투입시간·실사수행내역·외부조회 실시여부 등 외부감사 실시내역을 한 표로 요약해 반환합니다. [Purpose] - Fact/figure asks: "who audited, at what fee, how was the 실사". - 강조사항 comes structured (emphasis); full 의견근거·KAM·강조 text: get_audit_report. - ICFR detail: get_internal_control; 계속기업 quant: get_going_concern. - Company lists (모집단): search_audit_findings. [Usage] 1. "삼성전자 2024 감사보수·비감사보수" → corp="삼성전자", year=2024 2. "감사인·감사보수만 빠르게" → corp="…", year=2024, light=true [Response] - fees `_m` suffix = 백만원. - opinion domain: 적정/한정/부적정/의견거절. [Rules] - data_available=false = the filing was not found (e.g. not yet filed) — do NOT read null fields as "confirmed absent". - audit_only=true (F 단독공시, unlisted) → fees are structurally absent (사업보고서 전용), not a defect. - For 연결/별도 split read kam.by_fs_div, not kam.topics (representative fallback). - ALWAYS read applicability.guidance[] — regime notes and next-tool routing. - 감사인 교체/연속연수 are NOT returned — call per year and compare auditor.name.
| Argument | Type | Description |
|---|---|---|
| corp* | string | 회사명/종목코드/corp_code |
| year* | integer | 결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026). |
| light | boolean | Skip 원문 parsing — structured JSON only, fast; omits 실사 (incl. fees.headcount), 연결/별도 split, engagement_partner |
MyDART MCP의 get_audit_report 도구는 감사보고서 본문을 문단 단위로 구조화해 문단별 원문 텍스트를 반환합니다 — 감사의견·감사의견근거·KAM·강조사항·기타사항·계속기업가정불확실성. [Purpose] - For verbatim 감사보고서 narrative paragraphs. Structured fact summaries (보수·실사 등): get_audit_profile. - ICFR detail and its fit with the 재무제표 감사의견: get_internal_control. [Usage] 1. "LG에너지솔루션 2024 KAM 문단 전문" → corp="LG에너지솔루션", year=2024 2. "삼부토건 FY2024 별도 의견거절 근거 원문" → corp="삼부토건", year=2024, fs_div="OFS" 3. 발견사항만 → sections="summary"; 잘리면 truncate_at 상향 [Response] - sections[].key = KSA700 elements (list in sections arg). opinion: 적정/한정/부적정/의견거절. - fs_label: 연결/별도. source_note = F 단독공시, correction_note = 정정 채택/생략. [Rules] - kam.count=0 is normal if none_declared or 의견거절 (감사기준서 705 문단 29); else suspect omission. - Unlisted (F 단독공시) legitimately lacks KAM·업무수행이사 (see source_note). - 재무제표·주석 FIGURES: download_document. - body_omitted:true = section EXISTS, body not requested (≠ absent) — re-call with sections. - internal_control = verdict only; ICFR 정본은 get_internal_control.
| Argument | Type | Description |
|---|---|---|
| corp | string | 회사명/종목코드/corp_code — corp+year required without rcept_no; locates the 사업보고서 (비상장: 감사보고서 F 단독공시 fallback) |
| year | integer | 결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026). |
| fs_div | string | Default both = 연결(CFS)+별도(OFS) → reports[] up to 2 entries; reading only the first drops an axis. |
MyDART MCP의 get_company_profile 도구는 기업개황(업종·대표자·결산월·상장구분)과 데이터 위치(data_location)를 조회합니다. [Purpose] - Basics + routing check before 재무·감사 calls on unfamiliar (esp. 비상장) companies. - 감사인·감사의견·감사보수: get_audit_profile; name ambiguity: find_corp_code. [Usage] 1. "카카오는 뭐 하는 회사야?" → corp="카카오" 2. "교보생명 FY2024 재무는 어디서 봐?" → corp="교보생명", year=2024 3. "종목코드 068270 기업 개황" → corp="068270" [Response] - data_location.filing_tier: listed(financials=JSON API) / listed_konex(NOT in structured financial APIs — financials live in 사업보고서 원문) / unlisted_reporting / audit_only(financials+notes live in 감사보고서 F 단독공시 원문) / no_disclosure_found / unknown - company.corp_cls: Y=코스피/K=코스닥/N=코넥스/E=기타(비상장). acc_mt = 결산월. [Rules] - Route follow-up calls by data_location: audit_only → get_financials returns [013], open f_separate_rcept via download_document instead. listed_konex → empty get_financials is NORMAL, do not retry. - provisional=true (year omitted) is tentative — never conclude 비외감 from no_disclosure_found.
| Argument | Type | Description |
|---|---|---|
| corp* | string | 회사명/종목코드/corp_code |
| year | integer | 회계연도 for judging applicability.data_location. Omitted = latest (provisional). Matters for 비상장사·코넥스 (market as of that year); 코스피·코스닥 = listed, no probe. 비12월 결산: 결산기 시작연도 (same as audit tools); get_financials etc. call the same period year+1 (see fiscal_year_note). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"corp"
],
"properties": {
"corp": {
"type": "string",
"minLength": 1,
"description": "회사명/종목코드/corp_code"
},
"year": {
"type": "integer",
"minimum": 2015,
"description": "회계연도 for judging applicability.data_location. Omitted = latest (provisional). Matters for 비상장사·코넥스 (market as of that year); 코스피·코스닥 = listed, no probe. 비12월 결산: 결산기 시작연도 (same as audit tools); get_financials etc. call the same period year+1 (see fiscal_year_note)."
}
}
}MyDART MCP의 get_corporate_event 도구는 주요사항보고서 자본·지배구조 이벤트 36종(증자·감자·CB/BW/EB·자기주식·합병/분할 등)과 5%룰·임원 지분공시를 조회합니다. [Purpose] - "Who raised/cut stakes, when": event_type="holdings" (5%룰 대량보유·임원/주요주주 소유보고). - 결정의 후속 발행·합병 조건(공모가·인수인): get_registration_statement. - List skims: search_disclosures; 사업보고서 snapshots (최대주주·주식총수): get_periodic_report. [Usage] 1. "카카오 최근 3년 자본 조달 흐름" → corp="카카오", mode="timeline" 2. "이 회사 CB 발행한 적 있어?" → corp="…", event_type="cb_issuance" 3. "자사주 취득·처분 2020년부터" → event_type=["treasury_acquisition","treasury_disposal"], start="2020-01-01" [Response] - date = 최초 공시일 (start/end axis), newest first; fields = latest 정정본 (rcept_no) — corrected: last_filed_date. - 지분공시: total_count = all-time cumulative, filtered_count = in-period (DART takes no dates — filtered client-side). [Rules] - Empty timeline ≠ no events — default set = capital events only (name event_type for more); sections_meta may carry per-endpoint errors. - event_type_counts is pre-truncation (limit cuts timeline only).
| Argument | Type | Description |
|---|---|---|
| end | string | YYYY-MM-DD / YYYYMMDD; default today (period.end_defaulted:true) |
| corp* | string | 회사명/종목코드/corp_code |
| mode | string | single: one event_type. timeline: several event_types (unset → 'capital' group) in parallel, merged into one newest-first list |
| limit | integer | Max timeline rows, newest first by 최초 공시일. Excess cut → truncated=true, total_events = full count. Prefer narrowing start/end over raising limit. |
| start |
MyDART MCP의 get_financials 도구는 매출·영업이익·순이익·자산/부채/자본 등 재무수치를 조회합니다 — 재무 질문 대부분은 이걸로 충분합니다. [Purpose] - 재무제표 figures start here. corp+year = LATEST filing (정정 반영); rcept_no = that filing AS FILED (재작성 전후 대조·합산 검증 — 구 get_xbrl). - 사업보고서 prose: download_document; 부실징후(계속기업): get_going_concern. [Usage] 1. "삼성전자 2025년 매출·영업이익" → corp="삼성전자", year=2025 2. "삼성전자와 SK하이닉스 실적 비교" → corp=["삼성전자","SK하이닉스"] 3. "이 공시본 그대로 전체" → rcept_no="…", sj_div=["BS","IS","CIS","CF","SCE"] [Response] - Row keys: sj_div, account_nm, thstrm_amount(당기)/frmtrm_*(전기)/ bfefrmtrm_*(전전기)/thstrm_add_amount(누계). Amounts are STRINGS. - full: total_count=pre-filter, count=post-filter. rcept_no adds validations. [Rules] - Quarterly/half IS·CIS: CUMULATIVE = thstrm_add_amount, thstrm_amount = that quarter alone; CF thstrm_amount is already YTD; BS: thstrm_amount only (see period_basis). - Cross-check the periods legend (전기/당기 off-by-one) and year_defaulted. - no_data is routing, not an error — follow next_step.
| Argument | Type | Description |
|---|---|---|
| corp | any | 회사명·종목코드·corp_code — string or array (comma list ok). scope=summary: 1 = single, 2+ = comparison (first 200 queried). scope=full: 1 only — extras dropped with a note. Unresolved entries dropped with a note; error only if none resolve. Omit with rcept_no. |
| year | integer | 결산 사업연도 (회계연도, not the filing year) — one per call; annual rows also carry 전기·전전기. Omitted → latest published 사업연도 by 결산월·report (year_defaulted=true). |
| scope | string | summary (default): 주요계정 ~14 per basis (자산·부채 유동/비유동/총계, 자본금·이익잉여금·자본총계, 매출액·영업이익·법인세차감전 순이익·당기순이익·총포괄손익); 연결·별도 together ≈ 28 rows per company (별도-only 14; 금융업 +α). full: 전체 재무제표 filtered by sj_div, hundreds~1k rows. |
| format |
MyDART MCP의 get_going_concern 도구는 계속기업 위험을 정량 재무지표와 감사보고서 기재의 교차로 판정합니다. [Purpose] - 계속기업: 정량 징후 × 감사보고서 기재 대조 — a mismatch is a cue to read the 원문, not a finding. - Lists: search_audit_findings; figures: get_financials; 문단 원문: get_audit_report. [Usage] 1. "이스타코 2024 계속기업 위험 있어?" → corp="이스타코", year=2024 2. "별도 기준 정량 점검" → corp="…", year=2024, fs_div="OFS" [Response] - flags.consecutive_op_loss = NUMBER of 연속 영업손실 years (not a bool); others bool|null. - grade: 판정불가(no data)/양호(0)/주의(1~2)/경계(3~4)/위험(5+) - cross_check.code: both/quant_only/text_only/none/insufficient_data/quant_unavailable/report_unavailable - text: audit_opinion, evidence_source, report_fs_div [Rules] - going_concern_mentioned false = parser found no GC text, not proof of none; null = report not secured. quant_only covers both cases. - 한정/부적정/의견거절: GC matters can sit in 의견근거 — read it (cross_check.next_step). - grade "판정불가" is not "양호". flags null = account not secured, not false. - fs_div (figures) is post-fallback — CFS may return OFS.
| Argument | Type | Description |
|---|---|---|
| corp* | string | 회사명/종목코드/corp_code |
| year* | integer | 결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026). |
| fs_div | string | Default CFS (연결); OFS = 별도. No 연결 → auto fallback to 별도 (response fs_div = basis used). |
MyDART MCP의 get_internal_control 도구는 '감사인'의 내부회계관리제도(ICFR) 감사/검토 보고서를 조회합니다 — 구분·의견·중요한 취약점 여부. [Purpose] - ICFR 의견·취약점 vs 재무제표 감사의견; 취약점 lists: search_audit_findings. - 자금부정통제·경영진 내부회계관리제도 운영실태보고서: not here → get_attachments (사업보고서 rcept, mode=list→dcm_no→mode=text, scans=images; no rcept: search_disclosures preset='annual_report'). - Structured facts: get_audit_profile; full text: get_audit_report. [Usage] 1. "카카오페이 2024 내부회계 의견" → corp="카카오페이", year=2024 2. "연결 기준만" → corp="…", year=2024, fs_div="CFS" [Response] - opinion domain: 적정/부적정/의견거절 — NO '한정'. 검토(review_or_audit)의 의견거절 = 범위제한에 따른 검토결론 불표명. [Rules] - reports is an ARRAY — both gives up to 2 entries (연결·별도). - present=false is usually out-of-scope (read the note), not missing data; an empty CFS entry is normal. - Never conflate a review's 의견거절 with an audit's — check review_or_audit. - 자금부정통제 (FY2025~ mandatory, FY2024 optional)·시정계획 = 경영진 운영실태보고서 — see management_operation_report.steps (applicable=false = F 단독공시: no report exists).
| Argument | Type | Description |
|---|---|---|
| corp* | string | 회사명/종목코드/corp_code |
| year* | integer | 결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026). |
| fs_div | string | Default both = 연결(CFS)+별도(OFS). ICFR is normally 별도 only; 연결 ICFR 감사 only for 전기말 별도자산 2조↑ filers from FY2023. 별도 falls back to a standalone ICFR 공시 if the 감사보고서 embeds none; 연결 never does. |
MyDART MCP의 get_periodic_report 도구는 사업보고서 세부 섹션 28종을 정형 데이터로 조회합니다 — 한 섹션 또는 여러 섹션 동시. [Purpose] - Section tables: 배당·자기주식·최대주주·소액주주·임원보수·회계감사인·회사채 미상환 등. - 재무제표 figures: get_financials. auditor_opinion is one word — KAM·내부회계·강조사항: get_audit_profile / get_audit_report. [Usage] 1. "삼성전자 2025년 배당 내역" → corp="삼성전자", year=2025, report_type="dividends" 2. "카카오 최대주주가 누구야" → corp="카카오", report_type="shareholders" (year 생략 = 최신) [Response] - Amounts are STRINGS. Section status: 000 성공 / 013 무자료. - periods legend maps 당기/전기/전전기 → fiscal years — cite 기수 only after reading it. [Rules] - Non-December closer: apply fiscal_year_note — one year off vs the audit tools. - ARRAY: per-element status (success·013·error mix); all-013 flips to { mode:"no_data", … }. - Listed [013] ≈ legitimate absence (no 배당·자기주식, no eligible 개인별 보수), not failure. - 개인별 보수 2종은 2026-05 서식 개정으로 구판↔V2 이원 — 도구가 자동 라우팅(endpoint· compensation_format 표시). V2 는 1인당 3행(당기·전기·전전기)이라 합계는 fscl_year="당기"만, 주식기준보상 세부는 stk_bsd_cmpn.
| Argument | Type | Description |
|---|---|---|
| corp* | string | 회사명/종목코드/corp_code |
| year | integer | 결산 사업연도 (회계연도, not the filing year) — one per call. Omitted → latest published 사업연도 by 결산월·report (year_defaulted=true). |
| report | string | 1Q·반기·3Q·연차 |
| max_items | integer | Row cap per section; excess cut → truncated=true, total_count = full row count. |
| report_type* | any |
MyDART MCP의 get_registration_statement 도구는 증권신고서 주요정보 6종 — 모집·매출 조건, 인수인, 자금 사용목적, 합병·분할 조건을 정형 JSON 으로 조회합니다. [Purpose] - Filed terms of a 증권신고서: 공모가액·인수인·자금의사용목적·합병비율·주식매수청구권. - Board decision: get_corporate_event / listing scan: search_disclosures(kind="issuance") / narrative (투자위험요소): download_document. [Usage] 1. "대한항공 유상증자 조건" → corp="대한항공", statement_type="equity" [Response] - filings[] = one per 신고서(rcept_no), newest first. sections: general·securities·underwriters·fund_use·sellers·put_right·issued_securities·parties. - date = 접수일 (정정본: 정정 접수일, may fall outside window). Values are raw strings; '-'(해당없음) fields omitted. [Rules] - superseded_by = later version DART omits; if [발행조건확정], 가액·총액·금리 here are 예정 terms (final: its retrieve). Older 정정 not included. - withdrawn:true = 철회신고서 filed. version_check set = check incomplete. - No data ≠ not issued: 사모·일괄신고서·소액공모 out of scope. Per-type status in sections_meta. - fetch_failed/truncated_note types mean "unconfirmed", not "none" — re-query that type.
| Argument | Type | Description |
|---|---|---|
| end | string | YYYY-MM-DD / YYYYMMDD; default today (period.end_defaulted:true) |
| corp* | string | 회사명/종목코드/corp_code (no all-company scan) |
| limit | integer | Max 신고서 returned (per rcept_no, not rows), newest first; default 10. Excess → truncated=true, total_filings = full count |
| start | string | YYYY-MM-DD / YYYYMMDD, matched on 신고서 최초접수일; default 2015-01-01 = data floor, full history (period.defaulted:true) — keep the window wide |
MyDART MCP의 get_valuation_data 도구는 가치평가 데이터(시장 시계열·WACC·유사회사)를 kind 로 골라 조회합니다. [Purpose] - 평가기준일 시세·β checks, WACC build-up, peer comps. - Evidence, not adoption — the 평가자 decides. - 재무수치: get_financials; 업종(KSIC)·시장구분: get_company_profile. [Usage] 1. "에스에프에이 최근 1년 주가" → kind="market", corp="에스에프에이" 2. "반도체장비 업종 피어 멀티플" → kind="peers", ksic="29271" [Response] - Units: *_pct = %, but mrp·srp·tax_rate = decimals (0.08 = 8%); flt_rt = 등락률 %. [Rules] - Returns come from flt_rt, never close deltas (break at 액면분할·병합). - Quote aggregates with n (varies; EBITDA often missing). - peers = KSIC candidates the 평가자 curates; too few relax the prefix 5→4→3 (see prefix_depth_used). - 무차입β (beta.unlevered·beta_unlev) = Hamada on WACC's 기준일 D/E (D 이자부부채 리스 포함, E per equity_basis); peers: E outstanding_plus_nci+우선주, β 2w. - Cite each source·as_of verbatim (조서 정합). - ALWAYS read notes[] — 강등·폴백·주의 accumulate there. - Daily cap on distinct targets per token or key.
| Argument | Type | Description |
|---|---|---|
| kd | number | [wacc] Kd directly, % p.a. 세전 (e.g. 4.5); overrides credit_rating·kd_tenor |
| yq | string | [wacc·peers] 평가기준 분기 YYYYQn (e.g. 2026Q2, lowercase q OK); default latest snapshot |
| end | string | [market] Default: latest 적재일 |
| mrp | number | [wacc] MRP override, decimal; default 0.08 = midpoint of 한국공인회계사회 가이던스 7~9% |
| srp | number | [wacc] SRP override, decimal; skips 분위 판정 |
| corp |
MyDART MCP의 search_audit_findings 도구는 회사를 지정하지 않고 감사보고서 조건으로 상장사·비상장사 목록을 찾습니다. [Purpose] - List/aggregate: "의견거절 회사"·"내부회계 취약점"·"○○회계법인 감사 회사". - Detail: get_audit_profile/get_internal_control; 원문: get_audit_report. [Usage] 1. "FY2024 코스피 의견거절 회사" → year=2024, market="kospi", opinion="disclaimer" 2. 목록·집계만 필요 → fields="brief" 3. "24~25년 ICFR 취약점" → year=[2024,2025] (다년 — coverage.years[]) 4. "비상장 의견거절" → market="unlisted" [Response] - Output market Y=코스피/K=코스닥/N=코넥스/E=비상장; fs_div KOREAN "연결"/"별도". [Rules] - READ coverage.note FIRST — empty result over a non-ingested scope = "not seen", never "does not exist". - fs_div=both(default) → ≤2 rows/company; dedupe corp_code to count companies. - breakdown = baseline over year/market/fs_div only (other filters ignored); ≠ count. - KAM omission suspect: kam=false+kam_required=true+kam_none_declared=false (의견거절 excluded). - ICFR undetected: 연결 icfr.note only when 감사 expected but missing; else read expected_type. - Daily row cap per token or key.
| Argument | Type | Description |
|---|---|---|
| kam | boolean | Has 핵심감사사항(KAM) |
| year* | any | 결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026). Array = multi-year query (e.g. [2024, 2025]): rows carry their own bsns_year; per-year coverage.years[]. |
| limit | integer | Cap on ROWS, not companies. Cut → truncated=true, count = full row count; deduped company count then a floor — narrow market·fs_div·asset_bucket until truncated=false. |
MyDART MCP의 search_disclosures 도구는 DART 공시 목록에서 접수번호(rcept_no)를 찾습니다 — download_document·get_attachments 진입점. [Purpose] - 사업보고서 섹션 데이터는 get_periodic_report, 동명 회사는 find_corp_code 로 corp_code 확정. [Usage] 1. "삼성전자 최근 한 달 공시" → corp="삼성전자", days=30 2. "작년 유상증자 결정 전부" → preset="rights_offering", start="2025-01-01", end="2025-12-31" 3. "CB 발행만(매도·만기전취득 제외)" → preset="cb_issuance" (CB 관련 전부는 "cb") [Response] - corp_cls: Y=코스피, K=코스닥, N=코넥스, E=기타(비상장). - report_nm [기재정정]/[첨부정정]/[첨부추가] prefix = 정정공시; [발행조건확정]=정정본(kept), [정정제출요구]=원본. [Rules] - **Always pass corp when a company is named** — corp-less searches split the period (batch: by month), request budget 60; with corp: 1 request. - Counters nest: total_available ≥ total_fetched ≥ matched ≥ returned; matched > returned = cut by limit, incomplete=true = partial (see incomplete_note). collected_periods = the **only** ranges queried; counters scope to them, the rest is unchecked, not zero. - Preset batch drops 정정공시; page mode·bare all_pages keep them.
| Argument | Type | Description |
|---|---|---|
| end | string | End date (default today) |
| corp | string | 회사명/종목코드/corp_code. Omit = all companies; a batch then splits the period by month, spends up to 60 DART requests (incomplete=true when hit) and can take tens of seconds. With corp: 1 request, a few hundred ms. |
| days | integer | Trailing N days from today, used when start is omitted; out-of-range values clamp. Default by preset: 사업·감사 460 / 반기 280 / 분기 180 / 수시·일반 90. Longer windows: start/end. |
| kind | string | 공시유형; omit = all types. Enum order = DART pblntf_ty A~J; that letter or the Korean name (정기공시…) also works. |
| dcm_no | string | Target 문서번호(dcmNo); default = 본문. Each 형제문서 (감사보고서·내부회계관리제도운영보고서·영업보고서·정관 etc.) has its own — take sibling_documents[].dcm_no from mode=list first; required to reach that 형제문서's attachments·text·images. |
| filename | string | images mode: EXACT filename of the attachment PDF to scan (a miss lists available names); selects the PDF-scan route. |
| rcept_no* | string | 14-digit 접수번호; separators stripped. |
| sections | array | mode="text" only: 0-based **sections[] array index**, NOT eleId (often index+1) — e.g. 3rd·6th entries → [2, 5]; check each returned index against your picks. Unset = first 24 sections. [] = 목차 only (titles, md_chars 0) → call again with picks. Picks apply before the 24-section cap — only way to reach 사업보고서 본문 sections 25~158. Out-of-range indices dropped with a note; all out-of-range = rejected. |
| image_from | integer | 뷰어 원본 JPEG route: 0-based start offset in document order — reach pages past max_images (capped channels fit ~1 page per call); continue with next_image_from. e.g. 운영실태보고서 자금부정통제 표 is usually the 2nd page → 1. PDF-scan route: use pages. |
| max_images | integer | images mode: max images; PDF-scan route keeps largest by area. |
| truncate_at | integer | mode=text 마크다운 cap in chars; default 100,000; out-of-range clamped. |
| min_dimension | integer | PDF-scan route only (뷰어 원본 JPEG unfiltered): images whose shorter side is under this many px are dropped as decoration (아이콘·괘선). Lower it to catch small 도장/서명. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"rcept_no"
],
"properties": {
"mode": {
"enum": [
"list",
"text",
"images"
],
"type": "string",
"default": "list",
"description": "list: attachment list only, nothing downloaded (cheap). text: document body as 마크다운 from the 뷰어 원문 — text·tables lossless. images: embedded raster (도장·스캔본·차트). No filename/index → 뷰어 원본 JPEG in document order, per-section eleId (manifest.source=\"viewer\"); filename or index → scans THAT attachment PDF: decoded PNGs in page order, with page numbers (source=\"pdf\"; pages narrows it)."
},
"index": {
"type": "integer",
"minimum": 0,
"description": "images mode: 0-based index of the attachment to scan; filename wins if both. Selects the PDF-scan route, like filename."
},
"pages": {
"type": "string",
"description": "images mode, PDF-scan route: 1-based pages WITHIN the attachment picked by filename/index (requires one), e.g. \"2,4,7-9\". Unset = that PDF's FIRST 40 pages only. Max 2000 pages per call — wider span rejected, not trimmed."
},
"dcm_no": {
"type": "string",
"pattern": "^\\d+$",
"description": "Target 문서번호(dcmNo); default = 본문. Each 형제문서 (감사보고서·내부회계관리제도운영보고서·영업보고서·정관 etc.) has its own — take sibling_documents[].dcm_no from mode=list first; required to reach that 형제문서's attachments·text·images."
},
"filename": {
"type": "string",
"description": "images mode: EXACT filename of the attachment PDF to scan (a miss lists available names); selects the PDF-scan route."
},
"rcept_no": {
"type": "string",
"pattern": "^\\d{14}$",
"description": "14-digit 접수번호; separators stripped."
},
"sections": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0
},
"maxItems": 24,
"description": "mode=\"text\" only: 0-based **sections[] array index**, NOT eleId (often index+1) — e.g. 3rd·6th entries → [2, 5]; check each returned index against your picks. Unset = first 24 sections. [] = 목차 only (titles, md_chars 0) → call again with picks. Picks apply before the 24-section cap — only way to reach 사업보고서 본문 sections 25~158. Out-of-range indices dropped with a note; all out-of-range = rejected."
},
"image_from": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "뷰어 원본 JPEG route: 0-based start offset in document order — reach pages past max_images (capped channels fit ~1 page per call); continue with next_image_from. e.g. 운영실태보고서 자금부정통제 표 is usually the 2nd page → 1. PDF-scan route: use pages."
},
"max_images": {
"type": "integer",
"default": 12,
"maximum": 40,
"minimum": 1,
"description": "images mode: max images; PDF-scan route keeps largest by area."
},
"truncate_at": {
"type": "integer",
"maximum": 2000000,
"minimum": 1000,
"description": "mode=text 마크다운 cap in chars; default 100,000; out-of-range clamped."
},
"min_dimension": {
"type": "integer",
"default": 24,
"minimum": 1,
"description": "PDF-scan route only (뷰어 원본 JPEG unfiltered): images whose shorter side is under this many px are dropped as decoration (아이콘·괘선). Lower it to catch small 도장/서명."
}
},
"additionalProperties": false
}| refresh | boolean | Bypass cache; re-collect |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"corp",
"year"
],
"properties": {
"corp": {
"type": "string",
"minLength": 1,
"description": "회사명/종목코드/corp_code"
},
"year": {
"type": "integer",
"minimum": 2015,
"description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026)."
},
"light": {
"type": "boolean",
"default": false,
"description": "Skip 원문 parsing — structured JSON only, fast; omits 실사 (incl. fees.headcount), 연결/별도 split, engagement_partner"
},
"refresh": {
"type": "boolean",
"default": false,
"description": "Bypass cache; re-collect"
}
}
}| refresh | boolean | Bypass cache; re-collect (corp+year only) |
| rcept_no | string | 접수번호 instead of corp+year (사업보고서 or 감사보고서 F 단독공시) — resolved·applicability then null. |
| sections | any | Section BODIES to include. full (default) = all. summary = finding paragraphs — opinion·kam·emphasis·other_matter·going_concern, + basis only when opinion ≠ 적정. Or a key array, e.g. ["opinion","kam"]; [] = 목차 only. Unselected → body_omitted:true stubs (re-requestable). Structured fields (opinion·kam.matters titles·emphasis·other_matters·going_concern_mentioned) ALWAYS returned. |
| truncate_at | integer | Max chars per included section body (default 8,000; excess cut; out-of-range clamped). truncated=true → check char_count, re-call higher. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"corp": {
"type": "string",
"description": "회사명/종목코드/corp_code — corp+year required without rcept_no; locates the 사업보고서 (비상장: 감사보고서 F 단독공시 fallback)"
},
"year": {
"type": "integer",
"minimum": 2015,
"description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026)."
},
"fs_div": {
"enum": [
"both",
"CFS",
"OFS"
],
"type": "string",
"description": "Default both = 연결(CFS)+별도(OFS) → reports[] up to 2 entries; reading only the first drops an axis."
},
"refresh": {
"type": "boolean",
"default": false,
"description": "Bypass cache; re-collect (corp+year only)"
},
"rcept_no": {
"type": "string",
"pattern": "^\\d{14}$",
"description": "접수번호 instead of corp+year (사업보고서 or 감사보고서 F 단독공시) — resolved·applicability then null."
},
"sections": {
"anyOf": [
{
"enum": [
"full",
"summary"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"opinion",
"basis",
"going_concern",
"kam",
"emphasis",
"other_matter",
"other_information",
"mgmt_resp",
"auditor_resp",
"other_reporting"
],
"type": "string"
},
"maxItems": 10
}
],
"description": "Section BODIES to include. full (default) = all. summary = finding paragraphs — opinion·kam·emphasis·other_matter·going_concern, + basis only when opinion ≠ 적정. Or a key array, e.g. [\"opinion\",\"kam\"]; [] = 목차 only. Unselected → body_omitted:true stubs (re-requestable). Structured fields (opinion·kam.matters titles·emphasis·other_matters·going_concern_mentioned) ALWAYS returned."
},
"truncate_at": {
"type": "integer",
"maximum": 500000,
"minimum": 500,
"description": "Max chars per included section body (default 8,000; excess cut; out-of-range clamped). truncated=true → check char_count, re-call higher."
}
}
}| string |
| YYYY-MM-DD / YYYYMMDD; default 3 years ago (period.defaulted:true). start/end match each event's first filing (DART 최초접수일) — an in-window 정정 of an event first filed earlier is not returned |
| event_type | any | String = one event (mode=single); array = several merged into one timeline (mode auto-switches to timeline). Unset in timeline = 'capital' group only (자본거래 25종). Group aliases: 'capital', 'holdings' (지분공시 2종). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"corp"
],
"properties": {
"end": {
"type": "string",
"description": "YYYY-MM-DD / YYYYMMDD; default today (period.end_defaulted:true)"
},
"corp": {
"type": "string",
"minLength": 1,
"description": "회사명/종목코드/corp_code"
},
"mode": {
"enum": [
"single",
"timeline"
],
"type": "string",
"default": "single",
"description": "single: one event_type. timeline: several event_types (unset → 'capital' group) in parallel, merged into one newest-first list"
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 2000,
"minimum": 1,
"description": "Max timeline rows, newest first by 최초 공시일. Excess cut → truncated=true, total_events = full count. Prefer narrowing start/end over raising limit."
},
"start": {
"type": "string",
"description": "YYYY-MM-DD / YYYYMMDD; default 3 years ago (period.defaulted:true). start/end match each event's first filing (DART 최초접수일) — an in-window 정정 of an event first filed earlier is not returned"
},
"event_type": {
"anyOf": [
{
"enum": [
"major_holding_5pct",
"executive_holding",
"default_occurrence",
"business_suspension",
"rehabilitation_filing",
"dissolution_cause",
"bank_management_start",
"bank_management_stop",
"litigation",
"rights_offering",
"bonus_issue",
"rights_bonus_combo",
"capital_reduction",
"cb_issuance",
"bw_issuance",
"eb_issuance",
"cocobond_issuance",
"treasury_acquisition",
"treasury_disposal",
"treasury_trust_contract",
"treasury_trust_cancel",
"stock_exchange",
"company_split_merger",
"company_split",
"company_merger",
"asset_transfer_etc",
"tangible_asset_transfer",
"tangible_asset_acquisition",
"other_corp_stock_transfer",
"other_corp_stock_acquisition",
"business_transfer",
"business_acquisition",
"bond_with_stock_right_acquisition",
"bond_with_stock_right_transfer",
"overseas_listing_decision",
"overseas_delisting_decision",
"overseas_listing",
"overseas_delisting"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"major_holding_5pct",
"executive_holding",
"default_occurrence",
"business_suspension",
"rehabilitation_filing",
"dissolution_cause",
"bank_management_start",
"bank_management_stop",
"litigation",
"rights_offering",
"bonus_issue",
"rights_bonus_combo",
"capital_reduction",
"cb_issuance",
"bw_issuance",
"eb_issuance",
"cocobond_issuance",
"treasury_acquisition",
"treasury_disposal",
"treasury_trust_contract",
"treasury_trust_cancel",
"stock_exchange",
"company_split_merger",
"company_split",
"company_merger",
"asset_transfer_etc",
"tangible_asset_transfer",
"tangible_asset_acquisition",
"other_corp_stock_transfer",
"other_corp_stock_acquisition",
"business_transfer",
"business_acquisition",
"bond_with_stock_right_acquisition",
"bond_with_stock_right_transfer",
"overseas_listing_decision",
"overseas_delisting_decision",
"overseas_listing",
"overseas_delisting"
],
"type": "string"
},
"minItems": 1
}
],
"description": "String = one event (mode=single); array = several merged into one timeline (mode auto-switches to timeline). Unset in timeline = 'capital' group only (자본거래 25종). Group aliases: 'capital', 'holdings' (지분공시 2종)."
}
}
}| string |
| Unsupported — any value is rejected; omit. Tables come as items[]. |
| fs_div | string | scope=full·rcept_no: 연결(CFS, default)/별도(OFS). CFS without data falls back to OFS (fs_div_note) — response fs_div = basis used. Ignored by summary (basis per row). |
| report | string | 1Q·반기·3Q·연차 |
| sj_div | array | scope=full·rcept_no: 재무제표 to include — BS=재무상태표, IS=손익계산서, CIS=포괄손익계산서, CF=현금흐름표, SCE=자본변동표. Default BS+IS+CIS (단일 포괄손익계산서 companies put 손익 in CIS only); CF·SCE only when listed. String or comma list ok. |
| rcept_no | string | 사업보고서 접수번호 → that filing AS FILED (later 정정 not reflected), plus 합산 검증 (validations). 분·반기 rcept → no_data; use corp+report. Combine with fs_div·sj_div; omit corp·year·scope. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"corp": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
}
],
"description": "회사명·종목코드·corp_code — string or array (comma list ok). scope=summary: 1 = single, 2+ = comparison (first 200 queried). scope=full: 1 only — extras dropped with a note. Unresolved entries dropped with a note; error only if none resolve. Omit with rcept_no."
},
"year": {
"type": "integer",
"minimum": 2015,
"description": "결산 사업연도 (회계연도, not the filing year) — one per call; annual rows also carry 전기·전전기. Omitted → latest published 사업연도 by 결산월·report (year_defaulted=true)."
},
"scope": {
"enum": [
"summary",
"full"
],
"type": "string",
"description": "summary (default): 주요계정 ~14 per basis (자산·부채 유동/비유동/총계, 자본금·이익잉여금·자본총계, 매출액·영업이익·법인세차감전 순이익·당기순이익·총포괄손익); 연결·별도 together ≈ 28 rows per company (별도-only 14; 금융업 +α). full: 전체 재무제표 filtered by sj_div, hundreds~1k rows."
},
"format": {
"type": "string",
"description": "Unsupported — any value is rejected; omit. Tables come as items[]."
},
"fs_div": {
"enum": [
"CFS",
"OFS"
],
"type": "string",
"description": "scope=full·rcept_no: 연결(CFS, default)/별도(OFS). CFS without data falls back to OFS (fs_div_note) — response fs_div = basis used. Ignored by summary (basis per row)."
},
"report": {
"enum": [
"q1",
"half",
"q3",
"annual"
],
"type": "string",
"default": "annual",
"description": "1Q·반기·3Q·연차"
},
"sj_div": {
"type": "array",
"items": {
"enum": [
"BS",
"IS",
"CF",
"CIS",
"SCE"
],
"type": "string"
},
"minItems": 1,
"description": "scope=full·rcept_no: 재무제표 to include — BS=재무상태표, IS=손익계산서, CIS=포괄손익계산서, CF=현금흐름표, SCE=자본변동표. Default BS+IS+CIS (단일 포괄손익계산서 companies put 손익 in CIS only); CF·SCE only when listed. String or comma list ok."
},
"rcept_no": {
"type": "string",
"pattern": "^\\d{14}$",
"description": "사업보고서 접수번호 → that filing AS FILED (later 정정 not reflected), plus 합산 검증 (validations). 분·반기 rcept → no_data; use corp+report. Combine with fs_div·sj_div; omit corp·year·scope."
}
}
}| refresh | boolean | Bypass cache; re-collect |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"corp",
"year"
],
"properties": {
"corp": {
"type": "string",
"minLength": 1,
"description": "회사명/종목코드/corp_code"
},
"year": {
"type": "integer",
"minimum": 2015,
"description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026)."
},
"fs_div": {
"enum": [
"CFS",
"OFS"
],
"type": "string",
"description": "Default CFS (연결); OFS = 별도. No 연결 → auto fallback to 별도 (response fs_div = basis used)."
},
"refresh": {
"type": "boolean",
"default": false,
"description": "Bypass cache; re-collect"
}
}
}| refresh | boolean | Bypass cache; re-collect |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"corp",
"year"
],
"properties": {
"corp": {
"type": "string",
"minLength": 1,
"description": "회사명/종목코드/corp_code"
},
"year": {
"type": "integer",
"minimum": 2015,
"description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026)."
},
"fs_div": {
"enum": [
"both",
"CFS",
"OFS"
],
"type": "string",
"description": "Default both = 연결(CFS)+별도(OFS). ICFR is normally 별도 only; 연결 ICFR 감사 only for 전기말 별도자산 2조↑ filers from FY2023. 별도 falls back to a standalone ICFR 공시 if the 감사보고서 embeds none; 연결 never does."
},
"refresh": {
"type": "boolean",
"default": false,
"description": "Bypass cache; re-collect"
}
}
}| Section — string or array (array → sections[]). Families in enum order: 주주 4 (largest_shareholder…) / 임직원 3 (executives…) / 보수 6 (executive_compensation_*…) / 회계감사 3 (auditor_opinion…) / 자본 3 (dividends·treasury_stock…) / 자금사용 2 (*_fund_use) / 타법인출자 1 = other_company_investment (incl. 종속·관계기업 지분) / 채무증권 6 (debt_securities_issuance·*_unredeemed). Group aliases: 'shareholders' (주주 4), 'executive_compensation' (보수 6). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"corp",
"report_type"
],
"properties": {
"corp": {
"type": "string",
"minLength": 1,
"description": "회사명/종목코드/corp_code"
},
"year": {
"type": "integer",
"minimum": 2015,
"description": "결산 사업연도 (회계연도, not the filing year) — one per call. Omitted → latest published 사업연도 by 결산월·report (year_defaulted=true)."
},
"report": {
"enum": [
"q1",
"half",
"q3",
"annual"
],
"type": "string",
"default": "annual",
"description": "1Q·반기·3Q·연차"
},
"max_items": {
"type": "integer",
"default": 150,
"maximum": 2000,
"minimum": 1,
"description": "Row cap per section; excess cut → truncated=true, total_count = full row count."
},
"report_type": {
"anyOf": [
{
"enum": [
"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"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"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"
],
"type": "string"
},
"minItems": 1
}
],
"description": "Section — string or array (array → sections[]). Families in enum order: 주주 4 (largest_shareholder…) / 임직원 3 (executives…) / 보수 6 (executive_compensation_*…) / 회계감사 3 (auditor_opinion…) / 자본 3 (dividends·treasury_stock…) / 자금사용 2 (*_fund_use) / 타법인출자 1 = other_company_investment (incl. 종속·관계기업 지분) / 채무증권 6 (debt_securities_issuance·*_unredeemed). Group aliases: 'shareholders' (주주 4), 'executive_compensation' (보수 6)."
}
}
}| statement_type |
| any |
| 증권신고서 type, string or array; unset = all 6. equity=지분증권(유상증자·IPO) / debt=채무증권(회사채) / depositary=증권예탁증권(DR) / merger=합병 / stock_exchange=주식의포괄적교환·이전 / division=분할. Group aliases: 'offering' (공모 3종), 'restructuring' (구조조정 3종) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"corp"
],
"properties": {
"end": {
"type": "string",
"description": "YYYY-MM-DD / YYYYMMDD; default today (period.end_defaulted:true)"
},
"corp": {
"type": "string",
"minLength": 1,
"description": "회사명/종목코드/corp_code (no all-company scan)"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max 신고서 returned (per rcept_no, not rows), newest first; default 10. Excess → truncated=true, total_filings = full count"
},
"start": {
"type": "string",
"description": "YYYY-MM-DD / YYYYMMDD, matched on 신고서 최초접수일; default 2015-01-01 = data floor, full history (period.defaulted:true) — keep the window wide"
},
"statement_type": {
"anyOf": [
{
"enum": [
"equity",
"debt",
"depositary",
"merger",
"stock_exchange",
"division"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"equity",
"debt",
"depositary",
"merger",
"stock_exchange",
"division"
],
"type": "string"
},
"minItems": 1
}
],
"description": "증권신고서 type, string or array; unset = all 6. equity=지분증권(유상증자·IPO) / debt=채무증권(회사채) / depositary=증권예탁증권(DR) / merger=합병 / stock_exchange=주식의포괄적교환·이전 / division=분할. Group aliases: 'offering' (공모 3종), 'restructuring' (구조조정 3종)"
}
}
}| string |
| 회사명·종목코드·corp_code. market: 개별 종목 시세 (exactly one of corp·index·rate_series); wacc: REQUIRED, the subject company; peers: target (동업종 peers auto-selected) |
| freq | string | [market] daily (default)·weekly (Fri close)·monthly (month-end). weekly/monthly rows carry period_return_pct (compounded flt_rt, %) instead of flt_rt — returns come from it, never close deltas |
| kind* | string | market = 시세·지수·금리 time series; wacc = WACC components + CAPM build-up; peers = 동업종(KSIC) peer multiples·무차입β·자본구조. Arguments are tagged by kind ([market]·[wacc]·[peers]); one this kind does not use → error listing the ones it accepts; unknown key → rejected. |
| ksic | string | [peers] KSIC 업종코드 instead of corp (비상장 target) or overriding corp's 업종; e.g. '26410' |
| index | string | [market] 시장지수 kospi·kosdaq (KOSPI·코스피 etc. accepted). Not with corp·rate_series |
| limit | number | [market·peers] market: row cap, latest rows kept (default 600, 1~3000); peers: top-N by 시총, aggregates over these N only (default 15, 3~50) |
| start | string | [market] YYYYMMDD or YYYY-MM-DD; default end − 1 year |
| exclude | any | [peers] spac·reit·loss (LTM 순손실)·financial (KSIC 64~66). Default [spac, reit]; a given value replaces it |
| kd_tenor | string | [wacc] Kd(타인자본비용) tenor (default 5y) |
| rf_tenor | string | [wacc] Rf(무위험이자율) tenor (default 10y) |
| tax_rate | number | [wacc·peers] 한계법인세율, decimal; default 0.264 (24%×1.1). Also Hamada t (beta.unlevered·beta_unlev) |
| beta_spec | string | [wacc] β: 2w = 2년 주간 (default), 5m = 5년 월간 |
| size_band | number | [peers] Keep peers within N× the target's 시총 (10 = 1/10~10x; min 2); ignored without corp |
| target_de | number | [wacc] Target 자본구조 D/E (시가) for WACC weights (wE·wD); default 실측 D/E (0 if missing). β: still unlevered at 실측 D/E, only relevered here (relevered_at_target_de); Ke keeps observed βL |
| srp_scheme | string | [wacc] 규모위험 프리미엄(SRP) 분위체계 (default quintile) |
| rate_series | string | [market] 시장금리: ktb* = 국고채, corp_* = 회사채 3년 (AA-·BBB-; pyeong = 민평), cd91 = CD 91일. Not with corp·index |
| equity_basis | string | [wacc] E(자기자본 시가): listed (자기주식 포함)·outstanding (자기주식 제외)·outstanding_plus_nci (default, +비지배지분); also β-unlevering D/E |
| include_pref | boolean | [wacc] Add 우선주 시총 into E (default true) |
| credit_rating | string | [wacc] 신용등급 for Kd (무보증 공모회사채, KIS자산평가 매트릭스); mid-notch = AA0·A0·BBB0·BB0·B0, not bare AA. Omitted → 공시 회사채 등급; none disclosed → Kd not computed (no assumed rating), WACC null if D/E>0 |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"kind"
],
"properties": {
"kd": {
"type": "number",
"description": "[wacc] Kd directly, % p.a. 세전 (e.g. 4.5); overrides credit_rating·kd_tenor"
},
"yq": {
"type": "string",
"description": "[wacc·peers] 평가기준 분기 YYYYQn (e.g. 2026Q2, lowercase q OK); default latest snapshot"
},
"end": {
"type": "string",
"description": "[market] Default: latest 적재일"
},
"mrp": {
"type": "number",
"description": "[wacc] MRP override, decimal; default 0.08 = midpoint of 한국공인회계사회 가이던스 7~9%"
},
"srp": {
"type": "number",
"description": "[wacc] SRP override, decimal; skips 분위 판정"
},
"corp": {
"type": "string",
"description": "회사명·종목코드·corp_code. market: 개별 종목 시세 (exactly one of corp·index·rate_series); wacc: REQUIRED, the subject company; peers: target (동업종 peers auto-selected)"
},
"freq": {
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string",
"description": "[market] daily (default)·weekly (Fri close)·monthly (month-end). weekly/monthly rows carry period_return_pct (compounded flt_rt, %) instead of flt_rt — returns come from it, never close deltas"
},
"kind": {
"enum": [
"market",
"wacc",
"peers"
],
"type": "string",
"description": "market = 시세·지수·금리 time series; wacc = WACC components + CAPM build-up; peers = 동업종(KSIC) peer multiples·무차입β·자본구조. Arguments are tagged by kind ([market]·[wacc]·[peers]); one this kind does not use → error listing the ones it accepts; unknown key → rejected."
},
"ksic": {
"type": "string",
"description": "[peers] KSIC 업종코드 instead of corp (비상장 target) or overriding corp's 업종; e.g. '26410'"
},
"index": {
"type": "string",
"description": "[market] 시장지수 kospi·kosdaq (KOSPI·코스피 etc. accepted). Not with corp·rate_series"
},
"limit": {
"type": "number",
"description": "[market·peers] market: row cap, latest rows kept (default 600, 1~3000); peers: top-N by 시총, aggregates over these N only (default 15, 3~50)"
},
"start": {
"type": "string",
"description": "[market] YYYYMMDD or YYYY-MM-DD; default end − 1 year"
},
"exclude": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "[peers] spac·reit·loss (LTM 순손실)·financial (KSIC 64~66). Default [spac, reit]; a given value replaces it"
},
"kd_tenor": {
"enum": [
"1y",
"2y",
"3y",
"5y",
"7y",
"10y"
],
"type": "string",
"description": "[wacc] Kd(타인자본비용) tenor (default 5y)"
},
"rf_tenor": {
"enum": [
"3y",
"5y",
"10y"
],
"type": "string",
"description": "[wacc] Rf(무위험이자율) tenor (default 10y)"
},
"tax_rate": {
"type": "number",
"description": "[wacc·peers] 한계법인세율, decimal; default 0.264 (24%×1.1). Also Hamada t (beta.unlevered·beta_unlev)"
},
"beta_spec": {
"enum": [
"2w",
"5m"
],
"type": "string",
"description": "[wacc] β: 2w = 2년 주간 (default), 5m = 5년 월간"
},
"size_band": {
"type": "number",
"description": "[peers] Keep peers within N× the target's 시총 (10 = 1/10~10x; min 2); ignored without corp"
},
"target_de": {
"type": "number",
"description": "[wacc] Target 자본구조 D/E (시가) for WACC weights (wE·wD); default 실측 D/E (0 if missing). β: still unlevered at 실측 D/E, only relevered here (relevered_at_target_de); Ke keeps observed βL"
},
"srp_scheme": {
"enum": [
"quintile",
"tercile",
"none"
],
"type": "string",
"description": "[wacc] 규모위험 프리미엄(SRP) 분위체계 (default quintile)"
},
"rate_series": {
"enum": [
"ktb1y",
"ktb2y",
"ktb3y",
"ktb5y",
"ktb10y",
"ktb20y",
"ktb30y",
"ktb50y",
"corp_aa_3y",
"corp_aa_pyeong_3y",
"corp_bbb_3y",
"cd91"
],
"type": "string",
"description": "[market] 시장금리: ktb* = 국고채, corp_* = 회사채 3년 (AA-·BBB-; pyeong = 민평), cd91 = CD 91일. Not with corp·index"
},
"equity_basis": {
"enum": [
"listed",
"outstanding",
"outstanding_plus_nci"
],
"type": "string",
"description": "[wacc] E(자기자본 시가): listed (자기주식 포함)·outstanding (자기주식 제외)·outstanding_plus_nci (default, +비지배지분); also β-unlevering D/E"
},
"include_pref": {
"type": "boolean",
"description": "[wacc] Add 우선주 시총 into E (default true)"
},
"credit_rating": {
"enum": [
"AAA",
"AA+",
"AA0",
"AA-",
"A+",
"A0",
"A-",
"BBB+",
"BBB0",
"BBB-",
"BB+",
"BB0",
"BB-",
"B+",
"B0",
"B-"
],
"type": "string",
"description": "[wacc] 신용등급 for Kd (무보증 공모회사채, KIS자산평가 매트릭스); mid-notch = AA0·A0·BBB0·BB0·B0, not bare AA. Omitted → 공시 회사채 등급; none disclosed → Kd not computed (no assumed rating), WACC null if D/E>0"
}
},
"additionalProperties": false
}| fields | string | Row width. full = every field incl. 본문 text (의견근거·강조·기타·계속기업, KAM 제목, ICFR 근거·취약점, applicability), ~4KB/row. brief = corp_name·corp_code·stock_code·bsns_year·market·fs_div·auditor·audit_opinion·going_concern·emphasis·other_matter·icfr{type,opinion}·kam_count·rcept_no, ~0.3KB/row — for list/count asks; once a company is picked, full or get_audit_report·get_internal_control. coverage·breakdown·count·truncated identical in both. |
| fs_div | string | Default both = 연결(CFS)+별도(OFS) as SEPARATE rows (의견·강조·KAM·ICFR held per report) → ≤2 rows/company; dedupe corp_code to count companies. |
| market | string | Default all = 상장사 (kospi·kosdaq·konex by FY말 market); all never includes unlisted — query it separately. unlisted = FY말 market E: 비상장 사업보고서 filers + 상장사 years before 상장 or after 상장폐지. Servers without the 비상장 dataset: validation:market error, and all may still return those 상장사 E years. 외감 비상장사 filing only a 감사보고서: in neither — get_audit_profile per company. |
| auditor | string | 감사인명 partial match (e.g. 삼정) |
| opinion | string | 감사의견: unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견 (한정·부적정·의견거절). |
| emphasis | boolean | Has 강조사항(EoM) |
| industry | string | 업종: financial=금융 (KSIC 64~66: 은행·보험·금융지주…), non_financial=비금융; 주석 XBRL·ICFR 운영의무 thresholds differ. |
| asset_bucket | string | 전기말 자산총액(별도) band = row label: gte_2tn=2조이상, gte_500bn=5천억이상 (<2조), gte_100bn=1천억이상 (<5천억), lt_100bn=1천억미만. |
| icfr_opinion | string | 내부회계관리제도 의견: adverse=부적정, disclaimer=의견거절 (감사 의견거절 + 검토 검토결론 불표명 — split by row icfr.type), modified=변형 (≠ 적정). |
| kam_required | boolean | This report had to carry KAM: 적용시기 (규모·연도·시장) met AND opinion ≠ 의견거절 (감사기준서 705 문단 29; 한정·부적정 still must). false = outside phase-in, or 의견거절 (row carries kam_exempt_reason) |
| other_matter | boolean | Has 기타사항(OM) |
| going_concern | boolean | 감사보고서 mentions 계속기업 불확실성 |
| xbrl_required | boolean | 재무제표 주석 XBRL mandatory that year (적용시기) |
| include_reference | boolean | Attach the 적용시기 참조표 (KAM·ICFR·XBRL 주석·자금부정통제 phase-in schedule, ~4.8KB) — only when 법령 근거 text is needed. |
| kam_none_declared | boolean | 감사보고서 explicitly declares '보고할 핵심감사사항 없음' (kam_count=0 then normal); false = undeclared or unknown |
| icfr_material_weakness | boolean | Has 내부회계관리제도 중요한 취약점 |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"year"
],
"properties": {
"kam": {
"type": "boolean",
"description": "Has 핵심감사사항(KAM)"
},
"year": {
"anyOf": [
{
"type": "integer",
"minimum": 2015
},
{
"type": "array",
"items": {
"type": "integer",
"minimum": 2015
},
"maxItems": 10,
"minItems": 1
}
],
"description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026). Array = multi-year query (e.g. [2024, 2025]): rows carry their own bsns_year; per-year coverage.years[]."
},
"limit": {
"type": "integer",
"default": 200,
"maximum": 500,
"minimum": 1,
"description": "Cap on ROWS, not companies. Cut → truncated=true, count = full row count; deduped company count then a floor — narrow market·fs_div·asset_bucket until truncated=false."
},
"fields": {
"enum": [
"full",
"brief"
],
"type": "string",
"default": "full",
"description": "Row width. full = every field incl. 본문 text (의견근거·강조·기타·계속기업, KAM 제목, ICFR 근거·취약점, applicability), ~4KB/row. brief = corp_name·corp_code·stock_code·bsns_year·market·fs_div·auditor·audit_opinion·going_concern·emphasis·other_matter·icfr{type,opinion}·kam_count·rcept_no, ~0.3KB/row — for list/count asks; once a company is picked, full or get_audit_report·get_internal_control. coverage·breakdown·count·truncated identical in both."
},
"fs_div": {
"enum": [
"both",
"CFS",
"OFS"
],
"type": "string",
"description": "Default both = 연결(CFS)+별도(OFS) as SEPARATE rows (의견·강조·KAM·ICFR held per report) → ≤2 rows/company; dedupe corp_code to count companies."
},
"market": {
"enum": [
"kospi",
"kosdaq",
"konex",
"all",
"unlisted"
],
"type": "string",
"description": "Default all = 상장사 (kospi·kosdaq·konex by FY말 market); all never includes unlisted — query it separately. unlisted = FY말 market E: 비상장 사업보고서 filers + 상장사 years before 상장 or after 상장폐지. Servers without the 비상장 dataset: validation:market error, and all may still return those 상장사 E years. 외감 비상장사 filing only a 감사보고서: in neither — get_audit_profile per company."
},
"auditor": {
"type": "string",
"description": "감사인명 partial match (e.g. 삼정)"
},
"opinion": {
"enum": [
"unqualified",
"qualified",
"adverse",
"disclaimer",
"modified"
],
"type": "string",
"description": "감사의견: unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견 (한정·부적정·의견거절)."
},
"emphasis": {
"type": "boolean",
"description": "Has 강조사항(EoM)"
},
"industry": {
"enum": [
"financial",
"non_financial"
],
"type": "string",
"description": "업종: financial=금융 (KSIC 64~66: 은행·보험·금융지주…), non_financial=비금융; 주석 XBRL·ICFR 운영의무 thresholds differ."
},
"asset_bucket": {
"enum": [
"gte_2tn",
"gte_500bn",
"gte_100bn",
"lt_100bn"
],
"type": "string",
"description": "전기말 자산총액(별도) band = row label: gte_2tn=2조이상, gte_500bn=5천억이상 (<2조), gte_100bn=1천억이상 (<5천억), lt_100bn=1천억미만."
},
"icfr_opinion": {
"enum": [
"adverse",
"disclaimer",
"modified"
],
"type": "string",
"description": "내부회계관리제도 의견: adverse=부적정, disclaimer=의견거절 (감사 의견거절 + 검토 검토결론 불표명 — split by row icfr.type), modified=변형 (≠ 적정)."
},
"kam_required": {
"type": "boolean",
"description": "This report had to carry KAM: 적용시기 (규모·연도·시장) met AND opinion ≠ 의견거절 (감사기준서 705 문단 29; 한정·부적정 still must). false = outside phase-in, or 의견거절 (row carries kam_exempt_reason)"
},
"other_matter": {
"type": "boolean",
"description": "Has 기타사항(OM)"
},
"going_concern": {
"type": "boolean",
"description": "감사보고서 mentions 계속기업 불확실성"
},
"xbrl_required": {
"type": "boolean",
"description": "재무제표 주석 XBRL mandatory that year (적용시기)"
},
"include_reference": {
"type": "boolean",
"default": false,
"description": "Attach the 적용시기 참조표 (KAM·ICFR·XBRL 주석·자금부정통제 phase-in schedule, ~4.8KB) — only when 법령 근거 text is needed."
},
"kam_none_declared": {
"type": "boolean",
"description": "감사보고서 explicitly declares '보고할 핵심감사사항 없음' (kam_count=0 then normal); false = undeclared or unknown"
},
"icfr_material_weakness": {
"type": "boolean",
"description": "Has 내부회계관리제도 중요한 취약점"
}
}
}| page | integer | Page number (page mode = no preset, all_pages=false). Page mode returns raw DART rows; batch rows drop stock_code·rm and add event (주요사항), corrected (= a later 정정 exists), withdrawn. |
| size | integer | Page size (page mode) |
| limit | integer | Max rows returned in batch mode (preset or all_pages) |
| start | string | Start date YYYY-MM-DD. Omitted = `days` back from today; set it for older filings. |
| preset | string | Batch filter; sets kind and collects every page. 주요사항보고 keys match the EXACT DART 보고 사유 (never a title substring) — one key per 사유 (cb_issuance · cb_treasury_resale …); group aliases capital_change · cb · bw · cps · bond_issuance · treasury · treasury_trust · restructuring · asset_deal · asset_transfer_etc · guarantee_debt · insolvency · overseas union several. large_holding_5pct = all 지분공시. |
| all_pages | boolean | Batch-collect the whole period without a preset (same set as page mode, 정정공시 included); limit replaces page/size. |
| final_only | boolean | One latest version per event: 원본 replaced by its latest 정정본 (정정공시 NOT excluded) — a duplicate-free set. Windowed by each event's LATEST version date: filed in window but corrected after end = absent. |
| concurrency | integer | Collector workers. A server-wide cap sets real concurrency, so raising this rarely helps — to cut latency set corp, narrow the period or lower limit. |
| include_corrections | boolean | Include 정정공시 ([기재정정] etc.) in preset batch; off avoids 원본+정정 double count. correction_all forces true; ignored with final_only. Page mode and bare all_pages always include them. Latest-only: final_only. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"end": {
"type": "string",
"description": "End date (default today)"
},
"corp": {
"type": "string",
"description": "회사명/종목코드/corp_code. Omit = all companies; a batch then splits the period by month, spends up to 60 DART requests (incomplete=true when hit) and can take tens of seconds. With corp: 1 request, a few hundred ms."
},
"days": {
"type": "integer",
"maximum": 730,
"minimum": 1,
"description": "Trailing N days from today, used when start is omitted; out-of-range values clamp. Default by preset: 사업·감사 460 / 반기 280 / 분기 180 / 수시·일반 90. Longer windows: start/end."
},
"kind": {
"enum": [
"periodic",
"major",
"issuance",
"holdings",
"other",
"audit",
"fund",
"abs",
"exchange",
"ftc"
],
"type": "string",
"description": "공시유형; omit = all types. Enum order = DART pblntf_ty A~J; that letter or the Korean name (정기공시…) also works."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number (page mode = no preset, all_pages=false). Page mode returns raw DART rows; batch rows drop stock_code·rm and add event (주요사항), corrected (= a later 정정 exists), withdrawn."
},
"size": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Page size (page mode)"
},
"limit": {
"type": "integer",
"default": 500,
"maximum": 3000,
"minimum": 1,
"description": "Max rows returned in batch mode (preset or all_pages)"
},
"start": {
"type": "string",
"description": "Start date YYYY-MM-DD. Omitted = `days` back from today; set it for older filings."
},
"preset": {
"enum": [
"capital_change",
"cb",
"bw",
"cps",
"bond_issuance",
"treasury",
"treasury_trust",
"restructuring",
"asset_deal",
"asset_transfer_etc",
"guarantee_debt",
"insolvency",
"overseas",
"rights_offering",
"bonus_issue",
"rights_bonus_combo",
"capital_reduction",
"cb_issuance",
"cb_treasury_resale",
"cb_early_acquisition",
"cb_call_designation",
"cb_call_exercise_third_party",
"bw_issuance",
"bw_treasury_resale",
"bw_early_acquisition",
"bw_call_designation",
"bw_call_exercise_third_party",
"cps_call_designation",
"cps_call_exercise_third_party",
"eb_issuance",
"cocobond_issuance",
"hybrid_capital_issuance",
"treasury_acquisition",
"treasury_disposal",
"treasury_trust_contract",
"treasury_trust_cancel",
"treasury_trust_extension",
"company_merger",
"company_split",
"company_split_merger",
"stock_exchange",
"other_corp_stock_acquisition",
"other_corp_stock_transfer",
"tangible_asset_acquisition",
"tangible_asset_transfer",
"noncurrent_asset_acquisition",
"noncurrent_asset_disposal",
"business_acquisition",
"business_transfer",
"business_deal_legacy",
"asset_deal_legacy",
"business_lease_delegation",
"business_lease_delegation_change",
"asset_transfer_other",
"putback_option_contract",
"bond_with_stock_right_acquisition",
"bond_with_stock_right_transfer",
"guarantee_for_others",
"collateral_for_others",
"debt_assumption",
"debt_forgiveness_granted",
"debt_forgiveness_received",
"donation",
"donation_received",
"default_occurrence",
"business_suspension",
"rehabilitation_filing",
"rehabilitation_commencement",
"rehabilitation_discontinuance",
"dissolution_cause",
"bank_management_start",
"bank_management_stop",
"bank_management_end",
"litigation",
"overseas_listing_decision",
"overseas_listing",
"overseas_delisting_decision",
"overseas_delisting",
"foreign_tender_offer",
"foreign_trading_halt",
"large_holding_5pct",
"annual_report",
"half_report",
"quarterly_report",
"audit_report",
"correction_all"
],
"type": "string",
"description": "Batch filter; sets kind and collects every page. 주요사항보고 keys match the EXACT DART 보고 사유 (never a title substring) — one key per 사유 (cb_issuance · cb_treasury_resale …); group aliases capital_change · cb · bw · cps · bond_issuance · treasury · treasury_trust · restructuring · asset_deal · asset_transfer_etc · guarantee_debt · insolvency · overseas union several. large_holding_5pct = all 지분공시."
},
"all_pages": {
"type": "boolean",
"default": false,
"description": "Batch-collect the whole period without a preset (same set as page mode, 정정공시 included); limit replaces page/size."
},
"final_only": {
"type": "boolean",
"default": false,
"description": "One latest version per event: 원본 replaced by its latest 정정본 (정정공시 NOT excluded) — a duplicate-free set. Windowed by each event's LATEST version date: filed in window but corrected after end = absent."
},
"concurrency": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Collector workers. A server-wide cap sets real concurrency, so raising this rarely helps — to cut latency set corp, narrow the period or lower limit."
},
"include_corrections": {
"type": "boolean",
"default": false,
"description": "Include 정정공시 ([기재정정] etc.) in preset batch; off avoids 원본+정정 double count. correction_all forces true; ignored with final_only. Page mode and bare all_pages always include them. Latest-only: final_only."
}
},
"additionalProperties": false
}