Skip to main content
Glama

download_document

Read-onlyIdempotent

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 = 뷰어 섹션.

Input Schema

NameRequiredDescriptionDefault
findNoSearch 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.
roleNoPick 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.
formatNomarkdown = DART XML → 마크다운; raw = original XML; text = tags stripped (tables flattened). source=viewer ([014], no 원문 XML): no raw; markdown/text from 뷰어 HTML.markdown
all_docsNoEvery 원문 XML in the ZIP with content as documents[] (본문 + 별도/연결 감사보고서). source=viewer ([014]): one entry per top-level 뷰어 section (max 24; sub-sections nested).
rcept_noYes14-digit 접수번호 from search_disclosures; hyphens·spaces stripped.
sectionsNoRead 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_indexNo0-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_atNoMax 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_bytesNoMax 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_bundlesNoMax bundles (default 5); other hits → locations only. Fewer if find_max_bytes fills first.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changed
    • changedInput schema / properties / all_docs / description
      Previous value: -"Convert every 원문 XML in the ZIP and return them as documents[] — the 사업보고서 본문 plus 별도/연결 감사보고서 in one call. In a [014] filing (source=viewer) it returns one entry per top-level 뷰어 섹션 (up to 24; sub-sections are inside their parent)."New value: +"Every 원문 XML in the ZIP with content as documents[] (본문 + 별도/연결 감사보고서). source=viewer ([014]): one entry per top-level 뷰어 section (max 24; sub-sections nested)."
    • changedInput schema / properties / doc_index / description
      Previous value: -"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. For a 감사보고서 use role (separate_audit / consolidated_audit) instead of guessing 1~2. An out-of-range value silently falls back to the main body WITH a note in `notes` — check it. In a [014] filing (source=viewer) it picks one 뷰어 목차 섹션 instead — the same index as get_attachments mode=text sections."New value: +"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)."
    • changedInput schema / properties / find / description
      Previous value: -"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Several expressions in the same filing → ONE call with an array (최대 8개, OR 검색: [\"차등\",\"포기\",\"주주평등\"]) — the document is converted once; splitting into parallel calls repeats that work. 배열이면 여러 검색어가 함께 나오는 블록이 먼저 오고 bundles[].terms·per_term 이 붙는다. A single string is ONE literal term (쉼표로 나열해도 나뉘지 않는다). Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 notes 로 알린다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). bundles[]·locations[] 의 section_index 를 같은 doc_index(또는 role)와 sections=[i] 로 넘기면 그 절·주석 전체가 온다(note_title = 어느 주석인지). format=markdown 에서만 쓸 수 있다. [014] filing (source=viewer): 상위 뷰어 섹션(앞 24개 — 하위 섹션은 그 안에서)을 검색하고 bundles[].doc_index 가 섹션 index 다."New value: +"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."
    • changedInput schema / properties / find_max_bundles / description
      Previous value: -"Max 발췌 bundles (기본 5). 나머지 매치는 locations 로 위치만 나열된다. 바이트 예산(find_max_bytes)이 먼저 차면 이 수에 못 미칠 수 있다."New value: +"Max bundles (default 5); other hits → locations only. Fewer if find_max_bytes fills first."
    • changedInput schema / properties / find_max_bytes / description
      Previous value: -"발췌 본문 합계의 UTF-8 **바이트** 상한 (기본 12,000). 문자수가 아니라 바이트인 이유: 한글은 자당 3바이트라 '12,000자' 로 재면 응답이 36,000B 가 된다(실측). 단일 발췌가 이 값을 넘으면 표 행 단위로 잘리고 clipped=true 가 붙는다(제목행·구분행은 보존)."New value: +"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."
    • changedInput schema / properties / format / description
      Previous value: -"Output format. markdown=DART XML → 마크다운, raw=original XML, text=tags stripped (table structure is lost). A [014] filing (no 원문 XML → 뷰어 자동 전환, source=viewer) has no raw; markdown/text convert the 뷰어 HTML."New value: +"markdown = DART XML → 마크다운; raw = original XML; text = tags stripped (tables flattened). source=viewer ([014], no 원문 XML): no raw; markdown/text from 뷰어 HTML."
    • changedInput schema / properties / rcept_no / description
      Previous value: -"14-digit 접수번호 (the rcept_no from search_disclosures). Hyphens and spaces are stripped."New value: +"14-digit 접수번호 from search_disclosures; hyphens·spaces stripped."
    • changedInput schema / properties / role / description
      Previous value: -"Selects the 원문 by role instead of doc_index — separate_audit = 감사보고서(별도, `_00760`), consolidated_audit = 연결감사보고서(`_00761`), internal_control, main_body. Use it instead of guessing doc_index. If the ZIP has no such 원문 (e.g. no 연결 for a company without subsidiaries) the call fails with the document list. Not with doc_index or all_docs; with find it narrows the search to that 원문."New value: +"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."
    • changedInput schema / properties / sections / description
      Previous value: -"Read only PART of the selected 원문 (role/doc_index; 본문 when omitted). [] = 목차(outline) only, no content: rows of index·level·title·char_count, and under each 주석 heading one row per 주석 number (주석 경계는 'N.' 번호로 추정). Then pick by outline index (numbers, e.g. [12, 40]), by 제목 부분일치 (strings, e.g. [\"특수관계자\",\"우발\"] — 공백 무시; 연결·별도 주석이 둘 다 있으면 둘 다), or by 주석 번호 (\"주석 31\"). Max 24 picks; a pick inside another picked range comes back once. No match → the outline comes back instead of content. truncate_at caps the total. In a [014] filing (source=viewer) the outline is the 뷰어 목차 (numbers = documents[].index, strings = 제목). format=markdown only; not with find or all_docs."New value: +"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."
    • changedInput schema / properties / truncate_at / description
      Previous value: -"Max text length (the excess is cut). Default 300,000 chars; out-of-range values are clamped to the bound. With all_docs=true the budget is divided across the documents (the per-document share comes back as per_doc_truncate_at). Ignored when find is set (no content is returned)."New value: +"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."
  2. Changed4 schema fields changed
    • changedInput schema / properties / doc_index / description
      Previous value: -"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결). An out-of-range value silently falls back to the main body WITH a note in `notes` — check it. In a [014] filing (source=viewer) it picks one 뷰어 목차 섹션 instead — the same index as get_attachments mode=text sections."New value: +"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. For a 감사보고서 use role (separate_audit / consolidated_audit) instead of guessing 1~2. An out-of-range value silently falls back to the main body WITH a note in `notes` — check it. In a [014] filing (source=viewer) it picks one 뷰어 목차 섹션 instead — the same index as get_attachments mode=text sections."
    • changedInput schema / properties / find / description
      Previous value: -"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Several expressions in the same filing → ONE call with an array (최대 8개, OR 검색: [\"차등\",\"포기\",\"주주평등\"]) — the document is converted once; splitting into parallel calls repeats that work. 배열이면 여러 검색어가 함께 나오는 블록이 먼저 오고 bundles[].terms·per_term 이 붙는다. A single string is ONE literal term (쉼표로 나열해도 나뉘지 않는다). Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 notes 로 알린다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). format=markdown 에서만 쓸 수 있다. [014] filing (source=viewer): 상위 뷰어 섹션(앞 24개 — 하위 섹션은 그 안에서)을 검색하고 bundles[].doc_index 가 섹션 index 다."New value: +"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Several expressions in the same filing → ONE call with an array (최대 8개, OR 검색: [\"차등\",\"포기\",\"주주평등\"]) — the document is converted once; splitting into parallel calls repeats that work. 배열이면 여러 검색어가 함께 나오는 블록이 먼저 오고 bundles[].terms·per_term 이 붙는다. A single string is ONE literal term (쉼표로 나열해도 나뉘지 않는다). Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 notes 로 알린다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). bundles[]·locations[] 의 section_index 를 같은 doc_index(또는 role)와 sections=[i] 로 넘기면 그 절·주석 전체가 온다(note_title = 어느 주석인지). format=markdown 에서만 쓸 수 있다. [014] filing (source=viewer): 상위 뷰어 섹션(앞 24개 — 하위 섹션은 그 안에서)을 검색하고 bundles[].doc_index 가 섹션 index 다."
    • addedInput schema / properties / role
      Added value: +{
      +  "description": "Selects the 원문 by role instead of doc_index — separate_audit = 감사보고서(별도, `_00760`), consolidated_audit = 연결감사보고서(`_00761`), internal_control, main_body. Use it instead of guessing doc_index. If the ZIP has no such 원문 (e.g. no 연결 for a company without subsidiaries) the call fails with the document list. Not with doc_index or all_docs; with find it narrows the search to that 원문.",
      +  "enum": [
      +    "main_body",
      +    "separate_audit",
      +    "consolidated_audit",
      +    "internal_control"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sections
      Added value: +{
      +  "description": "Read only PART of the selected 원문 (role/doc_index; 본문 when omitted). [] = 목차(outline) only, no content: rows of index·level·title·char_count, and under each 주석 heading one row per 주석 number (주석 경계는 'N.' 번호로 추정). Then pick by outline index (numbers, e.g. [12, 40]), by 제목 부분일치 (strings, e.g. [\"특수관계자\",\"우발\"] — 공백 무시; 연결·별도 주석이 둘 다 있으면 둘 다), or by 주석 번호 (\"주석 31\"). Max 24 picks; a pick inside another picked range comes back once. No match → the outline comes back instead of content. truncate_at caps the total. In a [014] filing (source=viewer) the outline is the 뷰어 목차 (numbers = documents[].index, strings = 제목). format=markdown only; not with find or all_docs.",
      +  "items": {
      +    "anyOf": [
      +      {
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  "maxItems": 24,
      +  "type": "array"
      +}
  3. Changed4 schema fields changed
    • changedInput schema / properties / all_docs / description
      Previous value: -"Convert every 원문 XML in the ZIP and return them as documents[] — the 사업보고서 본문 plus 별도/연결 감사보고서 in one call."New value: +"Convert every 원문 XML in the ZIP and return them as documents[] — the 사업보고서 본문 plus 별도/연결 감사보고서 in one call. In a [014] filing (source=viewer) it returns one entry per top-level 뷰어 섹션 (up to 24; sub-sections are inside their parent)."
    • changedInput schema / properties / doc_index / description
      Previous value: -"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결). An out-of-range value silently falls back to the main body WITH a note in `notes` — check it."New value: +"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결). An out-of-range value silently falls back to the main body WITH a note in `notes` — check it. In a [014] filing (source=viewer) it picks one 뷰어 목차 섹션 instead — the same index as get_attachments mode=text sections."
    • changedInput schema / properties / find / description
      Previous value: -"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Several expressions in the same filing → ONE call with an array (최대 8개, OR 검색: [\"차등\",\"포기\",\"주주평등\"]) — the document is converted once; splitting into parallel calls repeats that work. 배열이면 여러 검색어가 함께 나오는 블록이 먼저 오고 bundles[].terms·per_term 이 붙는다. A single string is ONE literal term (쉼표로 나열해도 나뉘지 않는다). Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 notes 로 알린다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). format=markdown 에서만 쓸 수 있다."New value: +"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Several expressions in the same filing → ONE call with an array (최대 8개, OR 검색: [\"차등\",\"포기\",\"주주평등\"]) — the document is converted once; splitting into parallel calls repeats that work. 배열이면 여러 검색어가 함께 나오는 블록이 먼저 오고 bundles[].terms·per_term 이 붙는다. A single string is ONE literal term (쉼표로 나열해도 나뉘지 않는다). Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 notes 로 알린다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). format=markdown 에서만 쓸 수 있다. [014] filing (source=viewer): 상위 뷰어 섹션(앞 24개 — 하위 섹션은 그 안에서)을 검색하고 bundles[].doc_index 가 섹션 index 다."
    • changedInput schema / properties / format / description
      Previous value: -"Output format. markdown=DART XML → 마크다운, raw=original XML, text=tags stripped (table structure is lost)"New value: +"Output format. markdown=DART XML → 마크다운, raw=original XML, text=tags stripped (table structure is lost). A [014] filing (no 원문 XML → 뷰어 자동 전환, source=viewer) has no raw; markdown/text convert the 뷰어 HTML."
  4. Changed5 schema fields changed
    • addedInput schema / properties / find / anyOf
      Added value: +[
      +  {
      +    "maxLength": 200,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "maxItems": 8,
      +    "minItems": 2,
      +    "type": "array"
      +  }
      +]
    • changedInput schema / properties / find / description
      Previous value: -"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 notes 로 알린다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). format=markdown 에서만 쓸 수 있다."New value: +"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Several expressions in the same filing → ONE call with an array (최대 8개, OR 검색: [\"차등\",\"포기\",\"주주평등\"]) — the document is converted once; splitting into parallel calls repeats that work. 배열이면 여러 검색어가 함께 나오는 블록이 먼저 오고 bundles[].terms·per_term 이 붙는다. A single string is ONE literal term (쉼표로 나열해도 나뉘지 않는다). Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 notes 로 알린다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). format=markdown 에서만 쓸 수 있다."
    • removedInput schema / properties / find / maxLength
      Removed value: -200
    • removedInput schema / properties / find / minLength
      Removed value: -1
    • removedInput schema / properties / find / type
      Removed value: -"string"
  5. Changed2 schema fields changed
    • changedInput schema / properties / doc_index / description
      Previous value: -"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결). An out-of-range value silently falls back to the main body WITH a `warning` field — check it."New value: +"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결). An out-of-range value silently falls back to the main body WITH a note in `notes` — check it."
    • changedInput schema / properties / find / description
      Previous value: -"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 warning 을 준다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). format=markdown 에서만 쓸 수 있다."New value: +"Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 notes 로 알린다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). format=markdown 에서만 쓸 수 있다."
  6. Changed4 schema fields changed
    • addedInput schema / properties / find
      Added value: +{
      +  "description": "Full-text search over EVERY 원문 XML in the ZIP (본문+별도/연결 감사보고서). Returns `find` (표 단위 발췌 bundles + 나머지 매치 위치 locations) INSTEAD of content — 전문을 나르지 않는다. Case-insensitive, 리터럴 매칭(정규식 아님 — `(주)카카오` 를 그대로 넣어도 된다). 0건이면 표기를 자간 띄운 형태(`핵 심 감 사 사 항`)로 한 번 더 찾는다. doc_index 를 함께 주면 그 문서 하나로 좁힌다(범위 밖이면 좁히지 않고 전 문서를 검색하고 warning 을 준다 — 전문 조회의 index-0 폴백과 다르다: 잘못된 index 로 좁히면 답이 있는데 0건이 나간다). format=markdown 에서만 쓸 수 있다.",
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / find_max_bundles
      Added value: +{
      +  "description": "Max 발췌 bundles (기본 5). 나머지 매치는 locations 로 위치만 나열된다. 바이트 예산(find_max_bytes)이 먼저 차면 이 수에 못 미칠 수 있다.",
      +  "maximum": 20,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / find_max_bytes
      Added value: +{
      +  "description": "발췌 본문 합계의 UTF-8 **바이트** 상한 (기본 12,000). 문자수가 아니라 바이트인 이유: 한글은 자당 3바이트라 '12,000자' 로 재면 응답이 36,000B 가 된다(실측). 단일 발췌가 이 값을 넘으면 표 행 단위로 잘리고 clipped=true 가 붙는다(제목행·구분행은 보존).",
      +  "maximum": 60000,
      +  "minimum": 1000,
      +  "type": "integer"
      +}
    • changedInput schema / properties / truncate_at / description
      Previous value: -"Max text length (the excess is cut). Default 300,000 chars; out-of-range values are clamped to the bound. With all_docs=true the budget is divided across the documents (the per-document share comes back as per_doc_truncate_at)."New value: +"Max text length (the excess is cut). Default 300,000 chars; out-of-range values are clamped to the bound. With all_docs=true the budget is divided across the documents (the per-document share comes back as per_doc_truncate_at). Ignored when find is set (no content is returned)."
  7. Changed3 schema fields changed
    • changedInput schema / properties / doc_index / description
      Previous value: -"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결)."New value: +"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결). An out-of-range value silently falls back to the main body WITH a `warning` field — check it."
    • changedInput schema / properties / format / description
      Previous value: -"Output format. markdown=DART XML → 마크다운, raw=original XML, text=tags stripped"New value: +"Output format. markdown=DART XML → 마크다운, raw=original XML, text=tags stripped (table structure is lost)"
    • changedInput schema / properties / truncate_at / description
      Previous value: -"Max text length (the excess is cut). Default 300,000 chars; out-of-range values are clamped to the bound. With all_docs=true the budget is divided across the documents."New value: +"Max text length (the excess is cut). Default 300,000 chars; out-of-range values are clamped to the bound. With all_docs=true the budget is divided across the documents (the per-document share comes back as per_doc_truncate_at)."
  8. Changed5 schema fields changed
    • changedInput schema / properties / all_docs / description
      Previous value: -"ZIP 내 모든 원문 XML 을 변환해 documents[] 로 반환. 사업보고서의 본문+별도/연결 감사보고서를 한 번에."New value: +"Convert every 원문 XML in the ZIP and return them as documents[] — the 사업보고서 본문 plus 별도/연결 감사보고서 in one call."
    • changedInput schema / properties / doc_index / description
      Previous value: -"ZIP 내 원문 XML 선택 (0-based, 미지정 시 0=본문). documents 목록의 index 사용. 감사보고서 본문은 보통 index 1~2 (별도/연결)."New value: +"Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결)."
    • changedInput schema / properties / format / description
      Previous value: -"출력 포맷. markdown=DART XML → 마크다운, raw=원본 XML, text=태그 제거"New value: +"Output format. markdown=DART XML → 마크다운, raw=original XML, text=tags stripped"
    • changedInput schema / properties / rcept_no / description
      Previous value: -"접수번호 14자리 (search_disclosures 의 rcept_no). 하이픈·공백이 섞여 있으면 떼고 씁니다."New value: +"14-digit 접수번호 (the rcept_no from search_disclosures). Hyphens and spaces are stripped."
    • changedInput schema / properties / truncate_at / description
      Previous value: -"텍스트 최대 길이 (초과분은 잘림). 기본 30만 자, 범위 밖 값은 경계로 보정. all_docs=true 시 문서 수로 나눠 문서당 배분."New value: +"Max text length (the excess is cut). Default 300,000 chars; out-of-range values are clamped to the bound. With all_docs=true the budget is divided across the documents."
  9. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), but the description goes well beyond: documents[] carries metadata only unless all_docs=true, truncated=true means re-query rather than data loss, find returns bundles 'instead of content', 0 find matches does not mean absence (scanned tables need get_attachments mode=images), and filings without 원문 XML silently switch to source=viewer with a different index space. These are non-obvious behaviors an agent would otherwise get wrong.

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?

Front-loaded with a one-line purpose, then bracketed sections ([Purpose]/[Usage]/[Response]/[Rules]) that make a long, dense, bilingual block scannable. It is verbose and repeats a few points already in the schema (truncation clamps, viewer mode), but for a 10-parameter tool with many interaction rules almost every line carries actionable content.

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?

No output schema exists, yet the description explains the return shape (documents[] indexing, find bundles, clipped/truncated flags, viewer-section mapping) and the fallback path when a filing has no 원문 XML. For a complex 10-param retrieval tool this is complete enough to call correctly on the first attempt.

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 the schema already documents all 10 parameters and the baseline is 3. The description nonetheless adds cross-parameter meaning the schema cannot: role vs doc_index vs all_docs mutual exclusion, sections=[] returning an outline to then index into, and the truncate_at remedy for truncated results. It also warns against guessing doc_index 1~2 for audit reports.

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?

States a specific verb+resource (reads and searches 공시 원문 as markdown, preserving heading/table structure) and explicitly carves out scope against siblings: audit opinion/KAM analysis goes to get_audit_report, ZIP-external documents and scans to get_attachments, XBRL to get_financials. An agent can distinguish it from every relevant sibling without opening a schema.

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 [Purpose] and [Usage] sections give explicit when-to-use conditions with three concrete worked examples (rcept_no lookup, role+sections, find terms), plus negative routing ('not get_attachments', audit opinion in _00760/_00761 pick by role). Exclusions and alternatives are named rather than implied.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources