MyDART
Server Details
Powerful OpenDART API-based Korean corporate disclosure tools for accounting professionals
- Status
- Healthy
- Uptime
- 99.5% over 57 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 15 tools
Most tools target clearly distinct resources/actions, and the descriptions include explicit cross-references and 'Purpose'/'not here' routing notes that make boundaries legible. However, the audit cluster (get_audit_profile, get_audit_report, get_internal_control, get_going_concern, search_audit_findings) is dense and an agent could still misselect among them, though the descriptions actively mitigate this.
All 15 tools follow a clean verb_noun snake_case pattern using get_*, search_*, find_*, and download_* prefixes. The verbs are predictable and map consistently to the operation type (retrieve entity/list/detail/search).
15 tools is well-scoped for a broad DART-disclosure domain covering company lookup, filings, financials, audit, events, and valuation. Each tool targets a distinct data family rather than being redundant padding.
The surface covers a full lifecycle: find corp_code -> company profile -> disclosure search -> document/attachments -> financials -> audit profile/report/findings -> events -> registration -> valuation, so core workflows have no dead ends. Minor gaps exist (no standalone market/quote tool, limited ownership detail beyond event search), but agents can work around them.
Available Tools
15 toolsdownload_documentRead-onlyIdempotentInspect
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), not the 본문: 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 = 뷰어 섹션.
| Name | Required | Description | Default |
|---|---|---|---|
| find | No | 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 다. | |
| role | No | 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 원문. | |
| format | No | 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. | markdown |
| all_docs | No | 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). | |
| rcept_no | Yes | 14-digit 접수번호 (the rcept_no from search_disclosures). Hyphens and spaces are stripped. | |
| sections | No | 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. | |
| doc_index | No | 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. | |
| truncate_at | No | 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). | |
| find_max_bytes | No | 발췌 본문 합계의 UTF-8 **바이트** 상한 (기본 12,000). 문자수가 아니라 바이트인 이유: 한글은 자당 3바이트라 '12,000자' 로 재면 응답이 36,000B 가 된다(실측). 단일 발췌가 이 값을 넘으면 표 행 단위로 잘리고 clipped=true 가 붙는다(제목행·구분행은 보존). | |
| find_max_bundles | No | Max 발췌 bundles (기본 5). 나머지 매치는 locations 로 위치만 나열된다. 바이트 예산(find_max_bytes)이 먼저 차면 이 수에 못 미칠 수 있다. |
find_corp_codeARead-onlyIdempotentInspect
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]
"카카오" → corp_code 획득 → 재무제표 조회(get_financials)
"삼성전자" → corp_code 획득 → 임원 현황 조회(get_periodic_report)
"'동양' 들어가는 회사 후보 보여줘" → query="동양", limit=20
"005930이 어느 회사야?" → query="005930"
[Response]
stock_code: present = listed (common shares); empty/absent = unlisted.
count = rows returned (capped by
limit), not the total match count. 0 hits addsnotes.
[Rules]
resultsis 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max candidates to return (default 10, max 50) | |
| query | Yes | 회사명 (한/영), 6-char 종목코드 (digits or alphanumeric like 0126Z0), or 8-digit corp_code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations by disclosing that results is a similarity-ranked candidate array (first item is not necessarily the answer), that count is capped by limit rather than total matches, that 0 hits adds notes, and that preferred-share codes map to the common-share issuer while ETF/ETN have no mapping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the critical 'first call' rule and organized under Purpose/Usage/Response/Rules headings that make scanning fast. Slightly verbose due to the bilingual restatement in the opening line, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 meaningful response fields (stock_code presence, count semantics, notes on zero hits) and the corp_code-vs-ticker distinction. Nothing an agent needs to call and interpret this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents query formats and limit bounds, but the description adds real meaning: when to raise limit (common names overflow the default) and that count reflects the capped rows. This compensates for the non-obvious semantic that limit silently truncates candidates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (회사명·종목코드 → corp_code 후보 확인) and explicitly routes ID-resolution away from siblings get_company_profile and search_disclosures. An agent can distinguish it from every 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly declares itself the first call when corp_code is unknown, gives the disambiguation case, and lists four worked examples mapping user phrasing to query values. Alternatives (get_company_profile, search_disclosures, get_financials, get_periodic_report) are named with their conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachmentsRead-onlyIdempotentInspect
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]
정관·영업보고서 본문 → list 로 dcm_no 확보 → dcm_no, mode="text"
표가 이미지뿐이면 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 — 빈 곳 ≠ 사실 없음.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | list: the attachment list only — nothing is downloaded, so it is the cheap call. text: the document body as 마크다운 via the 뷰어 원문 (XML→HTML) path — it skips PDF conversion, so text and tables are lossless and it is hundreds of times lighter. The primary path for sibling documents (정관·영업보고서·운영보고서 etc.) and the route to take whenever body text is what you want. images: return embedded images (도장·스캔본·차트 and other raster that text cannot capture). With NO filename/index it takes the 뷰어 원본 JPEG route (manifest.source="viewer": originals in document order, per-section eleId); with filename or index it scans THAT attachment PDF instead (source="pdf": decoded PNGs, largest area first, with page numbers; pages narrows it). The two routes return different field shapes. There is no file-parsing mode: an attachment file itself is reached through download_url, never parsed server-side. | list |
| index | No | 0-based index of the attachment to scan, in images mode (filename takes precedence). Like filename it picks the PDF-scan route; omit both to get the 뷰어 임베드 원본 JPEG. | |
| pages | No | Page filter for images mode (1-based, PDF-scan path only). e.g. "3", "1-5", "2,4,7-9". It narrows pages WITHIN the attachment picked by filename/index, so it requires one of them. Unset on a filename/index call = a scan of only that PDF's FIRST 40 pages. At most 2000 pages per call — a wider span is rejected, not silently trimmed. | |
| dcm_no | No | Target 문서번호(dcmNo). Defaults to the 본문 document. One 공시(rcept_no) carries, besides the 본문, sibling documents (감사보고서·내부회계관리제도운영보고서·영업보고서·정관 etc.) each with its own dcmNo; take sibling_documents[].dcm_no from a list result to read that document (list its attachments, or mode=text/images). A sibling's attachments are invisible without it — always list first, then pass sibling_documents[].dcm_no. | |
| filename | No | Exact filename of the attachment to scan, in images mode (no partial-match fallback). Giving it PICKS the PDF-scan route — omit both filename and index to get the document's 뷰어 임베드 원본 JPEG instead. An EXACT match is required; on failure the error lists the available names. | |
| rcept_no | Yes | 14-digit 접수번호 (separators are stripped automatically) | |
| sections | No | Which sections to fetch, in mode="text" — the **sections[] array index** (0-based). NOT the eleId: in these documents eleId runs "1".."8", so eleId happens to equal index+1 and is easy to confuse. e.g. to read the 3rd and 6th entries of sections[], pass [2, 5]. Unset = the previous behavior (the first 24 sections, all fetched). [] = 목차 only — zero body calls, sections[] carries just the titles (md_chars all 0); read them, then call again with the indices you want (2-pass). The pick happens BEFORE the 24-node ceiling, so it reaches sections 25~158 of a 사업보고서 본문 that are otherwise unreachable at any truncate_at. Max 24 picks; out-of-range indices are dropped with a note in `notes` (all-out-of-range is rejected). In this mode every sections[] entry carries its own index — check it against what you asked for (an off-by-one that stays in range otherwise returns a neighbouring section silently). | |
| image_from | No | Start offset in document order for the 뷰어 원본 JPEG route (0-based, default 0). Channels with a response cap fit only ~1 scan page per call, so this is how you reach later pages — e.g. the 자금부정통제 표 is usually the 2nd page of an 운영실태보고서, so image_from=1. The response carries `from` and a note telling you the next offset. PDF-scan route uses pages instead. | |
| max_images | No | Max images returned in images mode (largest area first). Default 12. | |
| truncate_at | No | Max length of the mode=text 마크다운 (default 100,000 chars; out-of-range values are clamped to the bound) | |
| min_dimension | No | In images mode, an image whose shorter side is under this many pixels is treated as decoration (아이콘·괘선) and dropped. Default 24. Lower it to catch small 도장/서명. It filters the PDF-scan path only (source:"pdf") — 뷰어 원본 JPEG images pass through unfiltered. |
get_audit_profileARead-onlyIdempotentInspect
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]
"삼성전자 2024 감사보수·비감사보수" → corp="삼성전자", year=2024
"재고실사 입회했는지 빠르게만" → corp="…", year=2024, light=true
[Response]
fees
_msuffix = 백만원.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.
| Name | Required | Description | Default |
|---|---|---|---|
| corp | Yes | 회사명/종목코드/corp_code | |
| year | Yes | 결산 사업연도 (회계연도, fiscal year) — the number you pass IS the 사업연도=회계연도=결산연도. Do NOT subtract it; pass it as-is. Only tools where year is optional auto-select the latest published year when omitted (if year is required in the tool you are calling, it cannot be omitted — confirm the year actually used via the response `year` field).e.g. 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → all 2025 (결산일 2025-12-31). Convert ONLY when the user explicitly names the 공시(제출)연도, as in '○○년에 공시된 보고서': a 12월 결산법인 files by the end of March of the following year.(e.g. '2026년에 공시된 사업보고서' → 2025). Otherwise the input is ALWAYS on a 사업연도=회계연도=결산연도 basis. Relative expressions ('최근 N개년'·'작년' and the like) count back from the most recent PUBLISHED 사업연도 as of today: a 사업보고서 is filed within about 90 days after 결산 (12월 결산 법인 → March of the following year), so from April the latest is last year, and in Jan~Mar it is the year before last. e.g. if today is 2026-06 the latest is FY2025 → '최근 5개년'=2021~2025 (NOT 2020~2024). Supported floor is FY2015 (the range OpenDART's structured APIs cover) — 2014 and earlier are rejected. A 비12월 결산 (3·6·9월) 법인 may have its latest 사업연도 equal to the calendar year (e.g. a 3월 결산 company from July onward). | |
| light | No | Skip 원문 parsing (structured JSON APIs only — omits 실사, the fs_div split, and fees.headcount, which comes from the 실사 source; fast) | |
| refresh | No | Bypass the cache and re-collect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read profile (readOnlyHint=true, idempotentHint=true). The description adds substantial context beyond that: data_available=false means the filing was not found (null fields must not be read as 'confirmed absent'), audit_only=true (F 단독공시) means fees are structurally absent rather than a defect, the kam.by_fs_div field routing for 연결/별도 splits, the mandate to ALWAYS read applicability.guidance[] for next-tool routing, and the explicit note that 감사인 교체/연속연수 are NOT returned. It also defines response semantics: fees `_m` suffix = 백만원 and the opinion domain (적정/한정/부적정/의견거절). This is exactly the behavioral nuance annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long, but densely organized into labeled sections ([Purpose], [Usage], [Response], [Rules]) that each carry distinct information — scope routing, call examples, response format, and edge cases. The main purpose is front-loaded in the opening sentence, and the Rules section is terse bullet-style guidance. Every section earns its place; the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description carries the full burden of explaining response interpretation and edge cases, and it succeeds: response format (_m suffix, opinion domain), data-availability semantics (data_available=false), structural absence (audit_only=true), field routing (kam.by_fs_div vs kam.topics), next-tool routing (applicability.guidance[]), and explicitly what is NOT returned (auditor change/consecutive years). Nothing an agent needs to call it correctly and interpret results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself is unusually detailed (especially the year parameter covering fiscal-year vs disclosure-year conversion and relative-date counting). The description adds value above the baseline by mapping natural-language queries to parameter values (corp/year/light usage examples) and by explaining the practical trade-off of light=true (fast, omits 실사). That exceeds the baseline-3 for high coverage but doesn't need to compensate for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (반환/return), resource (감사 개요/audit profile), and precise scope (감사인·감사의견·업무수행이사·감사보수·감사투입시간·실사수행내역·외부조회 실시여부 summarized in one table). It also names the sibling tools it is not — get_audit_report (full opinion basis, KAM, emphasis text), get_internal_control (ICFR), get_going_concern (going concern quant), search_audit_findings (company lists) — so an agent can differentiate without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage examples map real user queries to parameter values: '"삼성전자 2024 감사보수·비감사보수" → corp="삼성전자", year=2024' and '"재고실사 입회했는지 빠르게만" → corp="…", year=2024, light=true'. Alternatives are named explicitly with routing conditions (full text → get_audit_report, ICFR → get_internal_control, company lists → search_audit_findings). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_reportRead-onlyIdempotentInspect
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]
"LG에너지솔루션 2024 KAM 문단 전문" → corp="LG에너지솔루션", year=2024
"삼부토건 FY2024 별도 의견거절 근거 원문" → corp="삼부토건", year=2024, fs_div="OFS"
발견사항만 → 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.
| Name | Required | Description | Default |
|---|---|---|---|
| corp | No | 회사명/종목코드/corp_code (required when rcept_no is absent). corp+year auto-locates the 사업보고서, falling back to the 감사보고서 F 단독공시 for unlisted companies; results on that path are cached | |
| year | No | 결산 사업연도 (회계연도, fiscal year) — the number you pass IS the 사업연도=회계연도=결산연도. Do NOT subtract it; pass it as-is. Only tools where year is optional auto-select the latest published year when omitted (if year is required in the tool you are calling, it cannot be omitted — confirm the year actually used via the response `year` field).e.g. 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → all 2025 (결산일 2025-12-31). Convert ONLY when the user explicitly names the 공시(제출)연도, as in '○○년에 공시된 보고서': a 12월 결산법인 files by the end of March of the following year.(e.g. '2026년에 공시된 사업보고서' → 2025). Otherwise the input is ALWAYS on a 사업연도=회계연도=결산연도 basis. Relative expressions ('최근 N개년'·'작년' and the like) count back from the most recent PUBLISHED 사업연도 as of today: a 사업보고서 is filed within about 90 days after 결산 (12월 결산 법인 → March of the following year), so from April the latest is last year, and in Jan~Mar it is the year before last. e.g. if today is 2026-06 the latest is FY2025 → '최근 5개년'=2021~2025 (NOT 2020~2024). Supported floor is FY2015 (the range OpenDART's structured APIs cover) — 2014 and earlier are rejected. A 비12월 결산 (3·6·9월) 법인 may have its latest 사업연도 equal to the calendar year (e.g. a 3월 결산 company from July onward). | |
| fs_div | No | both (default — 연결+별도 both)/연결(CFS)/별도(OFS). With both, reports[] holds 2 entries — reading only the first drops an axis. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored). | |
| refresh | No | Bypass the cache and re-collect (corp+year path only) | |
| rcept_no | No | 접수번호 given directly (instead of corp/year) — parses that filing live (never cached) and returns resolved/applicability as null. A 감사보고서제출(F) 단독공시 works too. | |
| sections | No | Which section BODIES to include. full (default) = every section. summary = the paragraphs that carry a finding — 의견(opinion)·KAM·강조(emphasis)·기타(other_matter)·계속기업(going_concern), plus 의견근거(basis) ONLY when the opinion is not 적정 (for 적정 that paragraph is boilerplate: p50 575 bytes with almost no variance across 27,067 reports; for 한정/부적정/의견거절 it is the reason itself, 2.5~3.1x longer). Or pass an explicit key array, e.g. ["opinion","kam"]; [] = 목차만. Keys: opinion·basis·going_concern·kam·emphasis·other_matter·other_information·mgmt_resp·auditor_resp·other_reporting. Unselected sections are NOT dropped — they stay as {key, heading, char_count, body_omitted:true} so you can re-request them. The structured fields (opinion·kam.matters titles·emphasis·other_matters·going_concern_mentioned) are ALWAYS returned regardless of this argument. | |
| truncate_at | No | Max length per section body (default 8,000 chars; the excess is cut, out-of-range values are clamped to the bound). On truncated=true check char_count and re-call with a higher value. Applies only to sections whose body is included — see `sections`. |
get_company_profileARead-onlyIdempotentInspect
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]
"카카오는 뭐 하는 회사야?" → corp="카카오"
"교보생명 FY2024 재무는 어디서 봐?" → corp="교보생명", year=2024
"종목코드 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.
| Name | Required | Description | Default |
|---|---|---|---|
| corp | Yes | 회사명/종목코드/corp_code | |
| year | No | 회계연도 that applicability.data_location (where 재무·감사 data lives) is judged against. Defaults to the latest (marked 잠정). Matters only for 비상장사 — a 상장사 is always 사업보고서(JSON), so it is reported as listed without probing. For non-December closers this year follows the 시작연도 convention shared with the audit tools, while the financial JSON tools (get_financials 등) address the same fiscal period as year+1 — the response's fiscal_year_note spells the mapping out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the provisional-year caveat, that listed_konex can legitimately return empty financial results, and that audit_only data must be fetched via download_document rather than get_financials. It also explains how data_location values map to data sources, which materially affects follow-up behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although long, the description is organized into Purpose, Usage, Response, and Rules sections with bullet-style entries, making it easy to parse. Every block earns its place: routing rules, taxonomy, and examples are all decision-relevant, and the one-sentence summary is front-loaded before the detailed sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description compensates by enumerating the key data_location and corp_cls values and their meanings. It also covers edge cases (year omitted, 비상장 vs 상장, listed_konex empty results) and names the follow-up tools, making the tool safely invocable without external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters comprehensively (100% coverage), and the description adds value with concrete usage examples and the year-sensitive routing nuance (year matters only for 비상장사). It does not invent new semantics, but it reinforces and contextualizes the schema rather than merely repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the specific resource (기업개황) and two concrete outputs (basic company profile fields and data_location), using a clear verb (조회). It also explicitly distinguishes itself from get_audit_profile and find_corp_code, so an agent can separate it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The [Purpose] section states the intended context ('routing check before 재무·감사 calls on unfamiliar, especially 비상장, companies') and [Rules] gives explicit routing decisions based on data_location, including when not to retry. The three usage examples translate natural language questions into concrete parameter settings, leaving no ambiguity about when and how to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_corporate_eventARead-onlyInspect
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]
"카카오 최근 3년 자본 조달 흐름" → corp="카카오", mode="timeline"
"이 회사 CB 발행한 적 있어?" → corp="…", event_type="cb_issuance"
"자사주 취득·처분 2020년부터" → event_type=["treasury_acquisition","treasury_disposal"], start="2020-01-01"
[Response]
date = 최초 공시일 (start/end axis), newest first; fields = latest 정정본 (rcept_no) — first_rcept_no if corrected.
지분공시: 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).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date (YYYY-MM-DD / YYYYMMDD). Defaults to today — omitted end is flagged as period.end_defaulted:true | |
| corp | Yes | 회사명/종목코드/corp_code | |
| mode | No | single: query one event_type. timeline: query the 자본 관련 events in parallel (25 types by default) and merge them into one date-descending list | single |
| limit | No | Cap on timeline rows returned (default 100, date descending — 최초 공시일). The excess is cut and flagged via truncated=true, with total_events carrying the real count — a company with frequent 자본거래 yields hundreds over a 3-year window. Narrowing the period is more precise. | |
| start | No | Start date (YYYY-MM-DD / YYYYMMDD). Defaults to 3 years ago — omitted start is flagged as period.defaulted:true. start/end match each event's FIRST filing (DART 최초접수일) — a 정정 filed in the window for an event first filed earlier is not returned | |
| event_type | No | 38 selectable events (36 주요사항 + 지분공시 2종) — **a single string OR an array**. A string queries that one event (mode=single); an array queries them in parallel and merges them into one date-descending timeline (mode switches to timeline automatically). When unset in timeline mode, every 자본 관련 event (capital=true) is selected; 소송·부도·회생·해외상장·지분공시 are NOT in that default set, so name them here. Group aliases expand to their members — 'capital' (자본거래 25종, the timeline default) and 'holdings' (지분공시 2종). The legacy key `event_types` is accepted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, destructiveHint), but the description adds substantive behavior beyond them: dates key on 최초 공시일 with newest-first ordering, fields reflect the latest 정정본, ownership disclosures have cumulative vs in-period counts with client-side filtering, and it warns that sections_meta can carry per-endpoint errors and that event_type_counts is pre-truncation. This is exactly the kind of non-obvious, load-bearing context that structured fields do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The [Purpose]/[Usage]/[Response]/[Rules] headings front-load the essential routing information and every section carries content. It runs long and a few points (event_type default set, start/end semantics) are restated from the already-verbose schema, but the density is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain returns, and the [Response] section does so: the date axis meaning, which revision the fields reflect, and the meaning of total_count vs filtered_count. Combined with the truncation/error warnings, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself is unusually detailed, so the baseline is 3; the description still adds value by clarifying that an array of event_type silently switches mode to timeline, that the timeline default set is capital events only (excluding 소송·부도·회생·해외상장·지분공시), and by naming the 'capital'/'holdings' aliases. Some of this overlaps the schema text, which keeps it short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (조회) plus resource (주요사항보고서 자본·지배구조 이벤트 36종 + 5%룰·임원 지분공시) so the agent immediately knows this is a corporate-event disclosure lookup. It explicitly distinguishes itself from siblings by naming get_registration_statement, search_disclosures, and get_periodic_report with the conditions under which each is preferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The [Usage] section gives three concrete query-to-parameter mappings (timeline for a capital-raising history, event_type='cb_issuance' for a point question, an event_type array for treasury activity), which is exactly the routing guidance an agent needs. It also states the alternative tools and their conditions in [Purpose], so both 'when to use' and 'when not to' are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financialsRead-onlyIdempotentInspect
MyDART MCP의 get_financials 도구는 매출·영업이익·순이익·자산/부채/자본 등 재무수치를 조회합니다 — 재무 질문 대부분은 이걸로 충분합니다.
[Purpose]
재무제표 figures start here. corp+year = LATEST filing (정정 반영); rcept_no = that filing AS FILED (재작성 전후 대조·합산 검증 — 구 get_xbrl).
사업보고서 prose: get_periodic_report; 부실징후(계속기업): get_going_concern.
[Usage]
"삼성전자 2025년 매출·영업이익" → corp="삼성전자", year=2025
"삼성전자와 SK하이닉스 실적 비교" → corp=["삼성전자","SK하이닉스"]
"이 공시본 그대로 전체" → 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·CF rows: CUMULATIVE = thstrm_add_amount, thstrm_amount = that quarter alone (half-value trap — period_basis explains). BS rows: thstrm_amount only.
Cross-check the periods legend (전기/당기 off-by-one) and year_defaulted.
no_data is routing, not an error — follow next_step (retry is futile).
| Name | Required | Description | Default |
|---|---|---|---|
| corp | No | Company — **a single string OR an array** (회사명·종목코드·corp_code). With scope=summary: 1 (single) or 2+ (multi-company comparison). scope=full takes EXACTLY 1 — give 2 or more and only the first is returned, the rest are dropped (there is no multi-company full-statement API) and the drop is reported in `notes`. Compare several companies with scope=summary. A comma list ("삼성전자,SK하이닉스") or a bare number (259630) is absorbed too; the legacy key `corps` is accepted. Names/codes that fail to resolve are dropped with a note as long as at least one resolves (all-unresolved still errors). Omit when querying one specific filing by rcept_no instead. | |
| year | No | 결산 사업연도 (회계연도). When omitted, the most recently PUBLISHED 사업연도 is selected automatically — this absorbs the validation error that used to occur when the caller left year out for a question that never named a year. Confirm the year actually used via year/year_defaulted in the response. | |
| scope | No | summary (default, fast): 주요계정 — about 14 key accounts per basis (자산·부채 유동/비유동/총계, 자본금·이익잉여금·자본총계, 매출액·영업이익·법인세차감전 순이익·당기순이익·총포괄손익), 연결(CFS)·별도(OFS) rows together ≈ 28 rows per company (별도-only 14; 금융업 +α). full: the whole 재무제표 (BS/IS/CF/CIS/SCE), hundreds~1k rows | |
| format | No | REMOVED (구 get_xbrl) — any value is rejected. markdown/markdown_full → items[] replaces them (omit this arg); raw → discontinued. | |
| fs_div | No | With scope=full, selects 연결(CFS)/별도(OFS) (default CFS). The response echoes the basis ACTUALLY used, not the requested one — a CFS→OFS auto-fallback is flagged by fs_div_note. Ignored by scope=summary — summary responses carry no top-level fs_div because consolidation is per-row there. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored). | |
| report | No | q1/half/q3/annual | annual |
| sj_div | No | With scope=full, filters 재무제표 종류 (when unset: BS+IS+CIS — a company using the '단일 포괄손익계산서' presentation reports 손익 in CIS only, not IS, so CIS is included by default). BS=재무상태표, IS=손익계산서, CF=현금흐름표, CIS=포괄손익계산서, SCE=자본변동표. To get everything, state ["BS","IS","CF","CIS","SCE"] explicitly. A bare string ("BS") or comma list ("BS,IS") is absorbed into an array. | |
| rcept_no | No | 14-digit 접수번호 — serves that filing AS FILED (구 get_xbrl 흡수). corp+year serves the LATEST version instead; the two can differ after a [기재정정]. **연차(사업보고서) rcept 전용** — 분·반기 XBRL 은 기간 구조(누계·단독)가 달라 corp+report 로 조회하세요(no_data 가 라우팅). Accepts fs_div·sj_div (구 sections 는 sj_div 로 흡수); corp·year·scope must be omitted. Adds 합산 검증(validations) to the response. |
get_going_concernRead-onlyIdempotentInspect
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]
"이스타코 2024 계속기업 위험 있어?" → corp="이스타코", year=2024
"별도 기준 정량 점검" → 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)/경계(34)/위험(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.
| Name | Required | Description | Default |
|---|---|---|---|
| corp | Yes | 회사명/종목코드/corp_code | |
| year | Yes | 결산 사업연도 (회계연도, fiscal year) — the number you pass IS the 사업연도=회계연도=결산연도. Do NOT subtract it; pass it as-is. Only tools where year is optional auto-select the latest published year when omitted (if year is required in the tool you are calling, it cannot be omitted — confirm the year actually used via the response `year` field).e.g. 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → all 2025 (결산일 2025-12-31). Convert ONLY when the user explicitly names the 공시(제출)연도, as in '○○년에 공시된 보고서': a 12월 결산법인 files by the end of March of the following year.(e.g. '2026년에 공시된 사업보고서' → 2025). Otherwise the input is ALWAYS on a 사업연도=회계연도=결산연도 basis. Relative expressions ('최근 N개년'·'작년' and the like) count back from the most recent PUBLISHED 사업연도 as of today: a 사업보고서 is filed within about 90 days after 결산 (12월 결산 법인 → March of the following year), so from April the latest is last year, and in Jan~Mar it is the year before last. e.g. if today is 2026-06 the latest is FY2025 → '최근 5개년'=2021~2025 (NOT 2020~2024). Supported floor is FY2015 (the range OpenDART's structured APIs cover) — 2014 and earlier are rejected. A 비12월 결산 (3·6·9월) 법인 may have its latest 사업연도 equal to the calendar year (e.g. a 3월 결산 company from July onward). | |
| fs_div | No | 연결(CFS)/별도(OFS), default CFS. Falls back to 별도 automatically when 연결 is absent (the response fs_div reports the basis actually used). Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored). | |
| refresh | No | Bypass the cache and re-collect |
get_internal_controlRead-onlyIdempotentInspect
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]
"카카오페이 2024 내부회계 의견" → corp="카카오페이", year=2024
"연결 기준만" → 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).
| Name | Required | Description | Default |
|---|---|---|---|
| corp | Yes | 회사명/종목코드/corp_code | |
| year | Yes | 결산 사업연도 (회계연도, fiscal year) — the number you pass IS the 사업연도=회계연도=결산연도. Do NOT subtract it; pass it as-is. Only tools where year is optional auto-select the latest published year when omitted (if year is required in the tool you are calling, it cannot be omitted — confirm the year actually used via the response `year` field).e.g. 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → all 2025 (결산일 2025-12-31). Convert ONLY when the user explicitly names the 공시(제출)연도, as in '○○년에 공시된 보고서': a 12월 결산법인 files by the end of March of the following year.(e.g. '2026년에 공시된 사업보고서' → 2025). Otherwise the input is ALWAYS on a 사업연도=회계연도=결산연도 basis. Relative expressions ('최근 N개년'·'작년' and the like) count back from the most recent PUBLISHED 사업연도 as of today: a 사업보고서 is filed within about 90 days after 결산 (12월 결산 법인 → March of the following year), so from April the latest is last year, and in Jan~Mar it is the year before last. e.g. if today is 2026-06 the latest is FY2025 → '최근 5개년'=2021~2025 (NOT 2020~2024). Supported floor is FY2015 (the range OpenDART's structured APIs cover) — 2014 and earlier are rejected. A 비12월 결산 (3·6·9월) 법인 may have its latest 사업연도 equal to the calendar year (e.g. a 3월 결산 company from July onward). | |
| fs_div | No | both (default — 연결+별도 both)/연결(CFS)/별도(OFS). ICFR normally exists for 별도(OFS) only; 연결(CFS) ICFR 감사 applies only to 전기말 별도자산 2조↑ filers from FY2023. 별도(OFS) falls back to a standalone ICFR 공시 when the 감사보고서 embeds none, while 연결(CFS) never falls back. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored). | |
| refresh | No | Bypass the cache and re-collect |
get_periodic_reportARead-onlyIdempotentInspect
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]
"삼성전자 2025년 배당 내역" → corp="삼성전자", year=2025, report_type="dividends"
"카카오 최대주주가 누구야" → 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: quote fiscal_year_note verbatim — 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.
| Name | Required | Description | Default |
|---|---|---|---|
| corp | Yes | 회사명/종목코드/corp_code | |
| year | No | 결산 사업연도 (회계연도) — the FISCAL year, NOT the filing year. When omitted, the most recently PUBLISHED year is selected automatically, based on 결산월(acc_mt) and report type. Confirm the year actually used via year/year_defaulted in the response. | |
| report | No | Report type | annual |
| max_items | No | Cap on rows returned per section (default 150). The excess is cut and flagged via truncated=true, and total_count then carries the real row count — this keeps responses from bloating on row-heavy, prose-heavy sections such as 임원현황·타법인출자·채무증권. | |
| report_type | Yes | 28 sections — **a single string OR an array** (an array is collected in parallel and returned as sections[]). Families: 주주 4 (largest_shareholder etc.) / 임직원 3 (executives etc.) / 보수 6 (executive_compensation_* etc.) / 회계감사 3 (auditor_opinion etc.) / 자본 3 (dividends·treasury_stock etc.) / 자금사용 2 (*_fund_use) / 타법인출자 1 / 채무증권 6 (*_unredeemed etc.). See the enum list for exact value names (the name IS the meaning). Group aliases expand to their members too — 'shareholders' (주주 4) and 'executive_compensation' (보수 6). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as readOnly, idempotent, and non-destructive, and the description builds on that rather than repeating it. It adds rich runtime behavior beyond annotations: amounts are strings, status codes 000/013, full-array 013 flips to no_data mode, 013 can be a legitimate absence, fiscal-year alignment can differ for non-December clorders, and V2 routing is automatic for comp sections.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is well organized into Purpose/Usage/Response/Rules and front-loads the main action. It is dense and uses a mixed Korean-English style with some repeated 013 themes, but every section earns its place and the structure makes the complexity navigable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 28-section parameter, lack of output schema, and many caveats, the description is remarkably complete. It covers status handling, no-data modes, fiscal-year mapping, string formatting, array error behavior, and even compensates any auto-routing specifics needed for newer section variants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even without parameter guidance. The [Usage] examples reinforce parameter selection, but the schema already defines corp, year, report, max_items, and report_type, including group aliases and allowed values; the description does not add substantial new parameter semantics beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: it retrieves 28 business-report detail sections as structured data, either one section or multiple. The [Purpose] section also distinguishes it from get_financials and get_audit_profile/get_audit_report, so it is easy to tell apart from close siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit usage examples mapping user requests to corp, year, and report_type, and explains what happens when year is omitted. It also names alternatives for financial-statements and auditor-opinion detail, giving practical routing guidance instead of leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_registration_statementARead-onlyInspect
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]
"대한항공 유상증자 조건" → 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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | 조회 종료일(YYYY-MM-DD / YYYYMMDD). 기본 오늘(생략 시 period.end_defaulted:true) | |
| corp | Yes | 회사명/종목코드/corp_code — DS006 은 corp_code 필수라 회사 없는 전수 조회는 불가 | |
| limit | No | 반환할 신고서 건수 상한(rcept_no 단위, 접수일 최신순 — 기본 10). 초과분은 잘리고 truncated=true·total_filings 로 표시된다. 인수인 그룹이 신고서당 수십 행이라 행이 아니라 신고서 단위로 자른다 | |
| start | No | 조회 시작일(YYYY-MM-DD / YYYYMMDD) — **신고서 최초접수일** 기준. 기본값은 데이터 하한인 2015-01-01(전기간)이며 생략 시 period.defaulted:true. 증권신고서는 드문 이벤트라 창을 좁히면 오히려 놓친다 — DS006 은 페이징이 없어 창을 넓혀도 호출 비용이 같다 | |
| statement_type | No | 신고서 종류 — 단일 값 또는 배열, **미지정 시 6종 전부 병렬 조회**(DART 6콜 고정). equity=지분증권(유상증자·IPO) / debt=채무증권(회사채) / depositary=증권예탁증권(DR) / merger=합병 / stock_exchange=주식의포괄적교환·이전 / division=분할. 묶음 별칭 'offering'(공모 3종)·'restructuring'(구조조정 3종)과 한글명(회사채·합병·분할 등)도 수용 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/destructive/openWorld/idempotent); the description adds substantial behavior beyond that — superseded_by semantics, withdrawn:true meaning, version_check incompleteness, date = 접수일 with 정정 falling outside the window, and the crucial fetch_failed/truncated_note = "unconfirmed" ≠ "none" rule. It also flags the 사모/일괄신고서/소액공모 out-of-scope boundary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and clearly sectioned ([Purpose]/[Usage]/[Response]/[Rules]), so an agent can parse it quickly. It is dense and longer than strictly necessary, with some statements echoing the parameter schema, but every block carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the full burden and does: it enumerates the filings[] shape and its sections (general·securities·underwriters·fund_use·sellers·put_right·issued_securities·parties), explains ordering, date semantics, raw-string values, and omitted fields. Edge cases (superseded, withdrawn, incomplete versions, unconfirmed types) are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter (corp format, date formats, limit truncation, statement_type enums and aliases). The description's only added parameter value is the single worked Usage example, which mostly restates what the schema says. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (증권신고서 주요정보 6종 조회) and enumerates exactly what is returned (모집·매출 조건, 인수인, 자금 사용목적, 합병·분할 조건). The [Purpose] block explicitly routes sibling cases: board decisions → get_corporate_event, listing scans → search_disclosures(kind="issuance"), narrative risk → download_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The [Usage] block gives a concrete natural-language→parameter mapping example ("대한항공 유상증자 조건" → corp="대한항공", statement_type="equity"). It also states when NOT to use it by naming three alternative tools for adjacent intents, so selection is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_valuation_dataARead-onlyIdempotentInspect
MyDART MCP의 get_valuation_data 도구는 가치평가 데이터(시장 시계열·WACC·유사회사)를 kind 로 골라 조회합니다.
[Purpose]
평가기준일 시세·β checks, WACC build-up, peer comps.
Evidence, not adoption — the 평가자 decides; all components overridable.
재무수치: get_financials; 업종(KSIC)·시장구분: get_company_profile.
[Usage]
"에스에프에이 최근 1년 주가" → kind="market", corp="에스에프에이"
"반도체장비 업종 피어 멀티플" → kind="peers", ksic="29271"
[Response]
Units: *_pct = annual %, but mrp·srp·tax_rate = decimals (0.08 = 8%); flt_rt = 등락률 %.
wacc_pct is null when 신용등급 미공시 while 차입 exists — nothing is assumed.
[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.
| Name | Required | Description | Default |
|---|---|---|---|
| kd | No | [wacc] Kd given directly (annual %, 세전) — overrides credit_rating·kd_tenor | |
| yq | No | [wacc·peers] 평가기준 분기 (e.g. 2026Q2 — lowercase q accepted). Default: latest snapshot | |
| end | No | [market] End date (default: latest 적재일). 구 `to` 도 받는다 | |
| mrp | No | [wacc] MRP override (decimal, e.g. 0.08). Default 0.08 = midpoint of the 한국공인회계사회 가이던스 range (7~9%) | |
| srp | No | [wacc] SRP override (decimal) — bypasses 분위 판정 | |
| corp | No | 회사명·종목코드·corp_code. market=individual 종목 시세 (kind=market requires exactly one of corp | index | rate_series), wacc=REQUIRED (the subject company), peers=target (동업종 auto-selected). The legacy keys `code`/`stock_code` are absorbed into this argument | |
| freq | No | [market] Resampling frequency of the series — daily (default)·weekly (금요일 마감)·monthly (월말). Resampled rows drop flt_rt and carry period_return_pct instead (flt_rt compounded over the bucket, %), so returns still come from that field, never from close deltas | |
| kind | Yes | What to fetch — market=시세·지수·금리 time series / wacc=WACC components + CAPM build-up / peers=동업종(KSIC) peer multiples·무차입β·자본구조. Each kind takes a different argument set; an argument that does not apply is reported as an error naming every argument that kind DOES accept, never silently ignored. An unrecognized key is rejected the same way (additionalProperties:false), so a typo surfaces instead of being dropped. | |
| ksic | No | [peers] KSIC 업종코드 given directly (instead of corp — useful for 비상장 targets). e.g. '26410' | |
| index | No | [market] 시장지수 — kospi·kosdaq (aliases such as KOSPI/코스피 accepted). Mutually exclusive with corp·rate_series | |
| limit | No | [market·peers] Return cap — market default 600 (1~3000), peers default 15 (3~50) | |
| start | No | [market] Start date YYYYMMDD·YYYY-MM-DD (default: one year before `end`). 구 `from` 도 받는다 | |
| exclude | No | [peers] Exclusion rules — spac·reit (default)·loss(LTM 순손실)·financial(KSIC 64~66). A bare string is also accepted | |
| kd_tenor | No | [wacc] Kd(타인자본비용) tenor (default 5y) | |
| rf_tenor | No | [wacc] Rf(무위험이자율) tenor (default 10y) | |
| tax_rate | No | [wacc·peers] 한계법인세율 (default 0.264 = 24%×1.1) — also t in Hamada unlevering (wacc beta.unlevered · peers beta_unlev) | |
| beta_spec | No | [wacc] β spec — 2w=2년 주간 (default, 실무 관행), 5m=5년 월간 | |
| size_band | No | [peers] Multiple range around the target's 시총 (e.g. 10 = 1/10~10x; min 2). Only honoured when corp is given | |
| target_de | No | [wacc] Target 자본구조 D/E (시가) — sets the WACC weights (wE·wD). If omitted, the snapshot's 실측 value is used. For β it only relevers: beta.unlevered still unlevers at the 실측 D/E and reports relevered_at_target_de; Ke keeps the observed βL | |
| srp_scheme | No | [wacc] 규모위험 프리미엄(SRP) 분위체계 (default quintile) | |
| rate_series | No | [market] 시장금리 — ktb1y~ktb50y(국고채)·corp_aa_3y·corp_bbb_3y(회사채 3년)·cd91. Mutually exclusive with corp·index | |
| equity_basis | No | [wacc] Definition of E(자기자본 시가) (default outstanding_plus_nci) — also the E in the D/E that unlevers β (beta.unlevered) | |
| include_pref | No | [wacc] Add 우선주 시총 into E (default true) | |
| credit_rating | No | [wacc] 신용등급 used to derive Kd (무보증 공모회사채, KIS자산평가 매트릭스 AAA~B-). Mid-notches are written with 0, NOT bare: AA0·A0·BBB0·BB0·B0. If omitted the 정기보고서 공시등급 is picked up automatically; where none is disclosed Kd is left uncomputed rather than assumed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description layers on substantive behavior: unit conventions (*_pct vs decimal mrp·srp·tax_rate), the nullable wacc_pct when 신용등급 is undisclosed ('nothing is assumed'), returns sourced from flt_rt rather than close deltas (split/merge breaks), peer prefix relaxation 5→4→3 exposed via prefix_depth_used, and the note that notes[] accumulates 강등/폴백/주의. The schema also documents explicit error behavior for inapplicable or unknown arguments. This is well beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The [Purpose]/[Usage]/[Response]/[Rules] structure is front-loaded and scannable, and for a 24-parameter tool the length is largely justified. There is some duplication — the flt_rt/close-delta rule appears both under [Rules] and again in the `freq` schema description — which keeps it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value meaning, and it does: unit conventions, key fields (flt_rt, period_return_pct, prefix_depth_used, beta.unlevered/beta_unlev), null behavior, aggregation caveats (n varies, EBITDA often missing), and the instruction to always read notes[]. Combined with 100% schema coverage, an agent has what it needs to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the 24 parameters is already fully documented in the schema (including kind's mode-specific argument sets, defaults, and enums). The description reinforces a few semantics (overridable components, kind selection, ksic use for 비상장 targets) but adds little syntax or meaning the schema does not already carry, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource (query valuation data — market time series, WACC, peer comps) selected by `kind`, and the [Purpose] block enumerates exactly the three modes (평가기준일 시세·β, WACC build-up, peer comps). It also explicitly routes adjacent needs to siblings (get_financials for 재무수치, get_company_profile for 업종/시장구분), so an agent can separate it from those tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The [Usage] block gives concrete natural-language→argument mappings ('에스에프에이 최근 1년 주가' → kind="market", corp="에스에프에이"; '반도체장비 업종 피어 멀티플' → kind="peers", ksic="29271'), which is the clearest possible guidance for a multi-mode dispatcher tool. It also names the alternative tools for out-of-scope data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_audit_findingsRead-onlyIdempotentInspect
MyDART MCP의 search_audit_findings 도구는 회사를 지정하지 않고 감사보고서 조건으로 상장사·비상장사 목록을 찾습니다.
[Purpose]
List/aggregate: "의견거절 회사"·"내부회계 취약점"·"○○회계법인 감사 회사".
Detail: get_audit_profile/get_internal_control; 원문: get_audit_report.
[Usage]
"FY2024 코스피 의견거절 회사" → year=2024, market="kospi", opinion="disclaimer"
목록·집계만 필요 → fields="brief"
"24~25년 ICFR 취약점" → year=[2024,2025] (다년 — coverage.years[])
"비상장 의견거절" → 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:
noteONLY on 연결(CFS) ("legitimately absent (<2조)" vs "expected-audit-but-missing"); 별도(OFS) has expected_type(_note).
| Name | Required | Description | Default |
|---|---|---|---|
| kam | No | Whether 핵심감사사항(KAM) are present | |
| year | Yes | 결산 사업연도 (회계연도, fiscal year) — the number you pass IS the 사업연도=회계연도=결산연도. Do NOT subtract it; pass it as-is. Only tools where year is optional auto-select the latest published year when omitted (if year is required in the tool you are calling, it cannot be omitted — confirm the year actually used via the response `year` field).e.g. 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → all 2025 (결산일 2025-12-31). Convert ONLY when the user explicitly names the 공시(제출)연도, as in '○○년에 공시된 보고서': a 12월 결산법인 files by the end of March of the following year.(e.g. '2026년에 공시된 사업보고서' → 2025). Otherwise the input is ALWAYS on a 사업연도=회계연도=결산연도 basis. Relative expressions ('최근 N개년'·'작년' and the like) count back from the most recent PUBLISHED 사업연도 as of today: a 사업보고서 is filed within about 90 days after 결산 (12월 결산 법인 → March of the following year), so from April the latest is last year, and in Jan~Mar it is the year before last. e.g. if today is 2026-06 the latest is FY2025 → '최근 5개년'=2021~2025 (NOT 2020~2024). Supported floor is FY2015 (the range OpenDART's structured APIs cover) — 2014 and earlier are rejected. A 비12월 결산 (3·6·9월) 법인 may have its latest 사업연도 equal to the calendar year (e.g. a 3월 결산 company from July onward). Accepts a single year OR an array (e.g. [2024, 2025], max 10) for a multi-year query — rows then carry their own bsns_year and `coverage` returns a per-year breakdown (coverage.years[]). | |
| limit | No | Cap on **rows** returned (SQL LIMIT applies to rows, not companies — with the default fs_div=both a company can occupy 2 rows, so the number of distinct companies shown is smaller than this cap). When the list is cut here, truncated=true while count still reports the full row count. To count companies, dedupe companies[] by corp_code — and if truncated=true that count is a floor, not the answer: narrow the scope (market·fs_div·asset_bucket) until truncated=false. | |
| fields | No | Field width of each company row. full(default)=every field, incl. the 본문 산문 (의견근거·강조·기타·계속기업 text, KAM 제목 배열, ICFR 근거·취약점, applicability) — averages ~3,957 bytes/row. brief=list axis only, the same set as the 뷰어 스크리너 표: 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 (~318 bytes/row, 12x smaller — a whole 목록 fits in one response). Use brief for list/count asks and switch to full (or get_audit_report/get_internal_control) once a company is picked. coverage·breakdown·count·truncated are identical in both. | full |
| fs_div | No | 재무제표 구분. CFS=연결, OFS=별도. 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company), so row count ≠ company count — dedupe by corp_code when counting companies. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored). | |
| market | No | 시장구분. Default all = 상장사 (유가 kospi·코스닥 kosdaq·코넥스 konex — by FY말 market). unlisted = 비상장(사업보고서): rows whose FY말 market is E — 사업보고서를 내는 비상장사 plus 상장사의 상장 전·폐지 후 연도. all never includes unlisted, so for 비상장 (or 상장+비상장) query market=unlisted separately. unlisted is answered only where the server has the 비상장 dataset public (otherwise a validation:market error; on such a server all may still carry 상장 전·폐지 후 연도 rows as E). 감사보고서만 내는 외감 비상장사 (no 사업보고서) are in neither — use get_audit_profile per company. Uppercase (KOSDAQ) and 한글 (코스닥/유가증권/코넥스/전체/비상장) aliases accepted. | |
| auditor | No | Partial match on 감사인명 (e.g. 삼정/한영/안진/삼일) | |
| opinion | No | 감사의견 filter. unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견 (everything other than 적정: 한정/부적정/의견거절). 한글 values (적정·의견거절 etc.) also accepted. | |
| emphasis | No | Presence of 강조사항(EoM) | |
| industry | No | 업종 — financial=금융 (KSIC 64~66: 은행·보험·금융지주 etc.), non_financial=비금융. The 주석 XBRL and ICFR 운영의무 thresholds differ between them. 한글 values (금융·비금융) also accepted. | |
| asset_bucket | No | Size bucket by 전기말 자산총액(별도). gte_2tn=2조이상, gte_500bn=5천억이상, gte_100bn=1천억이상, lt_100bn=1천억미만. 한글 values also accepted. | |
| icfr_opinion | No | 내부회계관리제도 의견. adverse=부적정, disclaimer=의견거절 (covers both 감사 의견거절 and 검토 검토결론 불표명 — use icfr_type to tell 감사 from 검토), modified=변형 (everything other than 적정). 한글 values also accepted. | |
| kam_required | No | Whether THIS report had to carry a KAM section: 적용시기 rules (규모·연도·시장) AND opinion ≠ 의견거절 (감사기준서 705 문단 29 — a 의견거절 report carries no KAM section; 한정·부적정 still must). false = outside the phase-in OR 의견거절 (those rows carry kam_exempt_reason) | |
| other_matter | No | Presence of 기타사항(OM) | |
| going_concern | No | 계속기업 불확실성 mentioned in the 감사보고서 | |
| xbrl_required | No | Whether 재무제표 주석 XBRL was mandatory for that year (적용시기 rules). Populated only after the backfill | |
| include_reference | No | Whether to include the 적용시기 참조표 (full phase-in schedule for KAM·ICFR·XBRL 주석·자금부정통제, about 4.8KB). Each company row already carries its own verdict in the applicability field, so set true ONLY when you need the 법령 근거 text behind that verdict. | |
| kam_none_declared | No | Whether the 감사보고서 explicitly declares '보고할 핵심감사사항 없음'. true=declared (kam_count=0 is then normal), false=undeclared or unknown. Combine with kam_count=0 to separate a genuine suspected omission from a declared absence | |
| icfr_material_weakness | No | A 내부회계관리제도 중요한 취약점 exists |
search_disclosuresRead-onlyInspect
MyDART MCP의 search_disclosures 도구는 DART 공시 목록에서 접수번호(rcept_no)를 찾습니다 — download_document·get_attachments 진입점.
[Purpose]
사업보고서 섹션 데이터는 get_periodic_report, 동명 회사는 find_corp_code 로 corp_code 확정.
[Usage]
"삼성전자 최근 한 달 공시" → corp="삼성전자", days=30
"작년 유상증자 결정 전부" → preset="rights_offering", start="2025-01-01", end="2025-12-31"
"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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date (defaults to today) | |
| corp | No | 회사명/종목코드/corp_code. Omit for all companies — but a batch without corp splits the period into calendar months and sweeps every company: closed months fetched before are served from cache (cached_chunks), the rest cost DART requests up to the per-call budget (default 60, env SEARCH_MAX_REQUESTS) and can take tens of seconds; on reaching it collection is truncated and flagged incomplete=true. With corp the split disappears and the same query finishes in 1 request and a few hundred ms. | |
| days | No | Trailing N days from today instead of start (1~730; out-of-range values are clamped to the bound). When unset, the preset default applies: 사업·감사 460 / 반기 280 / 분기 180 / 수시·일반 90. For windows longer than 730 days use start/end | |
| kind | No | 공시유형: periodic/major/issuance/holdings/other/audit/fund/abs/exchange/ftc (= DART pblntf_ty A~J 순서 — 글자로 줘도 된다) | |
| page | No | Page number (page mode — the default when neither preset nor all_pages is set). Row shape differs by mode: page mode items are raw DART list rows, batch mode items a 7-key projection (rcept_no·rcept_dt·corp_name·corp_code·corp_cls·report_nm·flr_nm) plus event on 주요사항 rows and corrected/withdrawn:true from DART rm (정 = a later 정정 exists, 철 = withdrawn), so any other field is only in page mode. | |
| size | No | Page size (page mode) | |
| limit | No | Cap on rows finally returned in batch mode (preset given or all_pages=true) | |
| start | No | Start date YYYY-MM-DD. When omitted, `days` back from today (and when that is unset, the preset default: 사업·감사 460 / 반기 280 / 분기 180 / 수시·일반 90) — set it explicitly for older filings. (The old parameter name begin is still accepted — unified with start/end in get_corporate_event.) | |
| preset | No | 주요사항보고 presets match the EXACT DART 보고 사유 (never a title substring) — one key per 사유, named like get_corporate_event event_type (cb_issuance · cb_treasury_resale · cb_early_acquisition · cb_call_designation · cb_call_exercise_third_party · treasury_acquisition · company_merger · other_corp_stock_acquisition · guarantee_for_others …), plus group aliases that union them: capital_change · cb · bw · cps · bond_issuance · treasury · treasury_trust · restructuring · asset_deal · asset_transfer_etc · guarantee_debt · insolvency · overseas. Other presets: large_holding_5pct · annual_report/half_report/quarterly_report · audit_report · correction_all. Setting one applies kind and the filter automatically and collects every page in parallel. Old names (cb_issue · bw_issue · eb_issue · treasury_buy/sell · merger · split) are accepted as the exact 사유 they name. | |
| all_pages | No | Collect the whole period in parallel even without a preset (정정공시 included — the same set as page mode). When true, limit applies instead of page/size. | |
| final_only | No | One latest version per event — where a 정정 exists the 구본(원본) is dropped and the latest 정정본 is taken (this does NOT exclude 정정공시 themselves). Use when you need one duplicate-free set. DART windows these on each event's LATEST version date — an event first filed in the window but corrected after end is absent (it shows up in the window of its last 정정). | |
| concurrency | No | Collector workers in batch mode (1~10, default 5). **Effective concurrency is set by a server-wide cap, so raising this usually does NOT make it faster** — to cut latency, set corp (which removes the period split, leaving a single request), narrow the period, or lower limit. The response's dart_requests/cached_chunks report how many DART requests this call spent and how many chunks came from cache — read them when it feels slow. | |
| include_corrections | No | Whether to include 정정공시 ([기재정정] etc.) — preset batch mode ONLY (default false, to avoid double-counting 원본+정정 of the same event; correction_all forces true; ignored when final_only=true since that already removes duplicates). Bare all_pages and page mode ALWAYS include them (raw DART) — for latest-only without duplicates use final_only. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
search_audit_findings2 fields changed- changed
Input schema / properties / market / descriptionPrevious value: -"시장구분. Default all = every 상장사 (유가 kospi·코스닥 kosdaq·코넥스 konex are all loaded). Uppercase (KOSDAQ) and 한글 (코스닥/유가증권/코넥스/전체) aliases accepted."New value: +"시장구분. Default all = 상장사 (유가 kospi·코스닥 kosdaq·코넥스 konex — by FY말 market). unlisted = 비상장(사업보고서): rows whose FY말 market is E — 사업보고서를 내는 비상장사 plus 상장사의 상장 전·폐지 후 연도. all never includes unlisted, so for 비상장 (or 상장+비상장) query market=unlisted separately. unlisted is answered only where the server has the 비상장 dataset public (otherwise a validation:market error; on such a server all may still carry 상장 전·폐지 후 연도 rows as E). 감사보고서만 내는 외감 비상장사 (no 사업보고서) are in neither — use get_audit_profile per company. Uppercase (KOSDAQ) and 한글 (코스닥/유가증권/코넥스/전체/비상장) aliases accepted." - changed
Input schema / properties / market / enumPrevious value: -[ - "kospi", - "kosdaq", - "konex", - "all" -]New value: +[ + "kospi", + "kosdaq", + "konex", + "all", + "unlisted" +]
6 tool updates
- Changed
download_document4 fields changed- changed
Input schema / properties / doc_index / descriptionPrevious 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." - changed
Input schema / properties / find / descriptionPrevious 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 다." - added
Input schema / properties / roleAdded 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" +} - added
Input schema / properties / sectionsAdded 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" +}
- Changed
get_audit_report1 field changed- changed
Input schema / properties / fs_div / descriptionPrevious value: -"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). Aliases consolidated/separate·연결/별도 also accepted. With both, reports[] holds 2 entries — reading only the first drops an axis."New value: +"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). With both, reports[] holds 2 entries — reading only the first drops an axis. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."
- Changed
get_financials1 field changed- changed
Input schema / properties / fs_div / descriptionPrevious value: -"With scope=full, selects 연결(CFS)/별도(OFS) (default CFS). The response echoes the basis ACTUALLY used, not the requested one — a CFS→OFS auto-fallback is flagged by fs_div_note. Ignored by scope=summary — summary responses carry no top-level fs_div because consolidation is per-row there. Aliases consolidated/separate·연결/별도 also accepted."New value: +"With scope=full, selects 연결(CFS)/별도(OFS) (default CFS). The response echoes the basis ACTUALLY used, not the requested one — a CFS→OFS auto-fallback is flagged by fs_div_note. Ignored by scope=summary — summary responses carry no top-level fs_div because consolidation is per-row there. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."
- Changed
get_going_concern1 field changed- changed
Input schema / properties / fs_div / descriptionPrevious value: -"연결(CFS)/별도(OFS), default CFS. Falls back to 별도 automatically when 연결 is absent (the response fs_div reports the basis actually used). Aliases consolidated/separate·연결/별도 also accepted."New value: +"연결(CFS)/별도(OFS), default CFS. Falls back to 별도 automatically when 연결 is absent (the response fs_div reports the basis actually used). Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."
- Changed
get_internal_control1 field changed- changed
Input schema / properties / fs_div / descriptionPrevious value: -"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). ICFR normally exists for 별도(OFS) only; 연결(CFS) ICFR 감사 applies only to 전기말 별도자산 2조↑ filers from FY2023. 별도(OFS) falls back to a standalone ICFR 공시 when the 감사보고서 embeds none, while 연결(CFS) never falls back. Aliases consolidated/separate·연결/별도 also accepted."New value: +"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). ICFR normally exists for 별도(OFS) only; 연결(CFS) ICFR 감사 applies only to 전기말 별도자산 2조↑ filers from FY2023. 별도(OFS) falls back to a standalone ICFR 공시 when the 감사보고서 embeds none, while 연결(CFS) never falls back. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."
- Changed
search_audit_findings1 field changed- changed
Input schema / properties / fs_div / descriptionPrevious value: -"재무제표 구분. CFS=연결, OFS=별도 (aliases consolidated/separate·연결/별도 also accepted). 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company), so row count ≠ company count — dedupe by corp_code when counting companies."New value: +"재무제표 구분. CFS=연결, OFS=별도. 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company), so row count ≠ company count — dedupe by corp_code when counting companies. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."
1 tool update
- Changed
search_disclosures1 field changed- changed
Input schema / properties / corp / descriptionPrevious value: -"회사명/종목코드/corp_code. Omit for all companies — but a batch without corp splits the period into 90-day chunks and sweeps every company, spending up to the per-call request budget (default 60, env SEARCH_MAX_REQUESTS) and taking tens of seconds; on reaching it collection is truncated and flagged incomplete=true. With corp the split disappears and the same query finishes in 1 request and a few hundred ms."New value: +"회사명/종목코드/corp_code. Omit for all companies — but a batch without corp splits the period into calendar months and sweeps every company: closed months fetched before are served from cache (cached_chunks), the rest cost DART requests up to the per-call budget (default 60, env SEARCH_MAX_REQUESTS) and can take tens of seconds; on reaching it collection is truncated and flagged incomplete=true. With corp the split disappears and the same query finishes in 1 request and a few hundred ms."
6 tool updates
- Changed
get_corporate_event3 fields changed- changed
Input schema / properties / end / descriptionPrevious value: -"End date (YYYY-MM-DD / YYYYMMDD). Defaults to today"New value: +"End date (YYYY-MM-DD / YYYYMMDD). Defaults to today — omitted end is flagged as period.end_defaulted:true" - changed
Input schema / properties / limit / descriptionPrevious value: -"Cap on timeline rows returned (default 100, date descending). The excess is cut and flagged via truncated=true, with total_events carrying the real count — a company with frequent 자본거래 yields hundreds over a 3-year window. Narrowing the period is more precise."New value: +"Cap on timeline rows returned (default 100, date descending — 최초 공시일). The excess is cut and flagged via truncated=true, with total_events carrying the real count — a company with frequent 자본거래 yields hundreds over a 3-year window. Narrowing the period is more precise." - changed
Input schema / properties / start / descriptionPrevious value: -"Start date (YYYY-MM-DD / YYYYMMDD). Defaults to 3 years ago — an omitted bound is flagged as period.defaulted:true in the response"New value: +"Start date (YYYY-MM-DD / YYYYMMDD). Defaults to 3 years ago — omitted start is flagged as period.defaulted:true. start/end match each event's FIRST filing (DART 최초접수일) — a 정정 filed in the window for an event first filed earlier is not returned"
- Changed
get_financials1 field changed- changed
Input schema / properties / scope / descriptionPrevious value: -"summary (default): 주요계정, 8~10 rows (fast). full: the whole 재무제표 (BS/IS/CF/CIS/SCE), hundreds~1k rows"New value: +"summary (default, fast): 주요계정 — about 14 key accounts per basis (자산·부채 유동/비유동/총계, 자본금·이익잉여금·자본총계, 매출액·영업이익·법인세차감전 순이익·당기순이익·총포괄손익), 연결(CFS)·별도(OFS) rows together ≈ 28 rows per company (별도-only 14; 금융업 +α). full: the whole 재무제표 (BS/IS/CF/CIS/SCE), hundreds~1k rows"
- Changed
get_registration_statement1 field changed- changed
Input schema / properties / end / descriptionPrevious value: -"조회 종료일(YYYY-MM-DD / YYYYMMDD). 기본 오늘"New value: +"조회 종료일(YYYY-MM-DD / YYYYMMDD). 기본 오늘(생략 시 period.end_defaulted:true)"
- Changed
get_valuation_data3 fields changed- changed
Input schema / properties / equity_basis / descriptionPrevious value: -"[wacc] Definition of E(자기자본 시가) (default outstanding_plus_nci)"New value: +"[wacc] Definition of E(자기자본 시가) (default outstanding_plus_nci) — also the E in the D/E that unlevers β (beta.unlevered)" - changed
Input schema / properties / target_de / descriptionPrevious value: -"[wacc] Target 자본구조 D/E (시가). If omitted, the snapshot's 실측 value is used"New value: +"[wacc] Target 자본구조 D/E (시가) — sets the WACC weights (wE·wD). If omitted, the snapshot's 실측 value is used. For β it only relevers: beta.unlevered still unlevers at the 실측 D/E and reports relevered_at_target_de; Ke keeps the observed βL" - changed
Input schema / properties / tax_rate / descriptionPrevious value: -"[wacc·peers] 한계법인세율 (default 0.264 = 24%×1.1)"New value: +"[wacc·peers] 한계법인세율 (default 0.264 = 24%×1.1) — also t in Hamada unlevering (wacc beta.unlevered · peers beta_unlev)"
- Changed
search_audit_findings1 field changed- changed
Input schema / properties / kam_required / descriptionPrevious value: -"Whether KAM disclosure was mandatory by 규모·연도·시장 (적용시기 rules). kam=false & kam_required=true & kam_none_declared=false = suspected omission"New value: +"Whether THIS report had to carry a KAM section: 적용시기 rules (규모·연도·시장) AND opinion ≠ 의견거절 (감사기준서 705 문단 29 — a 의견거절 report carries no KAM section; 한정·부적정 still must). false = outside the phase-in OR 의견거절 (those rows carry kam_exempt_reason)"
- Changed
search_disclosures2 fields changed- changed
Input schema / properties / final_only / descriptionPrevious value: -"One latest version per event — where a 정정 exists the 구본(원본) is dropped and the latest 정정본 is taken (this does NOT exclude 정정공시 themselves). Use when you need one duplicate-free set."New value: +"One latest version per event — where a 정정 exists the 구본(원본) is dropped and the latest 정정본 is taken (this does NOT exclude 정정공시 themselves). Use when you need one duplicate-free set. DART windows these on each event's LATEST version date — an event first filed in the window but corrected after end is absent (it shows up in the window of its last 정정)." - changed
Input schema / properties / page / descriptionPrevious value: -"Page number (page mode — the default when neither preset nor all_pages is set). Row shape differs by mode: page mode items are raw DART list rows, batch mode items a 7-key projection (rcept_no·rcept_dt·corp_name·corp_code·corp_cls·report_nm·flr_nm) plus event on 주요사항 rows, so any other field is only in page mode."New value: +"Page number (page mode — the default when neither preset nor all_pages is set). Row shape differs by mode: page mode items are raw DART list rows, batch mode items a 7-key projection (rcept_no·rcept_dt·corp_name·corp_code·corp_cls·report_nm·flr_nm) plus event on 주요사항 rows and corrected/withdrawn:true from DART rm (정 = a later 정정 exists, 철 = withdrawn), so any other field is only in page mode."
1 tool update
- Changed
get_valuation_data2 fields changed- changed
Input schema / properties / credit_rating / descriptionPrevious value: -"[wacc] 신용등급 used to derive Kd (무보증 공모회사채, 금투협 시가평가 전 등급). Mid-notches are written with 0, NOT bare: AA0·A0·BBB0. If omitted the 정기보고서 공시등급 is picked up automatically; where none is disclosed Kd is left uncomputed rather than assumed"New value: +"[wacc] 신용등급 used to derive Kd (무보증 공모회사채, KIS자산평가 매트릭스 AAA~B-). Mid-notches are written with 0, NOT bare: AA0·A0·BBB0·BB0·B0. If omitted the 정기보고서 공시등급 is picked up automatically; where none is disclosed Kd is left uncomputed rather than assumed" - changed
Input schema / properties / credit_rating / enumPrevious value: -[ - "AAA", - "AA+", - "AA0", - "AA-", - "A+", - "A0", - "A-", - "BBB+", - "BBB0", - "BBB-" -]New value: +[ + "AAA", + "AA+", + "AA0", + "AA-", + "A+", + "A0", + "A-", + "BBB+", + "BBB0", + "BBB-", + "BB+", + "BB0", + "BB-", + "B+", + "B0", + "B-" +]
Related MCP Connectors
Full-text search over K-IFRS/K-GAAP standards and KASB accounting Q&A for Korean accountants
Full-text search over FSS/FSC accounting supervision documents for Korean accounting professionals
Search company disclosures and financial statements from the Korean market. Retrieve stock profile…
Korean company disclosures in English: DART filings, financial statements, segments, 13F.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered analysis of Korean stock market data and corporate disclosures using official DART and KRX APIs.130 npmISC
- FlicenseAqualityBmaintenanceEnables users to call official Open DART and KRX stock-market APIs, retrieve raw JSON, download and decode DART disclosure documents, and search companies by name, stock code, or corporate ID.4-
- AlicenseAqualityCmaintenanceProvides tools for discovering, downloading, parsing, and searching Korean DART financial reports, enabling AI assistants to access Open DART data through structured tools.62MIT
- AlicenseAqualityBmaintenanceProvides 15 tools covering OpenDART 83 APIs for disclosures, financials, equity, XBRL, plus insider signals, accounting risk scores, and Buffett-style quality checklists, and converts HWP/PDF attachments to markdown for AI assistants.15310 npm110MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.