MyDART
Server Details
Powerful OpenDART API-based Korean corporate disclosure tools for accounting professionals
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.8/5 across 16 of 16 tools scored.
Most tools have clearly distinct purposes, but there are a few overlapping pairs: get_financials/get_xbrl both return financial statements, and get_audit_profile/get_audit_report both cover audit opinions. The descriptions provide explicit routing criteria, so an agent can disambiguate with careful reading.
All 16 tools follow a consistent snake_case verb_noun pattern (download_document, find_corp_code, get_financials, search_disclosures, etc.), with no camelCase or style mixing. The verbs (get/download/find/search) are predictable and align with each tool's action.
16 tools is just above the 15-tool threshold for 'well-scoped,' but the server covers a broad domain—corporate identification, disclosures, financials, audit analysis, valuation, and usage stats—so each tool addresses a distinct sub-domain. It feels slightly dense rather than bloated; one or two meta/niche tools (get_usage_stats, get_valuation_data) could be considered optional.
The tool surface covers the full DART analysis workflow: identify company → get profile → search disclosures → fetch documents/attachments → get financials/XBRL → periodic report sections → audit-related tools (profile, report, internal control, going concern, findings search) → corporate events → valuation. Minor gaps remain (e.g., auditor change history requires manual per-year comparison, and XBRL parsing excludes notes/CIS/SCE), but they are workarounds documented in the tool descriptions.
Available Tools
16 toolsdownload_documentARead-onlyIdempotentInspect
MyDART MCP의 download_document 도구는 공시 원문 본문을 마크다운으로 읽습니다(heading·표 구조 보존). 사업보고서 ZIP 안의 감사보고서 선택 포함.
[Purpose]
공시 텍스트 전문이 필요할 때. 감사의견·KAM 등 감사 내용의 "분석"은 get_audit_report 가 더 적합합니다.
비상장 미제출사의 재무제표·주석은 F 감사보고서 rcept 를 이 도구로 여는 것이 정식 경로입니다.
본문이 아니라 HWP·PDF 첨부나 형제문서(정관·영업보고서·내부회계 운영실태보고서)가 목적이면 get_attachments 로, 재무수치를 XBRL 로 받으려면 get_xbrl 로 갑니다.
[Usage]
"이 사업보고서 원문 읽어줘" → rcept_no="20260310002820"
"연결 감사보고서 본문" → check documents[] for role=consolidated_audit, then doc_index=that index
"본문이 잘렸어, 전체로" → rcept_no="…", truncate_at=2000000
[Response]
role: main_body / separate_audit(별도 감사보고서) / consolidated_audit(연결) / internal_control / other
documents[]: metadata only — it carries content ONLY with all_docs=true
[Rules]
A 사업보고서 ZIP holds MULTIPLE documents — 감사의견·KAM·내부회계 live in the 별도(_00760)/연결(_00761) sub-docs, not in index 0. Check documents[].role first, then re-call with doc_index (or all_docs=true).
If truncated=true, compare char_count and raise truncate_at.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format. markdown=DART XML → 마크다운, raw=original XML, text=tags stripped (table structure is lost) | markdown |
| all_docs | No | Convert every 원문 XML in the ZIP and return them as documents[] — the 사업보고서 본문 plus 별도/연결 감사보고서 in one call. | |
| rcept_no | Yes | 14-digit 접수번호 (the rcept_no from search_disclosures). Hyphens and spaces are stripped. | |
| doc_index | No | Selects one 원문 XML inside the ZIP (0-based; 0=본문 when omitted). Use the index from the documents list. The 감사보고서 body is usually index 1~2 (별도/연결). An out-of-range value silently falls back to the main body WITH a `warning` field — check it. | |
| 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). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds substantial behavioral context: preserves heading/table structure, documents[] metadata-only semantics, truncated=true handling, doc_index fallback with warning, and truncate_at clamping/division with all_docs. No contradiction with annotations.
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 description is long but well-structured with Purpose, Usage, Response, and Rules sections. Every section adds value for a complex tool. The opening sentence immediately states the core function. Slightly verbose but justified given 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?
No output schema exists, so the description compensates by explaining response roles (main_body, separate_audit, etc.), documents[] metadata behavior, and truncation rules. It also covers edge cases like out-of-range doc_index and clamp behavior, making it complete for the tool's complexity.
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 already covers all parameters with descriptions (100%), providing baseline 3. The description adds extra meaning: explains how to use doc_index after checking documents[].role, clarifies all_docs returns all documents, and details truncate_at budget sharing. This significantly enhances parameter understanding.
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 description states a specific verb+resource: '공시 원문 본문을 마크다운으로 읽습니다' (reads disclosure original text in markdown). It clearly differentiates from siblings by naming get_audit_report, get_attachments, and get_xbrl for other use cases.
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 guidance: '공시 텍스트 전문이 필요할 때' (when full disclosure text is needed), and alternatives are stated for audit analysis (get_audit_report), attachments (get_attachments), and XBRL (get_xbrl). Also provides concrete usage examples with rcept_no and doc_index.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_corp_codeARead-onlyIdempotentInspect
MyDART MCP의 find_corp_code 도구는 회사명·종목코드로 DART 법인 식별자(corp_code)의 후보를 확인합니다.
[Purpose]
중요: corp_code 를 모르는 기업 조회 시 이 도구를 먼저 사용합니다.
같은 이름의 회사가 여럿이라 어느 법인인지 모호할 때 후보 확인에도 사용합니다.
식별자 확인 전용이라, 업종·데이터 위치까지 봐야 하면 get_company_profile, 기간·유형별 공시 목록이 필요하면 search_disclosures 로 넘어갑니다.
[Usage]
"카카오" → corp_code 획득 → 재무제표 조회(get_financials)
"삼성전자" → corp_code 획득 → 임원 현황 조회(get_periodic_report)
"'동양' 들어가는 회사 후보 보여줘" → query="동양", limit=20
"005930이 어느 회사야?" → query="005930"
[Response]
stock_code: 6-digit present = listed (common shares); empty/absent = unlisted.
count = rows returned (capped by
limit), not the total match count. 0 hits adds ahint.
[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. 우선주/ETF/ETN codes have no mapping (보통주 codes only).
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-digit 종목코드, or 8-digit corp_code |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description goes well beyond this by explaining that results are similarity-ranked (first item is not authoritative), count is capped by limit, 0 hits add a hint, stock_code presence indicates listing status, and that corp_code is a legal entity code not a ticker. No contradiction with annotations.
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 description is well-organized with clear sections ([Purpose], [Usage], [Response], [Rules]) and is front-loaded with the core purpose. Every sentence adds useful information; there is no filler or redundancy.
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 simple lookup tool with no output schema, the description fully covers input forms, response semantics (count, hint, stock_code field), candidate ranking behavior, and edge cases like unlisted companies and common-name overflow. It also positions the tool among its siblings. Nothing important 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 both parameters are clearly described in the schema. The description adds value by giving example query forms ('005930' as query), explaining how limit interacts with common-name overflow, and noting the meaning of stock_code in responses. A small improvement over schema baseline.
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 clearly states the tool's purpose: finding DART corp_code candidates by company name or stock code. It distinguishes itself from siblings by explicitly directing users to get_company_profile for industry/data location and search_disclosures for disclosure lists.
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 provides explicit when-to-use instructions ('corp_code를 모르는 기업 조회 시 이 도구를 먼저 사용합니다'), covers ambiguity cases, and names the alternative tools for different needs. The [Usage] examples further clarify concrete invocation scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachmentsARead-onlyIdempotentInspect
MyDART MCP의 get_attachments 도구는 공시의 첨부파일(HWP/PDF/DOCX/XLSX)과 형제문서를 목록·추출·이미지로 다룹니다.
[Purpose]
첨부 원본용. 본문 텍스트는 download_document 가 구조 보존이 낫습니다.
자금부정통제(「횡령 등 자금 부정위험 대응 내부통제 활동」) 붙임·경영진 운영실태보고서가 이 도구 몫입니다(mode=text=본문·표, 붙임=attachment_links[].retrieve).
스캔으로만 있는 내용(스캔 서식·도장·서명)은 mode=images 가 유일한 경로입니다.
[Usage]
정관·영업보고서·운영실태보고서 본문 → list 로 dcm_no 확보 → dcm_no, mode="text"
[Response]
format: hwpx/hwp/pdf/docx/doc/xlsx/xls/zip/html/unknown
text_quality: PDF 전용 — 타 포맷은 null(품질 문제 아니라 미해당)
[Rules]
supported:false 면 unsupported_reason·suggestion·note·retrieve·next_step 이 완성형 대체 경로다 — 인자 추측 없이 그대로 따른다.
여러 공시 연속 순회 금지 — 뷰어 대량 호출은 DART IP 차단을 부른다.
markdown 신뢰는 needs_ocr 하나가 아니라 계층으로: ① is_image_based·char_count 0=진성 스캔, images 만이 경로. ② high_pua 등 비-low_text=글자 깨짐이라 markdown 이 차 있어도 오류 가능, images 로 대조. ③ low_text 단독인데 markdown 이 실하면 markdown 이 정본(서버가 오탐 자동 기각), 빈약하면 ocr_candidate_pages 로 images. ④ needs_ocr=false 여도 image_only_pages 확인 — 도장·서명·스캔 표(자금부정통제 서식)가 그 페이지에만 이미지로 있다.
| 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.). extract: download and parse ONE attachment file (PDF/HWP/HWPX/DOCX/XLSX) into 마크다운 — when an actual file is the target, and the fallback when the 뷰어 cannot serve the body (supported:false, or a 껍데기 document whose body is just a PDF link) or when the original layout·날인 must be seen. images: return embedded images (도장·스캔본·차트 and other raster that text cannot capture) — 뷰어 원본 JPEG first (manifest.source="viewer": originals in document order, per-section eleId), or a PDF page scan when pages is given (source="pdf": decoded PNGs, largest area first, with page numbers). The two routes return different field shapes. | list |
| index | No | 0-based index, in extract mode (filename takes precedence) | |
| pages | No | Page filter for images mode (1-based, PDF-scan path only). e.g. "3", "1-5", "2,4,7-9". When given, a PDF is fetched instead of the 뷰어 JPEG and those pages are scanned (pass the value text_quality.next_step hands you, or feed text_quality's ocr_candidate_pages / image_only_pages as-is — do not hand-scan the markdown for page numbers). When unset: 뷰어 원본 JPEG first, else a scan of only the PDF's FIRST 40 pages. | |
| 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 list/extract that document's attachments. A sibling's attachments are invisible without it — always list first, then pass sibling_documents[].dcm_no. | |
| filename | No | Exact filename, in extract mode (no partial-match fallback). An EXACT match is required; on failure the error lists the available names. | |
| rcept_no | Yes | 14-digit 접수번호 (separators are stripped automatically) | |
| zip_index | No | Index of the file inside a ZIP attachment when extracting (0-based) — that inner file is the one parsed into 마크다운. If unset and the attachment is a ZIP, only the inner file list is returned. Use entries[].index verbatim (it indexes ALL inner files — do not guess). | |
| max_images | No | Max images returned in images mode (largest area first). Default 12. | |
| truncate_at | No | Max length of the extract 마크다운 (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. | |
| outline_max_items | No | Max outline(목차) entries. A 사업보고서 outline runs to thousands → default 50. 0 = omit the outline. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses rate-limit risks (DART IP block), a hierarchical markdown reliability assessment (is_image_based, char_count, high_pua, needs_ocr, ocr_candidate_pages, image_only_pages), the supported:false replacement path, and differences between viewer JPEG and PDF-scan image routes. These are substantial operational traits that annotations do not 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 description is lengthy but well-sectionalized into Purpose, Usage, Response, and Rules, with dense, relevant content. It front-loads the core purpose and then provides detailed guidance without filler, though some redundancy with schema descriptions exists. The structure makes it easy to navigate despite being long.
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?
Since there is no output schema, the description compensates by summarizing response fields (format, text_quality) and the supported:false fallback path. It also covers edge cases like scanned-only content, ZIP inner files, outline limits, and gives a trust hierarchy for markdown, making it a thorough self-contained reference.
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?
With 100% schema coverage, the input schema already documents all parameters thoroughly. The description adds workflow-level context, such as obtaining dcm_no via list, choosing mode based on content type, and file precedence in extract mode, which enriches parameter understanding beyond the schema's individual descriptions.
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 clearly states that get_attachments handles attachments (HWP/PDF/DOCX/XLSX) and sibling documents via list, extract, and image modes. It explicitly contrasts with download_document for body text, and singles out specific document types (자금부정통제, 운영실태보고서) that belong to this tool, making the purpose unambiguous and well-differentiated from 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 explicitly says download_document is better for body text, while get_attachments is for attachment originals. It also gives concrete usage examples (mode=text for 본문·표, attachment_links[].retrieve for 붙임) and warns against consecutive traversal of multiple disclosures due to IP blocking, providing clear when and when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_profileARead-onlyIdempotentInspect
MyDART MCP의 get_audit_profile 도구는 감사인·감사의견·업무수행이사에 감사보수·감사투입시간·실사수행내역·외부조회 실시여부 등 외부감사 실시내역을 한 표로 요약해 반환합니다.
[Purpose]
"누가 얼마에 감사했고, 실사는 어땠나" 같은 사실·수치 질문에 최적입니다.
강조사항은 emphasis 로 이미 정형화돼 있습니다 — 의견근거·KAM·강조 문단 원문 전문이 필요할 때만 get_audit_report.
내부회계관리제도(ICFR) 세부 판정은 get_internal_control, 계속기업 정량 점검은 get_going_concern.
조건에 맞는 회사 목록(모집단)은 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 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context beyond these: how to interpret data_available=false (not confirmed absent), audit_only=true (structural absence of fees), the need to read applicability.guidance[], and the explicit note that auditor change is not returned. It also explains response conventions like '_m' suffix and opinion domain.
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 description is long, but well-structured with [Purpose], [Usage], [Response], and [Rules] sections. The opening sentence summarizes the tool in one line, and each subsequent section provides necessary detail without redundancy. It is not minimal, but the length is justified by the complexity of the domain and the absence of an output schema.
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 tool has 4 parameters, no output schema, and a domain with many edge cases, the description covers response interpretation (fees unit, opinion domain), exceptional states (data_available=false, audit_only=true), and routing guidance (applicability.guidance, next-tool recommendations). It misses no critical aspect for a read-only summary tool and compensates well for the lack of an output schema.
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 burden on the description is lower. Nevertheless, the description adds concrete examples for corp/year, explains the effect of light=true (skips parsing, omits certain fields) in a usage example, and provides rules that clarify how parameters map to user intents. It does not add much beyond the schema's already detailed year description, but the examples and light=true clarification are useful.
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 description states the tool returns a summarized table of audit details (auditor, opinion, fees, hours, site visit, external inquiry) with a specific verb '반환합니다' and explicitly distinguishes it from sibling tools (get_audit_report for full text, get_internal_control for ICFR, get_going_concern, search_audit_findings). This makes the purpose clear and differentiated.
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 provides explicit when-to-use guidance: it is optimal for factual/numeric questions like '누가 얼마에 감사했고, 실사는 어땠나', and explicitly routes to alternatives when full text, ICFR, or going concern checks are needed. The [Usage] section gives concrete examples mapping natural language queries to parameter values, and [Rules] clarifies edge cases (not-yet-filed, unlisted companies) and when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_reportARead-onlyIdempotentInspect
MyDART MCP의 get_audit_report 도구는 감사보고서 본문을 문단 단위로 구조화해 문단별 원문 텍스트를 반환합니다 — 감사의견·감사의견근거·KAM·강조사항·기타사항·계속기업가정불확실성.
[Purpose]
감사보고서 서술 문단의 원문이 필요할 때. 보수·실사 등 정형 사실 요약은 get_audit_profile 입니다.
내부회계관리제도(ICFR) 세부와 재무제표 감사의견과의 정합 확인은 get_internal_control 이 담당합니다.
[Usage]
"LG에너지솔루션 2024 KAM 문단 전문" → corp="LG에너지솔루션", year=2024
"삼부토건 FY2024 별도 의견거절 근거 원문" → corp="삼부토건", year=2024, fs_div="OFS"
"강조사항이 잘렸어, 전체로" → corp="…", year=…, truncate_at=50000
[Response]
sections[].key: opinion / basis / going_concern / kam / emphasis / other_matter / mgmt_resp / auditor_resp … (KSA700 elements). opinion: 적정/한정/부적정/의견거절.
fs_label: 연결/별도. source_note = F 단독공시 출처, correction_note = 정정공시 채택/생략.
[Rules]
Interpret kam.count=0 together with none_declared: declared "없음" = normal; undeclared = suspect omission.
Unlisted (F 단독공시) legitimately lacks KAM·업무수행이사 paragraphs (see source_note).
재무제표·주석 FIGURES are not here — use download_document.
| 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). Aliases consolidated/separate·연결/별도 also accepted. With both, reports[] holds 2 entries — reading only the first drops an axis. | |
| 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. | |
| 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 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already mark this as read-only/idempotent/non-destructive, the description adds substantial behavioral details: response section keys, fs_label and source_note/correction_note semantics, the kam.count=0 + none_declared interpretation rule, and the unlisted-F-filing exception. It also clarifies that financial figures are intentionally excluded, which is useful non-obvious behavior. No contradiction with annotations.
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 description is longer than the minimal two-sentence ideal but is well structured with [Purpose], [Usage], [Response], and [Rules] sections. The main purpose is front-loaded, and each section contains non-redundant, actionable information. It is appropriately sized for a tool with six parameters and complex Korean audit-report semantics.
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?
The description is complete for a read-only retrieval tool with no output schema: it explains response structure, important special cases (unlisted filings, none_declared), truncation handling, and when to use alternative tools. The schema covers parameter details, so the description fills the remaining conceptual and interpretive gaps effectively.
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. The description adds value through concrete usage examples mapping requests to corp, year, fs_div, and truncate_at, and it clarifies that 'both' yields two report entries while also showing how fs_div='OFS' is used. This goes slightly beyond the schema by illustrating realistic invocation patterns.
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 description opens with a specific verb+resource: it returns audit report body text structured paragraph-by-paragraph, covering opinion, basis, KAM, emphasis, other matter, and going concern. It distinguishes itself from sibling tools by explicitly naming get_audit_profile for formal fact summaries and get_internal_control for ICFR, so the purpose is unambiguous.
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 gives explicit when-to-use guidance: narrative paragraph original text vs. formal fact summaries (get_audit_profile) vs. ICFR consistency checks (get_internal_control). It also tells the user that financial figures belong to download_document, and the [Usage] examples map natural-language requests to concrete parameter values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_profileARead-onlyIdempotentInspect
MyDART MCP의 get_company_profile 도구는 기업개황(업종·대표자·결산월·상장구분)과 데이터 위치(data_location)를 조회합니다.
[Purpose]
회사 기본 정보와, 낯선 회사(특히 비상장)에 재무·감사 도구를 부르기 전 라우팅 확인용 첫 호출.
감사인·감사의견·감사보수는 get_audit_profile, 회사 지정이 모호해 후보부터 골라야 하면 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/get_xbrl 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. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, but the description goes far beyond by explaining data_location categories (listed, listed_konex, unlisted_reporting, audit_only, etc.) and their behavioral implications. It discloses that listed_konex returns empty get_financials/get_xbrl as NORMAL, and warns that provisional=true results are tentative and one should never conclude 비외감 from no_discovery_found. No contradiction with annotations.
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 description is well-structured with clear sections: Purpose, Usage, Response, Rules. Each sentence earns its place: examples are terse, response fields are explained concisely, and rules are actionable. Despite its length, every part adds essential routing or behavioral context. There is no redundancy or filler.
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?
The tool has 2 parameters, no output schema, but meaningful routing behavior and edge cases. The description covers the response structure (data_location, corp_cls, acc_mt), the full set of data_location possible values, follow-up routing rules, and caveats about provisional queries and listed_konex behavior. It is complete for an agent to invoke this tool correctly and interpret its results in the broader MCP tool ecosystem.
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 provides 100% coverage for both parameters (corp and year) with detailed descriptions. The description adds value by providing concrete example values and explaining the year parameter's routing significance: 'year... Matters only for 비상장사... For non-December closers this year follows the 시작연도 convention shared with the audit tools...' It also introduces the 'provisional=true' concept not fully spelled out in the schema. However, since the schema does most of the heavy lifting, a 4 rather than 5 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?
The description opens with a clear statement: '기업개황(업종·대표자·결산월·상장구분)과 데이터 위치(data_location)를 조회합니다' — a specific verb (조회) and resource (company profile fields). It also explicitly distinguishes from siblings: '감사인·감사의견·감사보수는 get_audit_profile, 회사 지정이 모호해 후보부터 골라야 하면 find_corp_code.' This is more than sufficient for an agent to identify the tool's purpose.
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 explicitly states when to use this tool: first call before financial/audit tools for unfamiliar companies, especially unlisted ones. It also provides concrete usage examples ('"카카오는 뭐 하는 회사야?" → corp="카카오"') and rule-based routing to alternatives (get_audit_profile, find_corp_code). The 'Rules' section further clarifies when NOT to retry or draw conclusions, offering explicit usage boundaries.
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]
특정 이벤트 상세(single), 또는 최근 N년 자본 변동 흐름의 통합 연대기(timeline)가 필요할 때.
"누가 언제 지분을 늘리고 줄였나"는 event_types="holdings"(5%룰 대량보유·임원/주요주주 소유보고).
공시 목록 훑기는 search_disclosures, 최대주주·주식총수 등 사업보고서 시점 스냅샷은 get_periodic_report 로.
[Usage]
"카카오 최근 3년 자본 조달 흐름" → corp="카카오", mode="timeline"
"이 회사 CB 발행한 적 있어?" → corp="…", mode="single", event_type="cb_issuance"
"삼성전자 자사주 취득·처분 2020년부터" → corp="삼성전자", mode="timeline", event_types=["treasury_acquisition","treasury_disposal","treasury_trust_contract","treasury_trust_cancel"], start="2020-01-01"
[Response]
date = filing date (rcept_dt); 실제 이벤트일(이사회 결의일 등)은 raw row 필드에 있다.
지분공시 섹션은 total_count=전 기간 누적, filtered_count=기간 내 건수다(DART 가 기간을 안 받아 전량 수신 후 거른다).
[Rules]
빈 timeline ≠ 이벤트 없음 — 기본 집합은 자본거래뿐이고(그 외는 event_types 명시), sections_meta 에 엔드포인트별 오류가 있을 수 있다.
event_type_counts 는 절단 전 전체 기준(timeline 만 limit 로 잘린다).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date (YYYY-MM-DD / YYYYMMDD). Defaults to today | |
| 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 — an omitted bound is flagged as period.defaulted:true in the response | |
| event_type | No | REQUIRED in single mode. One of the 38 selectable events (36 주요사항 + 지분공시 2종) | |
| event_types | No | Manual selection for timeline mode — passing this switches mode to timeline automatically. When unset, every 자본 관련 event (capital=true) is selected; 소송·부도·회생·해외상장·지분공시 are NOT in that default set, so request them explicitly here. Group aliases are accepted too — 'capital' (자본거래 25종, the timeline default) and 'holdings' (지분공시 2종) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false, so the description adds substantial behavioral nuance beyond that: date fields represent filing date not event date, total_count is cumulative while filtered_count is period-scoped, empty timeline does not mean no events, sections_meta can carry endpoint errors, and event_type_counts are pre-truncation. No contradiction with annotations.
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?
Despite being long, the description is tightly organized with [Purpose], [Usage], [Response], and [Rules] sections. Every sentence adds operational value—examples, caveats, or count semantics—with no redundant restatement of schema fields.
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 tool's high complexity (7 params, 38 enum values, no output schema), the description is fully complete: it covers purpose, usage conditions, concrete examples, response field interpretation, error caveats, and limit behavior. The openWorldHint is also well-supported by explaining that empty timeline doesn't necessarily mean absence of events.
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%, but the description goes far beyond schema labels by explaining mode=single vs timeline semantics, event_types aliases ('capital', 'holdings'), limit truncation behavior with truncated=true, start defaulting to 3 years ago, and period.defaulted flag. The examples map natural-language requests to actual parameters.
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 description opens with a specific verb ('조회합니다') and a precise resource scope: 주요사항보고서 자본·지배구조 이벤트 36종 plus 5%룰 and 임원 지분공시. It explicitly contrasts with sibling tools search_disclosures and get_periodic_report, making the tool's unique function clear.
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 exactly when to use the tool: for a single event detail or an integrated timeline of capital changes, and also tells when not to use it (search_disclosures for browsing disclosures, get_periodic_report for snapshots). Concrete examples in [Usage] further illustrate correct invocations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financialsARead-onlyIdempotentInspect
MyDART MCP의 get_financials 도구는 매출·영업이익·순이익·자산/부채/자본 등 재무수치를 조회합니다 — 재무 질문 대부분은 이걸로 충분합니다.
[Purpose]
재무제표 숫자의 첫 선택. 계산(합산)검증·주석 XBRL·원본 파일이 필요할 때만 get_xbrl.
사업보고서 서술이 필요하면 get_periodic_report, 부실징후(계속기업) 판정은 get_going_concern.
[Usage]
"삼성전자 2025년 매출·영업이익" → corps=["삼성전자"], year=2025
"삼성전자와 SK하이닉스 실적 비교" → corps=["삼성전자","SK하이닉스"]
"LG화학 FY2024 전체 재무제표, 별도, 현금흐름표 포함" → corps=["LG화학"], year=2024, scope="full", fs_div="OFS", sj_div=["BS","IS","CIS","CF"]
[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.
[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 for audit_only/listed_konex).
| Name | Required | Description | Default |
|---|---|---|---|
| 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. | |
| corps | Yes | Array of companies. 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 a `warning` field. Compare several companies with scope=summary. A bare string or a comma list ("삼성전자,SK하이닉스") is also absorbed into an array. | |
| scope | No | summary: 주요계정, 8~10 rows (fast). full: the whole 재무제표 (BS/IS/CF/CIS/SCE), hundreds~1k rows | summary |
| 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. | |
| 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. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint, and the description adds substantial behavioral context beyond that: amounts are strings, cumulative vs quarter-alone amounts, period off-by-one traps, no_data routing semantics, scope=full single-company restriction with warning field, and fs_div auto-fallback. No contradiction with annotations.
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?
Structured with Purpose/Usage/Response/Rules sections, example queries, and compact bullet points. Dense but every line earns its place; no padding or repetition.
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 financial-data tool with no output schema, the description covers response shape (row keys, string amounts, count semantics), common data traps (cumulative vs quarterly, period off-by-one), and routing fallback. It is sufficient for an agent to select, invoke, and interpret results 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 coverage is 100%, but the description adds extensive meaning beyond the schema: half-value trap for thstrm_add_amount vs thstrm_amount, scope=full exact-1 constraint and dropped-rest warning, fs_div echoes actual basis and may auto-fallback, sj_div default includes CIS due to single-statement presentation. These nuances are not present in the input schema.
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?
Description clearly states it retrieves financial figures (매출·영업이익·순이익·자산/부채/자본 등 재무수치를 조회합니다) and explicitly positions itself as the first choice for financial questions. It distinguishes from siblings by naming get_xbrl, get_periodic_report, and get_going_concern for specific alternative use cases.
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?
Provides explicit when-to-use guidance: '재무 질문 대부분은 이걸로 충분합니다' and states to use get_xbrl only for calculations/XRBL/original files, get_periodic_report for narrative, and get_going_concern for distress. Includes concrete natural-language examples mapping to parameter values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_going_concernARead-onlyIdempotentInspect
MyDART MCP의 get_going_concern 도구는 계속기업가정 관련 위험을 정량 재무지표와 감사보고서 언급 여부의 교차로 판정합니다.
[Purpose]
"계속기업 위험 있나", 특히 "수치는 위험한데 감사인 언급이 없는" 불일치를 짚을 때.
조건별 회사 목록은 search_audit_findings.
수치만 볼 땐 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
[Rules]
NEVER read text.going_concern_mentioned null (report not secured = unknown) as false (checked, no mention).
quant_only covers TWO cases — risky figures with no mention confirmed, OR with report not secured; distinguish via going_concern_mentioned (false vs null).
grade "판정불가" is not "양호". flags null = account not secured, not false.
Response fs_div is post-fallback — a CFS request 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. | |
| refresh | No | Bypass the cache and re-collect |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by explaining that flags.consecutive_op_loss is a count (not bool), grade mapping, cross_check.code meanings, and the interpretation of null vs false for going_concern_mentioned. Also discloses fs_div fallback behavior (CFS request may return OFS). This is rich behavioral context not available in annotations.
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 description is long but well-structured with sections (Purpose, Usage, Response, Rules) and front-loaded purpose. It is thorough without being disorganized, though some repetition exists (e.g., mentioning '계속기업 위험 있나' twice). Overall it earns its length given tool 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?
Despite no output schema, the description fully explains the response structure (flags, grade, cross_check.code) and critical interpretation rules (null≠false, quant_only two cases, 판정불가≠양호). This makes the tool fully understandable and actionable without additional documentation.
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. The description adds a bit of extra context (e.g., fs_div fallback, example usages) but mostly relies on the already-detailed schema. It does not substantially enhance parameter meaning beyond what schema provides.
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?
Description clearly states the tool judges going-concern risk via the intersection of quantitative financial metrics and auditor report mentions. It names specific sibling alternatives (search_audit_findings, get_financials, get_audit_report) that serve related but distinct purposes, distinguishing it from 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?
Provides explicit when-to-use guidance ('계속기업 위험 있나', especially discrepancies), plus explicit alternatives for other tasks (search_audit_findings for company lists, get_financials for numbers, get_audit_report for original paragraphs). Includes concrete usage examples with parameter values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_internal_controlARead-onlyIdempotentInspect
MyDART MCP의 get_internal_control 도구는 '감사인'의 내부회계관리제도(ICFR) 감사/검토 보고서를 조회합니다 — 구분·의견·중요한 취약점 여부.
[Purpose]
ICFR 의견·취약점을 재무제표 감사의견과 대조할 때. 취약점 보유 회사 목록은 search_audit_findings.
자금부정통제(횡령 등 자금 부정 예방·적발)·경영진 「내부회계관리제도 운영실태보고서」는 감사인 ICFR 보고서에 없다 → get_attachments(사업보고서 rcept, mode=list→dcm_no→mode=text, 스캔은 images; rcept 없으면 search_disclosures preset='annual_report').
정형 감사 사실은 get_audit_profile, 본문 원문은 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~ 의무, FY2024 선택)·시정계획은 경영진 운영실태보고서 소관 — see management_operation_report.steps (applicable=false = F 단독공시라 보고서 자체가 없음).
| 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. | |
| refresh | No | Bypass the cache and re-collect |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld, idempotent, non-destructive), the description discloses critical behavioral subtleties: reports is an array with up to two entries, present=false usually means out-of-scope rather than missing data, and a review's 의견거절 must not be conflated with an audit's. It also notes ICFR fallback behavior for 별도 and that 자금부정통제 is not part of the auditor's report, adding substantial context beyond what 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 description is longer than typical but well-structured with [Purpose], [Usage], [Response], and [Rules] headers. Every sentence adds value—covering use cases, response semantics, and caveats—and the opening sentence is a clear, front-loaded summary. Minor verbosity exists (e.g., detailed year guidance is in the schema), but the overall organization keeps it scannable.
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 tool with no output schema, the description compensates thoroughly: it explains the opinion domain, the array structure, the present=false convention, and the review/audit distinction. It also addresses limitations (자금부정통제, CFS applicability) and cross-references related tools, giving the agent everything needed to use the tool correctly and interpret results.
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. The description adds usage examples mapping params to queries and clarifies fs_div semantics (e.g., '연결 기준만' → fs_div="CFS"), but the schema already thoroughly explains year and fs_div meanings. No genuinely new parameter semantics are introduced.
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 description opens with a clear statement: "get_internal_control 도구는 '감사인'의 내부회계관리제도(ICFR) 감사/검토 보고서를 조회합니다 — 구분·의견·중요한 취약점 여부." This specifies the exact resource (auditor's ICFR reports) and the data returned (opinion, vulnerabilities). It also explicitly contrasts with sibling tools such as search_audit_findings, get_audit_profile, and get_audit_report, making the tool's unique purpose unmistakable.
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 explicitly states when to use this tool ('ICFR 의견·취약점을 재무제표 감사의견과 대조할 때') and when not to, directing users to get_attachments and search_disclosures for 자금부정통제 and management reports, and to get_audit_profile/get_audit_report for other audit facts. The [Usage] section provides concrete query-to-parameter mappings (e.g., '카카오페이 2024 내부회계 의견' → corp="카카오페이", year=2024).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_periodic_reportARead-onlyIdempotentInspect
MyDART MCP의 get_periodic_report 도구는 사업보고서 세부 섹션 28종을 정형 데이터로 조회합니다 — 한 섹션 또는 여러 섹션 동시.
[Purpose]
배당·자기주식·최대주주·소액주주·임원보수·회계감사인·회사채 미상환 등 섹션 표가 필요할 때.
지배구조 스냅샷·임원 보수 전반은 묶음 별칭 한 번으로(shareholders·executive_compensation).
재무제표 본체 수치는 get_financials 로. auditor_opinion 은 의견 한 단어뿐이라 KAM·내부회계·강조사항은 get_audit_profile / get_audit_report 로 갑니다.
[Usage]
"삼성전자 2025년 배당 내역" → corp="삼성전자", year=2025, report_type="dividends"
"카카오 최대주주가 누구야" → corp="카카오", report_type="shareholders" (year 생략 = 최신)
"LG전자 임원 보수 전부" → corp="LG전자", report_type="executive_compensation"
[Response]
Amounts are STRINGS. Section status: 000 성공 / 013 무자료.
periods legend maps 당기/전기/전전기 → fiscal years (기수 컬럼이 있는 섹션만).
[Rules]
비12월 결산이면 fiscal_year_note 를 그대로 인용할 것 — 감사 도구와 1년 어긋난다.
ARRAY 는 요소마다 status 가 다르다(성공·013·error 혼재) — 요소별로 확인한다. 전 섹션이 013 이면 { mode:"no_data", … } 복구 라우팅으로 바뀐다.
상장사의 [013] 은 대개 실패가 아니라 "정당한 부재"다(배당·자기주식 없음, 개인별 보수는 해당자 없음).
Cite 당기/전기 only after checking the periods legend.
| 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). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/idempotent/destructive hints. The description adds substantial behavioral context: amounts are strings, status codes 000/013, periods legend mapping, per-element status in arrays, no_data routing, and the fact that 013 for listed companies usually means legitimate absence rather than failure. This goes well beyond the structured fields.
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 description is well-structured with [Purpose], [Usage], [Response], and [Rules] sections, front-loaded with a concise summary. Every bullet contributes non-obvious guidance (e.g., 013 semantics, fiscal year alignment rules, array mixing) and the length is justified by the tool's 28-section 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?
Even without an output schema, the description explains critical return semantics: string amounts, section status codes, periods legend, array element status, no_data routing, and citation rules. Combined with comprehensive sibling references and a rich input schema, the description fully prepares an agent to select and invoke the tool 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 coverage is 100%, so baseline is 3. The description adds concrete usage examples (corp='삼성전자', report_type='dividends') and reinforces the meaning of omitted year and group aliases, but most semantic detail is already present in the schema's parameter descriptions. The examples add clarity without introducing new parameter-level facts.
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 description opens with a specific statement: it queries 28 types of business report detail sections as structured data, one or multiple sections at once. It also explicitly routes financial statement figures to get_financials and auditor details to get_audit_profile/get_audit_report, clearly distinguishing it from 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 [Purpose] section states exactly when to use this tool (for section tables like dividends, treasury stock, shareholders) and when to use alternatives (get_financials for financial statements, get_audit_profile/get_audit_report for auditor details). Concrete example queries in [Usage] show how to map user intents to parameters, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_statsARead-onlyIdempotentInspect
MyDART MCP의 get_usage_stats 도구는 도구 사용량 집계를 반환합니다 — 어떤 도구가 얼마나 쓰였는지.
[Purpose]
도구별 호출수·인기 순위·응답시간·에러율·캐시 적중과 일별 추이를 볼 때 쓰세요.
[Usage]
"사용량 통계 보여줘" → {} (default 30 days)
"최근 90일 도구별 순위" → days=90
"전체 기간 누적" → days=0
[Response]
Common: { period, overview:{total_calls, unique_users, error_rate}, by_tool:[{tool, calls, errors, avg_ms, cache_hits, cache_hit_rate, share_pct}], by_day[] }
Operator identity (local stdio, or the HTTP key matching the server operator's) additionally gets by_company·users·viewer — decided by requester identity, NOT selectable by parameter.
[Rules]
public responses have no by_company / per-user detail — do not promise them to general callers.
Local stdio may show total_calls>0 with unique_users=0 (single local user — not a contradiction).
error_rate is a 0~1 decimal; share_pct is a percentage — different units.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Trailing window in days. 0 = the entire retained period. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses critical behaviors: identity-dependent response differences (public vs operator), the local stdio quirk where total_calls can be >0 while unique_users=0, and the unit distinction between error_rate (0-1 decimal) and share_pct (percentage). This level of detail is highly valuable for an agent.
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 description is well-organized with clear [Purpose], [Usage], [Response], and [Rules] sections. Each section adds distinct value—purpose, examples, response shape, and caveats—without redundancy. The length is justified by the complexity of the identity-dependent behavior and unit conventions.
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 tool has no output schema and involves identity-dependent response variations, the description thoroughly covers the response structure (period, overview, by_tool, by_day) and explicitly warns about public vs operator data restrictions. It also clarifies edge cases (local stdio unique_users=0) and unit formats, making it complete for an agent to invoke and interpret results.
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% for the single 'days' parameter, so the baseline is 3. The description adds meaning by explaining the semantics of days=0 as 'entire retained period' and providing concrete examples (default 30, 90-day rank), which enhances understanding beyond the schema's simple 'Trailing window in days'.
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 description clearly states the tool returns tool usage aggregation ('도구 사용량 집계를 반환합니다') and specifies the metrics: call counts, popularity rankings, response times, error rates, cache hits, and daily trends. This distinguishes it from sibling tools which focus on documents and financial data, making the purpose unambiguous.
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 provides concrete usage examples with parameter values ('최근 90일 도구별 순위' → days=90, '전체 기간 누적' → days=0) and notes the default window. It also explains when the tool is appropriate (viewing usage stats) but does not explicitly mention alternatives or exclusions, which is acceptable given the unique functionality.
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]
평가기준일 시세·β 검산, 자본비용(WACC) 산출, 상대가치 피어 비교에 씁니다.
근거 제시가 목적이고 채택은 평가자 판단 — 전 구성요소 오버라이드 가능.
재무수치는 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%); close = 무수정주가, flt_rt = 등락률 %.
wacc_pct is null when 신용등급 미공시 while 차입 exists — nothing is assumed.
[Rules]
Compute market returns from flt_rt, never by differencing close (breaks at 액면분할·병합).
aggregates n differs per metric (EBITDA often missing) — never quote a mean without n.
peers is a KSIC candidate list the 평가자 curates; too few peers relax the prefix 5→4→3 — prefix_depth_used shows 업종 동질성 dilution.
Cite the response's source·as_of verbatim (조서 정합) — 금투협 시가평가·한공회 가이던스·ECOS·금융위 시세.
ALWAYS read notes[] — 강등·폴백·주의 accumulate there.
| Name | Required | Description | Default |
|---|---|---|---|
| kd | No | [wacc] Kd given directly (annual %, 세전) — overrides credit_rating·kd_tenor | |
| to | No | [market] End date (default: latest 적재일) | |
| yq | No | [wacc·peers] 평가기준 분기 (e.g. 2026Q2 — lowercase q accepted). Default: latest snapshot | |
| 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 | |
| from | No | [market] Start date YYYYMMDD·YYYY-MM-DD (default: one year before `to`) | |
| 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) | |
| 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) | |
| 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 (시가). If omitted, the snapshot's 실측 value is used | |
| 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) | |
| include_pref | No | [wacc] Add 우선주 시총 into E (default true) | |
| credit_rating | No | [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 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavioral traits far beyond the readOnly/idempotent annotations: all components can be overridden, wacc_pct is null when no credit rating is disclosed rather than assumed, n varies per metric (EBITDA often missing), peers is a curated candidate list with prefix depth dilution, and notes[] must always be read. These are material operational details that affect how the agent interprets results.
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 description is longer than average, but every section (Purpose, Usage, Response, Rules) carries essential information for a tool with 24 parameters and 3 modes. It is front-loaded with the core statement, uses headers, and the Rules section is a dense checklist of non-obvious operational requirements.
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?
Even without an output schema, the description completes the picture by specifying response semantics (units, null behavior, source/as_of verbatim citation, notes accumulation) and edge-case handling (peer count relaxation, argument errors). It is sufficient for an agent to select, invoke, and interpret this complex 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 covers 100% of 24 parameters with rich descriptions, so the baseline is 3. The description adds value by clarifying unit conventions (*_pct vs decimals for mrp·srp·tax_rate), the close vs flt_rt distinction, and the warning never to compute returns by differencing close. That is meaningful semantic guidance beyond the schema.
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 description opens with a clear verb+resource statement: 'get_valuation_data 도구는 가치평가 데이터(시장 시계열·WACC·유사회사)를 kind 로 골라 조회합니다.' It then enumerates three concrete use cases (시세·β 검산, WACC 산출, 피어 비교) and explicitly distinguishes itself from get_financials and get_company_profile.
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?
Provides explicit guidance on when to use: '재무수치는 get_financials, 업종(KSIC)·시장구분은 get_company_profile' and includes two worked usage examples mapping natural-language requests to kind and corp arguments. This gives the agent clear decision rules versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xbrlARead-onlyIdempotentInspect
MyDART MCP의 get_xbrl 도구는 공시 첨부 XBRL 을 파싱해 재무제표를 만들고 계산(합산) 검증을 수행합니다.
[Purpose]
합산 검증·XBRL 원본 파일이 필요할 때. 단순 재무수치는 get_financials(scope=full)가 더 넓고 빠릅니다.
[Usage]
"이 공시 XBRL 로 재무제표 뽑고 합산 검증까지" → rcept_no="20260310002820"
"별도 기준 재무상태표만" → rcept_no="…", fs_div="OFS", sections=["BS"]
"XBRL 원본 파일 받아줘" → rcept_no="…", format="raw" (local only)
[Response]
Generated tables are BS/IS/CF ONLY — CIS·SCE unsupported (use get_financials scope=full).
[Rules]
validations_checked=0 means "NOTHING was checked", not "all sums match" — read it together with the (empty) validations array.
fs_div_auto=true only means auto-determined — true whenever fs_div was omitted, even with no switch; an actual CFS→OFS switch is signaled by basis_note presence.
주석 XBRL is not parsed — format=raw + open the files (local only), or read the 주석 body with download_document.
no_data is not an error — 코넥스·구공시 filings have no XBRL; follow next_step (download_document).
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | markdown_full (default): every account in the taxonomy via the presentation linkbase + 계산 검증. markdown: a ~50-tag whitelist summary. raw: unpacks the original XBRL files on the server and returns their paths — local (stdio) ONLY; a remote HTTP client cannot read those files and gets a note+next_step instead. | markdown_full |
| fs_div | No | markdown/markdown_full only: 연결(CFS)/별도(OFS). **Automatic when unset** — 연결 is tried first and, if it carries no facts, it switches to 별도 (a company with no 종속회사). The fs_div in the response is the basis ACTUALLY used, not the requested one. Aliases consolidated/separate·연결/별도 also accepted. | |
| report | No | Report type | annual |
| out_dir | No | format="raw" only: output directory (defaults to the server's standard location) | |
| rcept_no | Yes | 14-digit 접수번호 (separators are stripped automatically) | |
| sections | No | markdown/markdown_full only: which 재무제표 to generate |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral quirks beyond annotations: validations_checked=0 means nothing was checked, fs_div_auto semantics, 주석 XBRL not parsed, and no_data is not an error. These are not inferable from annotations and save the agent from misinterpreting responses.
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 description is well-structured with clear sections (Purpose, Usage, Response, Rules) and front-loaded with the core function. No filler; every sentence carries meaningful guidance for a complex tool.
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 covers response semantics, error conditions, and fallback paths. It explains limitations (CIS/SCE unsupported), raw file access only in local mode, and directs to sibling tools for unsupported cases.
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%, so baseline is 3. The description adds usage examples that illustrate param combinations (fs_div='OFS', sections=['BS'], format='raw') but doesn't add new per-parameter semantics beyond what the schema already provides.
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 description starts with a clear verb-object statement: parses XBRL attached to disclosures, builds financial statements, and performs aggregation validation. It explicitly contrasts with get_financials (wider and faster for simple figures) and states the BS/IS/CF-only limitation, distinguishing it from 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?
Explicit when-to-use and when-not-to-use guidance: says use when you need 합산 검증 or raw XBRL, but for simple figures use get_financials(scope=full). Usage examples provide concrete parameter configurations and mention download_document for non-XBRL parts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_audit_findingsARead-onlyIdempotentInspect
MyDART MCP의 search_audit_findings 도구는 회사를 지정하지 않고 감사보고서 조건으로 상장사 목록을 찾습니다.
[Purpose]
"FY2024 의견거절 회사"·"내부회계 취약점 목록"·"○○회계법인 감사 회사" 류 목록·집계 질문용.
개별 회사 상세는 get_audit_profile / get_internal_control, 본문 전문은 get_audit_report.
[Usage]
"FY2024 코스피 의견거절 회사" → year=2024, market="kospi", opinion="disclaimer"
"KAM 의무인데 0건·무선언(누락 의심)" → year=2024, kam=false, kam_required=true, kam_none_declared=false
[Response]
Output market Y=코스피/K=코스닥/N=코넥스; output fs_div is KOREAN "연결"/"별도".
[Rules]
READ coverage.note FIRST — an empty result over a non-ingested scope means "not seen", never "does not exist".
fs_div=both(default) → ≤2 rows/company: row count ≠ company count (dedupe by corp_code).
breakdown = population baseline in the year/market/fs_div scope, ignoring ONLY finding filters (opinion·kam·icfr·auditor 등) — not scope ones; ≠ count.
ICFR undetected rows:
noteONLY on 연결(CFS) — "legitimately absent (<2조)" vs "expected-audit-but-missing"; 별도(OFS) carries expected_type (or 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). | |
| limit | No | Cap on companies returned. When the list is cut here, truncated=true while count still reports the full row count | |
| fs_div | No | 재무제표 구분. 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. | |
| market | No | 시장구분. Default all = every 상장사 (유가 kospi·코스닥 kosdaq·코넥스 konex are all loaded). 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 KAM disclosure was mandatory by 규모·연도·시장 (적용시기 rules). kam=false & kam_required=true & kam_none_declared=false = suspected omission | |
| 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 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, but the description adds substantial behavioral context: empty results over non-ingested scopes mean 'not seen' rather than 'does not exist', fs_div=both yields up to 2 rows per company requiring corp_code deduplication, breakdown is a population baseline that ignores only finding filters, and ICFR note placement rules. These go far beyond the annotation hints and significantly improve safe usage.
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 description is lengthy but well-structured with [Purpose], [Usage], [Response], and [Rules] sections. Every sentence carries significant information for an 18-parameter tool, though a slightly more compact presentation might be possible. It earns its length through high information density.
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?
Despite lacking an output schema, the description covers response enums (market Y/K/N, fs_div KOREAN values), empty-result semantics, deduplication requirements, breakdown interpretation, and ICFR edge cases. It provides a self-sufficient reference for an 18-parameter tool with no structured output documentation.
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. The description compensates with group-level semantics not present in individual parameter docs: row count vs company count under fs_div=both, breakdown filter semantics, and alias acceptance (한글 values). This adds meaningful meaning beyond the schema.
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 description opens by stating the tool 'finds listed companies by audit report conditions without specifying a company' (회사를 지정하지 않고 감사보고서 조건으로 상장사 목록을 찾습니다). It also explicitly distinguishes itself from sibling tools by noting that individual company details belong to get_audit_profile / get_internal_control and full text to get_audit_report. This is a specific verb+resource with clear sibling differentiation.
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 concrete query-to-parameter mappings (e.g., 'FY2024 코스피 의견거절 회사' → year=2024, market='kospi', opinion='disclaimer') and explicitly states the tool is for list/aggregation questions, while individual company details are the domain of other tools. This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_disclosuresARead-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"
[Response]
corp_cls: Y=코스피, K=코스닥, N=코넥스, E=기타(비상장).
report_nm [기재정정]/[첨부정정]/[첨부추가] prefix = 정정공시.
[Rules]
Always pass corp when the question names a company — a corp-less batch sweeps every company in 90-day chunks; with corp it is 1 request (152× measured).
Batch counters nest: total_available ≥ total_fetched ≥ matched ≥ returned; matched > returned = cut by limit, incomplete=true = partial collection (see incomplete_note).
early_stopped:true = limit filled, rest unfetched — matched is a lower bound, not the period's total.
Preset batch drops 정정공시 by default; page mode and 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 90-day chunks and sweeps every company, so DART requests grow to tens~150 and it takes tens of seconds. With corp the split disappears and the same query finishes in 1 request and a few hundred ms (152× measured). | |
| 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/audit/other/fund/abs/exchange/ftc | |
| 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), so any field outside those 7 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 | 22 presets: treasury_buy/sell/trust · cb/bw/eb_issue · rights_offering/bonus_issue/capital_reduction · merger/split/stock_exchange · business_transfer/acquisition · large_holding_5pct · annual_report/half_report/quarterly_report · audit_report · correction_all · insolvency · litigation. Setting one applies kind and a keyword filter automatically and collects every page in parallel. | |
| 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. | |
| 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 Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description discloses critical batch behavior: counters nesting (total_available ≥ total_fetched ≥ matched ≥ returned), early_stopped lower-bound semantics, and preset mode dropping 정정공시 by default. It also reveals performance characteristics ('1 request (152× measured)') and the meaning of corp_cls codes, giving the agent a clear model of execution side effects.
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 description is long but well-structured with clear sections ([Purpose], [Usage], [Response], [Rules]). It front-loads the primary purpose and examples. While some performance details repeat the schema's corp parameter description, the overall format makes dense information easily scannable and every section earns its place.
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 tool with 13 parameters and no output schema, the description provides a thorough behavioral contract: response field meanings (corp_cls, report_nm prefixes), mode-dependent shapes, counter relationships, and early_stopped implications. It also covers parameter selection guidance (when to use days vs start/end, preset vs all_pages) making it sufficiently complete for correct invocation.
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?
Even though schema coverage is 100%, the description adds essential meaning beyond parameter comments. The [Rules] section clarifies how limit interacts with matched/returned cutoffs and that early_stopped means matched is a lower bound. It explains the difference between page mode and batch mode row shapes, and that final_only drops 구본 when a 정정 exists, which is not fully captured in the schema.
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 description clearly states the tool's purpose: 'search_disclosures 도구는 DART 공시 목록에서 접수번호(rcept_no)를 찾습니다' and identifies it as the entry point for download_document/get_attachments. It differentiates from siblings by explicitly pointing to get_periodic_report for structured business report data and find_corp_code for entity disambiguation.
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 gives explicit when-to-use guidance: '회사·기간·공시유형으로 공시를 찾을 때' and when-not-to-use: '사업보고서 섹션의 정형 데이터는 get_periodic_report'. It also provides concrete usage examples for '삼성전자 최근 한 달 공시' and '작년 유상증자 결정 회사 전부', plus a rule to use find_corp_code when company names overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityDmaintenanceEnables AI-powered analysis of Korean stock market data and corporate disclosures using official DART and KRX APIs.208ISC
- AlicenseAqualityCmaintenanceProvides tools for discovering, downloading, parsing, and searching Korean DART financial reports, enabling AI assistants to access Open DART data through structured tools.6MIT
- 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.1524990MIT
- Alicense-qualityDmaintenanceAnalyzes corporate financial information using Korea's DART API, supporting financial statements, ratios, news sentiment, and portfolio optimization.MIT