download_document
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]
"이 사업보고서 원문 읽어줘" → rcept_no="20260310002820"
"연결감사보고서 특수관계자 주석" → role="consolidated_audit", sections=["특수관계자"]
"원문에서 횡령·배임 찾아줘" → 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 = 뷰어 섹션.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| find | No | 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 | No | 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 | No | markdown = DART XML → 마크다운; raw = original XML; text = tags stripped (tables flattened). source=viewer ([014], no 원문 XML): no raw; markdown/text from 뷰어 HTML. | markdown |
| all_docs | No | 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 | Yes | 14-digit 접수번호 from search_disclosures; hyphens·spaces stripped. | |
| sections | No | 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 | No | 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 | No | 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 | No | 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 | No | Max bundles (default 5); other hits → locations only. Fewer if find_max_bytes fills first. |