MyDART

Powerful OpenDART API-based Korean corporate disclosure tools for accounting professionals

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
96%
Naming quality
100%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringin get_attachments

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~18,953Tokens (tool definitions)
~6.8 KBTypical response size
Significant attention impact (14.81% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mydart": {
      "url": "https://mydart.eocpa.kr/mcp"
    }
  }
}

Remote endpoints

https://mydart.eocpa.kr/mcpstreamable-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢find_corp_code(query, limit)

MyDART MCP의 find_corp_code 도구는 회사명·종목코드로 DART 법인 식별자(corp_code)의 후보를 확인합니다. [Purpose] - IMPORTANT: first call when a company's corp_code is unknown. - Also to disambiguate same-named companies. - ID resolution only — 업종·data location: get_company_profile; disclosure listings: search_disclosures. [Usage] 1. "카카오" → corp_code 획득 → 재무제표 조회(get_financials) 2. "삼성전자" → corp_code 획득 → 임원 현황 조회(get_periodic_report) 3. "'동양' 들어가는 회사 후보 보여줘" → query="동양", limit=20 4. "005930이 어느 회사야?" → query="005930" [Response] - stock_code: 보통주 code (kept after 상장폐지·합병); empty = 비상장. - count = rows returned (capped by `limit`), not the total match count. 0 hits adds `notes`. [Rules] - `results` is a similarity-ranked candidate array — do not assume the first item is the answer. - corp_code identifies the DART LEGAL ENTITY CODE, not the listing ticker. 우선주 codes map to the 보통주 issuer; ETF/ETN codes have no mapping. - Common names may overflow the default `limit` — raise it when candidates look truncated.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "One 회사명 (한/영), 6-char 종목코드 (005930·0126Z0) or 8-digit corp_code"
    },
    "limit": {
      "default": 10,
      "description": "Max candidates returned",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢search_disclosures(corp, start, end, days, kind, ...)

MyDART MCP의 search_disclosures 도구는 DART 공시 목록에서 접수번호(rcept_no)를 찾습니다 — download_document·get_attachments 진입점. [Purpose] - 사업보고서 섹션 데이터는 get_periodic_report, 동명 회사는 find_corp_code 로 corp_code 확정. [Usage] 1. "삼성전자 최근 한 달 공시" → corp="삼성전자", days=30 2. "작년 유상증자 결정 전부" → preset="rights_offering", start="2025-01-01", end="2025-12-31" 3. "CB 발행만(매도·만기전취득 제외)" → preset="cb_issuance" (CB 관련 전부는 "cb") [Response] - corp_cls: Y=코스피, K=코스닥, N=코넥스, E=기타(비상장). - report_nm [기재정정]/[첨부정정]/[첨부추가] prefix = 정정공시; [발행조건확정]=정정본(kept), [정정제출요구]=원본. [Rules] - **Always pass corp when a company is named** — corp-less searches split the period (batch: by month), request budget 60; with corp: 1 request. - Counters nest: total_available ≥ total_fetched ≥ matched ≥ returned; matched > returned = cut by limit, incomplete=true = partial (see incomplete_note). collected_periods = the **only** ranges queried; counters scope to them, the rest is unchecked, not zero. - Preset batch drops 정정공시; page mode·bare all_pages keep them.

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "description": "회사명/종목코드/corp_code. Omit = all companies; a batch then splits the period by month, spends up to 60 DART requests (incomplete=true when hit) and can take tens of seconds. With corp: 1 request, a few hundred ms.",
      "type": "string"
    },
    "start": {
      "description": "Start date YYYY-MM-DD. Omitted = `days` back from today; set it for older filings.",
      "type": "string"
    },
    "end": {
      "description": "End date (default today)",
      "type": "string"
    },
    "days": {
      "description": "Trailing N days from today, used when start is omitted; out-of-range values clamp. Default by preset: 사업·감사 460 / 반기 280 / 분기 180 / 수시·일반 90. Longer windows: start/end.",
      "type": "integer",
      "minimum": 1,
      "maximum": 730
    },
    "kind": {
      "description": "공시유형; omit = all types. Enum order = DART pblntf_ty A~J; that letter or the Korean name (정기공시…) also works.",
      "type": "string",
      "enum": [
        "periodic",
        "major",
        "issuance",
        "holdings",
        "other",
        "audit",
        "fund",
        "abs",
        "exchange",
        "ftc"
      ]
    },
    "detail": {
      "description": "공시상세유형 (DART pblntf_detail_ty), narrower than kind: A001 사업보고서 · A002 반기 · A003 분기 · B001 주요사항보고서 · F001 감사보고서 · F002 연결감사보고서 … Not with preset.",
      "type": "string",
      "pattern": "^[A-J]\\d{3}$"
    },
    "market": {
      "description": "법인구분 (DART corp_cls Y·K·N·E): kospi · kosdaq · konex · unlisted (기타). Omit or all = every market.",
      "type": "string",
      "enum": [
        "all",
        "kospi",
        "kosdaq",
        "konex",
        "unlisted"
      ]
    },
    "preset": {
      "description": "Batch filter; sets kind and collects every page. 주요사항보고 keys match the EXACT DART 보고 사유 (never a title substring) — one key per 사유 (cb_issuance · cb_treasury_resale …); group aliases capital_change · cb · bw · cps · bond_issuance · treasury · treasury_trust · restructuring · asset_deal · asset_transfer_etc · guarantee_debt · insolvency · overseas union several. large_holding_5pct = all 지분공시.",
      "type": "string",
      "enum": [
        "capital_change",
        "cb",
        "bw",
        "cps",
        "bond_issuance",
        "treasury",
        "treasury_trust",
        "restructuring",
        "asset_deal",
        "asset_transfer_etc",
        "guarantee_debt",
        "insolvency",
        "overseas",
        "rights_offering",
        "bonus_issue",
        "rights_bonus_combo",
        "capital_reduction",
        "cb_issuance",
        "cb_treasury_resale",
        "cb_early_acquisition",
        "cb_call_designation",
        "cb_call_exercise_third_party",
        "bw_issuance",
        "bw_treasury_resale",
        "bw_early_acquisition",
        "bw_call_designation",
        "bw_call_exercise_third_party",
        "cps_call_designation",
        "cps_call_exercise_third_party",
        "eb_issuance",
        "cocobond_issuance",
        "hybrid_capital_issuance",
        "treasury_acquisition",
        "treasury_disposal",
        "treasury_trust_contract",
        "treasury_trust_cancel",
        "treasury_trust_extension",
        "company_merger",
        "company_split",
        "company_split_merger",
        "stock_exchange",
        "other_corp_stock_acquisition",
        "other_corp_stock_transfer",
        "tangible_asset_acquisition",
        "tangible_asset_transfer",
        "noncurrent_asset_acquisition",
        "noncurrent_asset_disposal",
        "business_acquisition",
        "business_transfer",
        "business_deal_legacy",
        "asset_deal_legacy",
        "business_lease_delegation",
        "business_lease_delegation_change",
        "asset_transfer_other",
        "putback_option_contract",
        "bond_with_stock_right_acquisition",
        "bond_with_stock_right_transfer",
        "guarantee_for_others",
        "collateral_for_others",
        "debt_assumption",
        "debt_forgiveness_granted",
        "debt_forgiveness_received",
        "donation",
        "donation_received",
        "default_occurrence",
        "business_suspension",
        "rehabilitation_filing",
        "rehabilitation_commencement",
        "rehabilitation_discontinuance",
        "dissolution_cause",
        "bank_management_start",
        "bank_management_stop",
        "bank_management_end",
        "litigation",
        "overseas_listing_decision",
        "overseas_listing",
        "overseas_delisting_decision",
        "overseas_delisting",
        "foreign_tender_offer",
        "foreign_trading_halt",
        "large_holding_5pct",
        "annual_report",
        "half_report",
        "quarterly_report",
        "audit_report",
        "correction_all"
      ]
    },
    "final_only": {
      "default": false,
      "description": "One latest version per event: 원본 replaced by its latest 정정본 (정정공시 NOT excluded) — a duplicate-free set. Windowed by each event's LATEST version date: filed in window but corrected after end = absent.",
      "type": "boolean"
    },
    "include_corrections": {
      "default": false,
      "description": "Include 정정공시 ([기재정정] etc.) in preset batch; off avoids 원본+정정 double count. correction_all forces true; ignored with final_only. Page mode and bare all_pages always include them. Latest-only: final_only.",
      "type": "boolean"
    },
    "all_pages": {
      "default": false,
      "description": "Batch-collect the whole period without a preset (same set as page mode, 정정공시 included); limit replaces page/size.",
      "type": "boolean"
    },
    "page": {
      "default": 1,
      "description": "Page number (page mode = no preset, all_pages=false). Page mode returns raw DART rows; batch rows drop stock_code·rm and add event (주요사항), corrected (= a later 정정 exists), withdrawn.",
      "type": "integer",
      "minimum": 1
    },
    "size": {
      "default": 20,
      "description": "Page size (page mode)",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "limit": {
      "default": 500,
      "description": "Max rows returned in batch mode (preset or all_pages)",
      "type": "integer",
      "minimum": 1,
      "maximum": 3000
    },
    "concurrency": {
      "default": 5,
      "description": "Collector workers. A server-wide cap sets real concurrency, so raising this rarely helps — to cut latency set corp, narrow the period or lower limit.",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_company_profile(corp, year)

MyDART MCP의 get_company_profile 도구는 기업개황(업종·대표자·결산월·상장구분)과 데이터 위치(data_location)를 조회합니다. [Purpose] - Basics + routing check before 재무·감사 calls on unfamiliar (esp. 비상장) companies. - 감사인·감사의견·감사보수: get_audit_profile; name ambiguity: find_corp_code. [Usage] 1. "카카오는 뭐 하는 회사야?" → corp="카카오" 2. "교보생명 FY2024 재무는 어디서 봐?" → corp="교보생명", year=2024 3. "종목코드 068270 기업 개황" → corp="068270" [Response] - data_location.filing_tier: listed(financials=JSON API) / listed_konex(NOT in structured financial APIs — financials live in 사업보고서 원문) / unlisted_reporting / audit_only(financials+notes live in 감사보고서 F 단독공시 원문) / no_disclosure_found / unknown - company.corp_cls: Y=코스피/K=코스닥/N=코넥스/E=기타(비상장). acc_mt = 결산월. [Rules] - Route follow-up calls by data_location: audit_only → get_financials returns [013], open f_separate_rcept via download_document instead. listed_konex → empty get_financials is NORMAL, do not retry. - provisional=true (year omitted) is tentative — never conclude 비외감 from no_disclosure_found.

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "type": "string",
      "minLength": 1,
      "description": "회사명/종목코드/corp_code"
    },
    "year": {
      "description": "회계연도 for judging applicability.data_location. Omitted = latest (provisional). Matters for 비상장사·코넥스 (market as of that year); 코스피·코스닥 = listed, no probe. 비12월 결산: 결산기 시작연도 (same as audit tools); get_financials etc. call the same period year+1 (see fiscal_year_note).",
      "type": "integer",
      "minimum": 2015
    }
  },
  "required": [
    "corp"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_financials(corp, rcept_no, year, report, scope, ...)

MyDART MCP의 get_financials 도구는 매출·영업이익·순이익·자산/부채/자본 등 재무수치를 조회합니다 — 재무 질문 대부분은 이걸로 충분합니다. [Purpose] - 재무제표 figures start here. corp+year = LATEST filing (정정 반영); rcept_no = that filing AS FILED (재작성 전후 대조·합산 검증 — 구 get_xbrl). - 사업보고서 prose: download_document; 부실징후(계속기업): get_going_concern. [Usage] 1. "삼성전자 2025년 매출·영업이익" → corp="삼성전자", year=2025 2. "삼성전자와 SK하이닉스 실적 비교" → corp=["삼성전자","SK하이닉스"] 3. "이 공시본 그대로 전체" → rcept_no="…", sj_div=["BS","IS","CIS","CF","SCE"] [Response] - Row keys: sj_div, account_nm, thstrm_amount(당기)/frmtrm_*(전기)/ bfefrmtrm_*(전전기)/thstrm_add_amount(누계). Amounts are STRINGS. - full: total_count=pre-filter, count=post-filter. rcept_no adds validations. [Rules] - Quarterly/half IS·CIS: CUMULATIVE = thstrm_add_amount, thstrm_amount = that quarter alone; CF thstrm_amount is already YTD; BS: thstrm_amount only (see period_basis). - Cross-check the periods legend (전기/당기 off-by-one) and year_defaulted. - no_data is routing, not an error — follow next_step.

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "description": "회사명·종목코드·corp_code — string or array (comma list ok). scope=summary: 1 = single, 2+ = comparison (first 200 queried). scope=full: 1 only — extras dropped with a note. Unresolved entries dropped with a note; error only if none resolve. Omit with rcept_no.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        }
      ]
    },
    "rcept_no": {
      "description": "사업보고서 접수번호 → that filing AS FILED (later 정정 not reflected), plus 합산 검증 (validations). 분·반기 rcept → no_data; use corp+report. Combine with fs_div·sj_div; omit corp·year·scope.",
      "type": "string",
      "pattern": "^\\d{14}$"
    },
    "year": {
      "description": "결산 사업연도 (회계연도, not the filing year) — one per call; annual rows also carry 전기·전전기. Omitted → latest published 사업연도 by 결산월·report (year_defaulted=true).",
      "type": "integer",
      "minimum": 2015
    },
    "report": {
      "default": "annual",
      "description": "1Q·반기·3Q·연차",
      "type": "string",
      "enum": [
        "q1",
        "half",
        "q3",
        "annual"
      ]
    },
    "scope": {
      "description": "summary (default): 주요계정 ~14 per basis (자산·부채 유동/비유동/총계, 자본금·이익잉여금·자본총계, 매출액·영업이익·법인세차감전 순이익·당기순이익·총포괄손익); 연결·별도 together ≈ 28 rows per company (별도-only 14; 금융업 +α). full: 전체 재무제표 filtered by sj_div, hundreds~1k rows.",
      "type": "string",
      "enum": [
        "summary",
        "full"
      ]
    },
    "fs_div": {
      "description": "scope=full·rcept_no: 연결(CFS, default)/별도(OFS). CFS without data falls back to OFS (fs_div_note) — response fs_div = basis used. Ignored by summary (basis per row).",
      "type": "string",
      "enum": [
        "CFS",
        "OFS"
      ]
    },
    "sj_div": {
      "description": "scope=full·rcept_no: 재무제표 to include — BS=재무상태표, IS=손익계산서, CIS=포괄손익계산서, CF=현금흐름표, SCE=자본변동표. Default BS+IS+CIS (단일 포괄손익계산서 companies put 손익 in CIS only); CF·SCE only when listed. String or comma list ok.",
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "BS",
          "IS",
          "CF",
          "CIS",
          "SCE"
        ]
      }
    },
    "format": {
      "description": "Unsupported — any value is rejected; omit. Tables come as items[].",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢download_document(rcept_no, format, doc_index, role, sections, ...)

MyDART MCP의 download_document 도구는 공시 원문을 마크다운으로 읽고 검색합니다(heading·표 구조 보존). 감사보고서·주석별 조회 포함. [Purpose] - Full disclosure text; audit analysis (감사의견·KAM): get_audit_report. - 감사보고서·연결감사보고서 원문·주석: here (role·sections), not get_attachments. - 비상장 non-filers: the F 감사보고서 rcept IS the route to 재무제표·주석. - ZIP 밖 형제문서(정관·운영실태보고서)·스캔: get_attachments. XBRL: get_financials(rcept_no). [Usage] 1. "이 사업보고서 원문 읽어줘" → rcept_no="20260310002820" 2. "연결감사보고서 특수관계자 주석" → role="consolidated_audit", sections=["특수관계자"] 3. "원문에서 횡령·배임 찾아줘" → find=["횡령","배임"] [Response] - documents[]: metadata only (role per 원문) — content ONLY with all_docs=true [Rules] - 감사의견·KAM are in 별도(_00760)/연결(_00761): pick by role. - Long doc: sections=[] → outline (헤딩 + 주석 번호별), then sections=[index|제목]. - find = 표 단위 발췌 from every doc. 0 matches ≠ absent — 스캔 이미지 표는 get_attachments(mode=images). - truncated=true → raise truncate_at or pick sections. - 원문 XML 없음([014]) → 뷰어 자동 전환(source=viewer): documents[]·doc_index = 뷰어 섹션.

Input Schema

{
  "type": "object",
  "properties": {
    "rcept_no": {
      "description": "14-digit 접수번호 from search_disclosures; hyphens·spaces stripped.",
      "type": "string",
      "pattern": "^\\d{14}$"
    },
    "format": {
      "default": "markdown",
      "description": "markdown = DART XML → 마크다운; raw = original XML; text = tags stripped (tables flattened). source=viewer ([014], no 원문 XML): no raw; markdown/text from 뷰어 HTML.",
      "type": "string",
      "enum": [
        "markdown",
        "raw",
        "text"
      ]
    },
    "doc_index": {
      "description": "0-based index of one 원문 XML in the ZIP (documents[].index); omitted = 0 = 본문. 감사보고서: use role, not a guessed 1~2. Out of range → 본문 WITH a note in notes — check it. source=viewer ([014]): picks one 뷰어 목차 섹션 (same index as get_attachments mode=text sections).",
      "type": "integer",
      "minimum": 0
    },
    "role": {
      "description": "Pick the 원문 by role instead of doc_index: separate_audit = 감사보고서(별도, `_00760`), consolidated_audit = 연결감사보고서(`_00761`), internal_control = 내부회계관리제도 보고서. No such 원문 in the ZIP (e.g. no 연결 without 종속기업) → fails with the 원문 list. Not with doc_index·all_docs.",
      "type": "string",
      "enum": [
        "main_body",
        "separate_audit",
        "consolidated_audit",
        "internal_control"
      ]
    },
    "sections": {
      "description": "Read only PART of the selected 원문 (role/doc_index; else 본문). [] = 목차 only (headings + one row per 주석 번호; 주석 boundaries inferred from 'N.'). Then pick by 목차 index (numbers), partial 제목 match (strings, spaces ignored; both 연결·별도 주석 if both exist) or \"주석 31\". A pick inside another comes back once; no match → 목차 instead. source=viewer ([014]): 뷰어 목차 (numbers = documents[].index; strings = 제목 only, no 주석 번호). format=markdown only; not with find·all_docs.",
      "maxItems": 24,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "integer",
            "minimum": 0
          },
          {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          }
        ]
      }
    },
    "all_docs": {
      "default": false,
      "description": "Every 원문 XML in the ZIP with content as documents[] (본문 + 별도/연결 감사보고서). source=viewer ([014]): one entry per top-level 뷰어 section (max 24; sub-sections nested).",
      "type": "boolean"
    },
    "truncate_at": {
      "description": "Max content chars (default 300,000; excess cut; out-of-range clamped). Caps the sections total; all_docs: split across documents (per_doc_truncate_at). Ignored with find.",
      "type": "integer",
      "minimum": 1000,
      "maximum": 2000000
    },
    "find": {
      "description": "Search EVERY 원문 XML in the ZIP (본문 + 별도/연결 감사보고서); returns `find` (table-level excerpt bundles + other hit locations) INSTEAD of content. Several terms in one filing → ONE call with an array (max 8, OR; blocks with more terms first), not parallel calls. One string = ONE term (commas not split). Case-insensitive literal, not regex; 0 hits → retried letter-spaced (`핵 심 감 사`). doc_index/role narrows to that 원문 (doc_index out of range → searches all, with a note). Whole 절·주석 of a hit: same doc_index/role + sections=[section_index]. format=markdown only; not with all_docs. source=viewer ([014]): top-level 뷰어 sections (first 24; sub-sections inside parents); bundles[].doc_index = section index.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        {
          "minItems": 2,
          "maxItems": 8,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        }
      ]
    },
    "find_max_bundles": {
      "description": "Max bundles (default 5); other hits → locations only. Fewer if find_max_bytes fills first.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "find_max_bytes": {
      "description": "Max total bundle size, UTF-8 bytes not chars (한글 3 bytes; default 12,000); oversized bundle cut by table row (header rows kept), clipped=true.",
      "type": "integer",
      "minimum": 1000,
      "maximum": 60000
    }
  },
  "required": [
    "rcept_no"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_periodic_report(corp, year, report, max_items, report_type)

MyDART MCP의 get_periodic_report 도구는 사업보고서 세부 섹션 28종을 정형 데이터로 조회합니다 — 한 섹션 또는 여러 섹션 동시. [Purpose] - Section tables: 배당·자기주식·최대주주·소액주주·임원보수·회계감사인·회사채 미상환 등. - 재무제표 figures: get_financials. auditor_opinion is one word — KAM·내부회계·강조사항: get_audit_profile / get_audit_report. [Usage] 1. "삼성전자 2025년 배당 내역" → corp="삼성전자", year=2025, report_type="dividends" 2. "카카오 최대주주가 누구야" → corp="카카오", report_type="shareholders" (year 생략 = 최신) [Response] - Amounts are STRINGS. Section status: 000 성공 / 013 무자료. - periods legend maps 당기/전기/전전기 → fiscal years — cite 기수 only after reading it. [Rules] - Non-December closer: apply fiscal_year_note — one year off vs the audit tools. - ARRAY: per-element status (success·013·error mix); all-013 flips to { mode:"no_data", … }. - Listed [013] ≈ legitimate absence (no 배당·자기주식, no eligible 개인별 보수), not failure. - 개인별 보수 2종은 2026-05 서식 개정으로 구판↔V2 이원 — 도구가 자동 라우팅(endpoint· compensation_format 표시). V2 는 1인당 3행(당기·전기·전전기)이라 합계는 fscl_year="당기"만, 주식기준보상 세부는 stk_bsd_cmpn.

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "type": "string",
      "minLength": 1,
      "description": "회사명/종목코드/corp_code"
    },
    "year": {
      "description": "결산 사업연도 (회계연도, not the filing year) — one per call. Omitted → latest published 사업연도 by 결산월·report (year_defaulted=true).",
      "type": "integer",
      "minimum": 2015
    },
    "report": {
      "default": "annual",
      "description": "1Q·반기·3Q·연차",
      "type": "string",
      "enum": [
        "q1",
        "half",
        "q3",
        "annual"
      ]
    },
    "max_items": {
      "default": 150,
      "description": "Row cap per section; excess cut → truncated=true, total_count = full row count.",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "report_type": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "largest_shareholder",
            "largest_shareholder_changes",
            "minority_shareholders",
            "total_stocks",
            "executives",
            "employees",
            "outside_director_changes",
            "executive_compensation_total",
            "executive_compensation_individual",
            "individual_pay_top5",
            "unregistered_executive_comp",
            "director_total_comp_approval",
            "director_total_comp_by_type",
            "auditor_opinion",
            "audit_service_contract",
            "non_audit_service_contract",
            "capital_increase_decrease",
            "dividends",
            "treasury_stock",
            "private_placement_fund_use",
            "public_offering_fund_use",
            "other_company_investment",
            "debt_securities_issuance",
            "cp_unredeemed",
            "short_term_bond_unredeemed",
            "corp_bond_unredeemed",
            "hybrid_capital_unredeemed",
            "contingent_capital_unredeemed"
          ]
        },
        {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "largest_shareholder",
              "largest_shareholder_changes",
              "minority_shareholders",
              "total_stocks",
              "executives",
              "employees",
              "outside_director_changes",
              "executive_compensation_total",
              "executive_compensation_individual",
              "individual_pay_top5",
              "unregistered_executive_comp",
              "director_total_comp_approval",
              "director_total_comp_by_type",
              "auditor_opinion",
              "audit_service_contract",
              "non_audit_service_contract",
              "capital_increase_decrease",
              "dividends",
              "treasury_stock",
              "private_placement_fund_use",
              "public_offering_fund_use",
              "other_company_investment",
              "debt_securities_issuance",
              "cp_unredeemed",
              "short_term_bond_unredeemed",
              "corp_bond_unredeemed",
              "hybrid_capital_unredeemed",
              "contingent_capital_unredeemed"
            ]
          }
        }
      ],
      "description": "Section — string or array (array → sections[]). Families in enum order: 주주 4 (largest_shareholder…) / 임직원 3 (executives…) / 보수 6 (executive_compensation_*…) / 회계감사 3 (auditor_opinion…) / 자본 3 (dividends·treasury_stock…) / 자금사용 2 (*_fund_use) / 타법인출자 1 = other_company_investment (incl. 종속·관계기업 지분) / 채무증권 6 (debt_securities_issuance·*_unredeemed). Group aliases: 'shareholders' (주주 4), 'executive_compensation' (보수 6)."
    }
  },
  "required": [
    "corp",
    "report_type"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_corporate_event(corp, mode, event_type, start, end, ...)

MyDART MCP의 get_corporate_event 도구는 주요사항보고서 자본·지배구조 이벤트 36종(증자·감자·CB/BW/EB·자기주식·합병/분할 등)과 5%룰·임원 지분공시를 조회합니다. [Purpose] - "Who raised/cut stakes, when": event_type="holdings" (5%룰 대량보유·임원/주요주주 소유보고). - 결정의 후속 발행·합병 조건(공모가·인수인): get_registration_statement. - List skims: search_disclosures; 사업보고서 snapshots (최대주주·주식총수): get_periodic_report. [Usage] 1. "카카오 최근 3년 자본 조달 흐름" → corp="카카오", mode="timeline" 2. "이 회사 CB 발행한 적 있어?" → corp="…", event_type="cb_issuance" 3. "자사주 취득·처분 2020년부터" → event_type=["treasury_acquisition","treasury_disposal"], start="2020-01-01" [Response] - date = 최초 공시일 (start/end axis), newest first; fields = latest 정정본 (rcept_no) — corrected: last_filed_date. - 지분공시: total_count = all-time cumulative, filtered_count = in-period (DART takes no dates — filtered client-side). [Rules] - Empty timeline ≠ no events — default set = capital events only (name event_type for more); sections_meta may carry per-endpoint errors. - event_type_counts is pre-truncation (limit cuts timeline only).

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "type": "string",
      "minLength": 1,
      "description": "회사명/종목코드/corp_code"
    },
    "mode": {
      "default": "single",
      "description": "single: one event_type. timeline: several event_types (unset → 'capital' group) in parallel, merged into one newest-first list",
      "type": "string",
      "enum": [
        "single",
        "timeline"
      ]
    },
    "event_type": {
      "description": "String = one event (mode=single); array = several merged into one timeline (mode auto-switches to timeline). Unset in timeline = 'capital' group only (자본거래 25종). Group aliases: 'capital', 'holdings' (지분공시 2종).",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "major_holding_5pct",
            "executive_holding",
            "default_occurrence",
            "business_suspension",
            "rehabilitation_filing",
            "dissolution_cause",
            "bank_management_start",
            "bank_management_stop",
            "litigation",
            "rights_offering",
            "bonus_issue",
            "rights_bonus_combo",
            "capital_reduction",
            "cb_issuance",
            "bw_issuance",
            "eb_issuance",
            "cocobond_issuance",
            "treasury_acquisition",
            "treasury_disposal",
            "treasury_trust_contract",
            "treasury_trust_cancel",
            "stock_exchange",
            "company_split_merger",
            "company_split",
            "company_merger",
            "asset_transfer_etc",
            "tangible_asset_transfer",
            "tangible_asset_acquisition",
            "other_corp_stock_transfer",
            "other_corp_stock_acquisition",
            "business_transfer",
            "business_acquisition",
            "bond_with_stock_right_acquisition",
            "bond_with_stock_right_transfer",
            "overseas_listing_decision",
            "overseas_delisting_decision",
            "overseas_listing",
            "overseas_delisting"
          ]
        },
        {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "major_holding_5pct",
              "executive_holding",
              "default_occurrence",
              "business_suspension",
              "rehabilitation_filing",
              "dissolution_cause",
              "bank_management_start",
              "bank_management_stop",
              "litigation",
              "rights_offering",
              "bonus_issue",
              "rights_bonus_combo",
              "capital_reduction",
              "cb_issuance",
              "bw_issuance",
              "eb_issuance",
              "cocobond_issuance",
              "treasury_acquisition",
              "treasury_disposal",
              "treasury_trust_contract",
              "treasury_trust_cancel",
              "stock_exchange",
              "company_split_merger",
              "company_split",
              "company_merger",
              "asset_transfer_etc",
              "tangible_asset_transfer",
              "tangible_asset_acquisition",
              "other_corp_stock_transfer",
              "other_corp_stock_acquisition",
              "business_transfer",
              "business_acquisition",
              "bond_with_stock_right_acquisition",
              "bond_with_stock_right_transfer",
              "overseas_listing_decision",
              "overseas_delisting_decision",
              "overseas_listing",
              "overseas_delisting"
            ]
          }
        }
      ]
    },
    "start": {
      "description": "YYYY-MM-DD / YYYYMMDD; default 3 years ago (period.defaulted:true). start/end match each event's first filing (DART 최초접수일) — an in-window 정정 of an event first filed earlier is not returned",
      "type": "string"
    },
    "end": {
      "description": "YYYY-MM-DD / YYYYMMDD; default today (period.end_defaulted:true)",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Max timeline rows, newest first by 최초 공시일. Excess cut → truncated=true, total_events = full count. Prefer narrowing start/end over raising limit.",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    }
  },
  "required": [
    "corp"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_registration_statement(corp, statement_type, start, end, limit)

MyDART MCP의 get_registration_statement 도구는 증권신고서 주요정보 6종 — 모집·매출 조건, 인수인, 자금 사용목적, 합병·분할 조건을 정형 JSON 으로 조회합니다. [Purpose] - Filed terms of a 증권신고서: 공모가액·인수인·자금의사용목적·합병비율·주식매수청구권. - Board decision: get_corporate_event / listing scan: search_disclosures(kind="issuance") / narrative (투자위험요소): download_document. [Usage] 1. "대한항공 유상증자 조건" → corp="대한항공", statement_type="equity" [Response] - filings[] = one per 신고서(rcept_no), newest first. sections: general·securities·underwriters·fund_use·sellers·put_right·issued_securities·parties. - date = 접수일 (정정본: 정정 접수일, may fall outside window). Values are raw strings; '-'(해당없음) fields omitted. [Rules] - superseded_by = later version DART omits; if [발행조건확정], 가액·총액·금리 here are 예정 terms (final: its retrieve). Older 정정 not included. - withdrawn:true = 철회신고서 filed. version_check set = check incomplete. - No data ≠ not issued: 사모·일괄신고서·소액공모 out of scope. Per-type status in sections_meta. - fetch_failed/truncated_note types mean "unconfirmed", not "none" — re-query that type.

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "type": "string",
      "minLength": 1,
      "description": "회사명/종목코드/corp_code (no all-company scan)"
    },
    "statement_type": {
      "description": "증권신고서 type, string or array; unset = all 6. equity=지분증권(유상증자·IPO) / debt=채무증권(회사채) / depositary=증권예탁증권(DR) / merger=합병 / stock_exchange=주식의포괄적교환·이전 / division=분할. Group aliases: 'offering' (공모 3종), 'restructuring' (구조조정 3종)",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "equity",
            "debt",
            "depositary",
            "merger",
            "stock_exchange",
            "division"
          ]
        },
        {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "equity",
              "debt",
              "depositary",
              "merger",
              "stock_exchange",
              "division"
            ]
          }
        }
      ]
    },
    "start": {
      "description": "YYYY-MM-DD / YYYYMMDD, matched on 신고서 최초접수일; default 2015-01-01 = data floor, full history (period.defaulted:true) — keep the window wide",
      "type": "string"
    },
    "end": {
      "description": "YYYY-MM-DD / YYYYMMDD; default today (period.end_defaulted:true)",
      "type": "string"
    },
    "limit": {
      "description": "Max 신고서 returned (per rcept_no, not rows), newest first; default 10. Excess → truncated=true, total_filings = full count",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "corp"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_attachments(rcept_no, dcm_no, mode, filename, index, ...)

MyDART MCP의 get_attachments 도구는 공시의 첨부파일 목록과 형제문서 본문·페이지 이미지를 다룹니다. [Purpose] - Attachment list + 형제문서 routing; body text = mode=text. 감사보고서·주석은 download_document(role). - 자금부정통제 붙임·경영진 운영실태보고서 live here (mode=text; 붙임 = attachment_links[].retrieve). - Scan-only (도장·서명·스캔 서식): mode=images only. [Usage] 1. 정관·영업보고서 본문 → list 로 dcm_no 확보 → dcm_no, mode="text" 2. 표가 이미지뿐이면 mode="images" (뒷장 image_from, PDF 페이지 pages) [Response] - format: hwpx/hwp/pdf/docx/doc/xlsx/xls/zip/html/unknown - images: source="viewer" or "pdf" — different field shapes. [Rules] - supported:false → unsupported_reason·suggestion·note·retrieve·next_step = the fallback route; follow it verbatim. - No bulk sweeps — mass viewer calls bring DART IP bans. - Ladder: text (표 lossless) → empty·링크 껍데기 body → images → download_url. Attachment files are never parsed server-side. - images returns pictures: OCR·판독 is the client's job, 1 image per capped call (image_from). - partial:true ⇒ section_errors[]; markdown is partial — 빈 곳 ≠ 사실 없음.

Input Schema

{
  "type": "object",
  "properties": {
    "rcept_no": {
      "description": "14-digit 접수번호; separators stripped.",
      "type": "string",
      "pattern": "^\\d{14}$"
    },
    "dcm_no": {
      "description": "Target 문서번호(dcmNo); default = 본문. Each 형제문서 (감사보고서·내부회계관리제도운영보고서·영업보고서·정관 etc.) has its own — take sibling_documents[].dcm_no from mode=list first; required to reach that 형제문서's attachments·text·images.",
      "type": "string",
      "pattern": "^\\d+$"
    },
    "mode": {
      "description": "list: attachment list only, nothing downloaded (cheap). text: document body as 마크다운 from the 뷰어 원문 — text·tables lossless. images: embedded raster (도장·스캔본·차트). No filename/index → 뷰어 원본 JPEG in document order, per-section eleId (manifest.source=\"viewer\"); filename or index → scans THAT attachment PDF: decoded PNGs in page order, with page numbers (source=\"pdf\"; pages narrows it).",
      "type": "string",
      "enum": [
        "list",
        "text",
        "images"
      ],
      "default": "list"
    },
    "filename": {
      "description": "images mode: EXACT filename of the attachment PDF to scan (a miss lists available names); selects the PDF-scan route.",
      "type": "string"
    },
    "index": {
      "description": "images mode: 0-based index of the attachment to scan; filename wins if both. Selects the PDF-scan route, like filename.",
      "type": "integer",
      "minimum": 0
    },
    "sections": {
      "description": "mode=\"text\" only: 0-based **sections[] array index**, NOT eleId (often index+1) — e.g. 3rd·6th entries → [2, 5]; check each returned index against your picks. Unset = first 24 sections. [] = 목차 only (titles, md_chars 0) → call again with picks. Picks apply before the 24-section cap — only way to reach 사업보고서 본문 sections 25~158. Out-of-range indices dropped with a note; all out-of-range = rejected.",
      "maxItems": 24,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0
      }
    },
    "truncate_at": {
      "description": "mode=text 마크다운 cap in chars; default 100,000; out-of-range clamped.",
      "type": "integer",
      "minimum": 1000,
      "maximum": 2000000
    },
    "pages": {
      "description": "images mode, PDF-scan route: 1-based pages WITHIN the attachment picked by filename/index (requires one), e.g. \"2,4,7-9\". Unset = that PDF's FIRST 40 pages only. Max 2000 pages per call — wider span rejected, not trimmed.",
      "type": "string"
    },
    "max_images": {
      "default": 12,
      "description": "images mode: max images; PDF-scan route keeps largest by area.",
      "type": "integer",
      "minimum": 1,
      "maximum": 40
    },
    "image_from": {
      "default": 0,
      "description": "뷰어 원본 JPEG route: 0-based start offset in document order — reach pages past max_images (capped channels fit ~1 page per call); continue with next_image_from. e.g. 운영실태보고서 자금부정통제 표 is usually the 2nd page → 1. PDF-scan route: use pages.",
      "type": "integer",
      "minimum": 0
    },
    "min_dimension": {
      "default": 24,
      "description": "PDF-scan route only (뷰어 원본 JPEG unfiltered): images whose shorter side is under this many px are dropped as decoration (아이콘·괘선). Lower it to catch small 도장/서명.",
      "type": "integer",
      "minimum": 1
    }
  },
  "required": [
    "rcept_no"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_audit_profile(corp, year, refresh, light)

MyDART MCP의 get_audit_profile 도구는 감사인·감사의견·업무수행이사에 감사보수·감사투입시간·실사수행내역·외부조회 실시여부 등 외부감사 실시내역을 한 표로 요약해 반환합니다. [Purpose] - Fact/figure asks: "who audited, at what fee, how was the 실사". - 강조사항 comes structured (emphasis); full 의견근거·KAM·강조 text: get_audit_report. - ICFR detail: get_internal_control; 계속기업 quant: get_going_concern. - Company lists (모집단): search_audit_findings. [Usage] 1. "삼성전자 2024 감사보수·비감사보수" → corp="삼성전자", year=2024 2. "감사인·감사보수만 빠르게" → corp="…", year=2024, light=true [Response] - fees `_m` suffix = 백만원. - opinion domain: 적정/한정/부적정/의견거절. [Rules] - data_available=false = the filing was not found (e.g. not yet filed) — do NOT read null fields as "confirmed absent". - audit_only=true (F 단독공시, unlisted) → fees are structurally absent (사업보고서 전용), not a defect. - For 연결/별도 split read kam.by_fs_div, not kam.topics (representative fallback). - ALWAYS read applicability.guidance[] — regime notes and next-tool routing. - 감사인 교체/연속연수 are NOT returned — call per year and compare auditor.name.

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "type": "string",
      "minLength": 1,
      "description": "회사명/종목코드/corp_code"
    },
    "year": {
      "description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026).",
      "type": "integer",
      "minimum": 2015
    },
    "refresh": {
      "default": false,
      "description": "Bypass cache; re-collect",
      "type": "boolean"
    },
    "light": {
      "default": false,
      "description": "Skip 원문 parsing — structured JSON only, fast; omits 실사 (incl. fees.headcount), 연결/별도 split, engagement_partner",
      "type": "boolean"
    }
  },
  "required": [
    "corp",
    "year"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_audit_report(corp, year, rcept_no, fs_div, sections, ...)

MyDART MCP의 get_audit_report 도구는 감사보고서 본문을 문단 단위로 구조화해 문단별 원문 텍스트를 반환합니다 — 감사의견·감사의견근거·KAM·강조사항·기타사항·계속기업가정불확실성. [Purpose] - For verbatim 감사보고서 narrative paragraphs. Structured fact summaries (보수·실사 등): get_audit_profile. - ICFR detail and its fit with the 재무제표 감사의견: get_internal_control. [Usage] 1. "LG에너지솔루션 2024 KAM 문단 전문" → corp="LG에너지솔루션", year=2024 2. "삼부토건 FY2024 별도 의견거절 근거 원문" → corp="삼부토건", year=2024, fs_div="OFS" 3. 발견사항만 → sections="summary"; 잘리면 truncate_at 상향 [Response] - sections[].key = KSA700 elements (list in sections arg). opinion: 적정/한정/부적정/의견거절. - fs_label: 연결/별도. source_note = F 단독공시, correction_note = 정정 채택/생략. [Rules] - kam.count=0 is normal if none_declared or 의견거절 (감사기준서 705 문단 29); else suspect omission. - Unlisted (F 단독공시) legitimately lacks KAM·업무수행이사 (see source_note). - 재무제표·주석 FIGURES: download_document. - body_omitted:true = section EXISTS, body not requested (≠ absent) — re-call with sections. - internal_control = verdict only; ICFR 정본은 get_internal_control.

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "description": "회사명/종목코드/corp_code — corp+year required without rcept_no; locates the 사업보고서 (비상장: 감사보고서 F 단독공시 fallback)",
      "type": "string"
    },
    "year": {
      "description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026).",
      "type": "integer",
      "minimum": 2015
    },
    "rcept_no": {
      "description": "접수번호 instead of corp+year (사업보고서 or 감사보고서 F 단독공시) — resolved·applicability then null.",
      "type": "string",
      "pattern": "^\\d{14}$"
    },
    "fs_div": {
      "description": "Default both = 연결(CFS)+별도(OFS) → reports[] up to 2 entries; reading only the first drops an axis.",
      "type": "string",
      "enum": [
        "both",
        "CFS",
        "OFS"
      ]
    },
    "sections": {
      "description": "Section BODIES to include. full (default) = all. summary = finding paragraphs — opinion·kam·emphasis·other_matter·going_concern, + basis only when opinion ≠ 적정. Or a key array, e.g. [\"opinion\",\"kam\"]; [] = 목차 only. Unselected → body_omitted:true stubs (re-requestable). Structured fields (opinion·kam.matters titles·emphasis·other_matters·going_concern_mentioned) ALWAYS returned.",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "full",
            "summary"
          ]
        },
        {
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "opinion",
              "basis",
              "going_concern",
              "kam",
              "emphasis",
              "other_matter",
              "other_information",
              "mgmt_resp",
              "auditor_resp",
              "other_reporting"
            ]
          }
        }
      ]
    },
    "truncate_at": {
      "description": "Max chars per included section body (default 8,000; excess cut; out-of-range clamped). truncated=true → check char_count, re-call higher.",
      "type": "integer",
      "minimum": 500,
      "maximum": 500000
    },
    "refresh": {
      "default": false,
      "description": "Bypass cache; re-collect (corp+year only)",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_going_concern(corp, year, fs_div, refresh)

MyDART MCP의 get_going_concern 도구는 계속기업 위험을 정량 재무지표와 감사보고서 기재의 교차로 판정합니다. [Purpose] - 계속기업: 정량 징후 × 감사보고서 기재 대조 — a mismatch is a cue to read the 원문, not a finding. - Lists: search_audit_findings; figures: get_financials; 문단 원문: get_audit_report. [Usage] 1. "이스타코 2024 계속기업 위험 있어?" → corp="이스타코", year=2024 2. "별도 기준 정량 점검" → corp="…", year=2024, fs_div="OFS" [Response] - flags.consecutive_op_loss = NUMBER of 연속 영업손실 years (not a bool); others bool|null. - grade: 판정불가(no data)/양호(0)/주의(1~2)/경계(3~4)/위험(5+) - cross_check.code: both/quant_only/text_only/none/insufficient_data/quant_unavailable/report_unavailable - text: audit_opinion, evidence_source, report_fs_div [Rules] - going_concern_mentioned false = parser found no GC text, not proof of none; null = report not secured. quant_only covers both cases. - 한정/부적정/의견거절: GC matters can sit in 의견근거 — read it (cross_check.next_step). - grade "판정불가" is not "양호". flags null = account not secured, not false. - fs_div (figures) is post-fallback — CFS may return OFS.

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "type": "string",
      "minLength": 1,
      "description": "회사명/종목코드/corp_code"
    },
    "year": {
      "description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026).",
      "type": "integer",
      "minimum": 2015
    },
    "fs_div": {
      "description": "Default CFS (연결); OFS = 별도. No 연결 → auto fallback to 별도 (response fs_div = basis used).",
      "type": "string",
      "enum": [
        "CFS",
        "OFS"
      ]
    },
    "refresh": {
      "default": false,
      "description": "Bypass cache; re-collect",
      "type": "boolean"
    }
  },
  "required": [
    "corp",
    "year"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_internal_control(corp, year, fs_div, refresh)

MyDART MCP의 get_internal_control 도구는 '감사인'의 내부회계관리제도(ICFR) 감사/검토 보고서를 조회합니다 — 구분·의견·중요한 취약점 여부. [Purpose] - ICFR 의견·취약점 vs 재무제표 감사의견; 취약점 lists: search_audit_findings. - 자금부정통제·경영진 내부회계관리제도 운영실태보고서: not here → get_attachments (사업보고서 rcept, mode=list→dcm_no→mode=text, scans=images; no rcept: search_disclosures preset='annual_report'). - Structured facts: get_audit_profile; full text: get_audit_report. [Usage] 1. "카카오페이 2024 내부회계 의견" → corp="카카오페이", year=2024 2. "연결 기준만" → corp="…", year=2024, fs_div="CFS" [Response] - opinion domain: 적정/부적정/의견거절 — NO '한정'. 검토(review_or_audit)의 의견거절 = 범위제한에 따른 검토결론 불표명. [Rules] - reports is an ARRAY — both gives up to 2 entries (연결·별도). - present=false is usually out-of-scope (read the note), not missing data; an empty CFS entry is normal. - Never conflate a review's 의견거절 with an audit's — check review_or_audit. - 자금부정통제 (FY2025~ mandatory, FY2024 optional)·시정계획 = 경영진 운영실태보고서 — see management_operation_report.steps (applicable=false = F 단독공시: no report exists).

Input Schema

{
  "type": "object",
  "properties": {
    "corp": {
      "type": "string",
      "minLength": 1,
      "description": "회사명/종목코드/corp_code"
    },
    "year": {
      "description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026).",
      "type": "integer",
      "minimum": 2015
    },
    "fs_div": {
      "description": "Default both = 연결(CFS)+별도(OFS). ICFR is normally 별도 only; 연결 ICFR 감사 only for 전기말 별도자산 2조↑ filers from FY2023. 별도 falls back to a standalone ICFR 공시 if the 감사보고서 embeds none; 연결 never does.",
      "type": "string",
      "enum": [
        "both",
        "CFS",
        "OFS"
      ]
    },
    "refresh": {
      "default": false,
      "description": "Bypass cache; re-collect",
      "type": "boolean"
    }
  },
  "required": [
    "corp",
    "year"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢search_audit_findings(year, market, fs_div, opinion, emphasis, ...)

MyDART MCP의 search_audit_findings 도구는 회사를 지정하지 않고 감사보고서 조건으로 상장사·비상장사 목록을 찾습니다. [Purpose] - List/aggregate: "의견거절 회사"·"내부회계 취약점"·"○○회계법인 감사 회사". - Detail: get_audit_profile/get_internal_control; 원문: get_audit_report. [Usage] 1. "FY2024 코스피 의견거절 회사" → year=2024, market="kospi", opinion="disclaimer" 2. 목록·집계만 필요 → fields="brief" 3. "24~25년 ICFR 취약점" → year=[2024,2025] (다년 — coverage.years[]) 4. "비상장 의견거절" → market="unlisted" [Response] - Output market Y=코스피/K=코스닥/N=코넥스/E=비상장; fs_div KOREAN "연결"/"별도". [Rules] - READ coverage.note FIRST — empty result over a non-ingested scope = "not seen", never "does not exist". - fs_div=both(default) → ≤2 rows/company; dedupe corp_code to count companies. - breakdown = baseline over year/market/fs_div only (other filters ignored); ≠ count. - KAM omission suspect: kam=false+kam_required=true+kam_none_declared=false (의견거절 excluded). - ICFR undetected: 연결 icfr.note only when 감사 expected but missing; else read expected_type. - Daily row cap per token or key.

Input Schema

{
  "type": "object",
  "properties": {
    "year": {
      "description": "결산 사업연도 (회계연도·fiscal year), NOT the 공시(제출)연도 — pass the user's year as-is, never subtract: '2025 사업보고서' → 2025. Convert ONLY when the user explicitly names the 공시연도: '2026년에 공시된 사업보고서' → 2025. Relative ('최근 N개년'·'작년'): count back from the latest PUBLISHED 사업연도 (사업보고서 filed ≤90 days after 결산기말) — for 12월 결산 last year from April, the year before last in Jan~Mar (e.g. if latest = FY2025 → 최근 5개년 = 2021~2025). 비12월 결산 (3·6·9월): the year its 결산기 STARTS (3월 결산 2025-04~2026-03 = 2025; get_financials calls it 2026). Array = multi-year query (e.g. [2024, 2025]): rows carry their own bsns_year; per-year coverage.years[].",
      "anyOf": [
        {
          "type": "integer",
          "minimum": 2015
        },
        {
          "minItems": 1,
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 2015
          }
        }
      ]
    },
    "market": {
      "description": "Default all = 상장사 (kospi·kosdaq·konex by FY말 market); all never includes unlisted — query it separately. unlisted = FY말 market E: 비상장 사업보고서 filers + 상장사 years before 상장 or after 상장폐지. Servers without the 비상장 dataset: validation:market error, and all may still return those 상장사 E years. 외감 비상장사 filing only a 감사보고서: in neither — get_audit_profile per company.",
      "type": "string",
      "enum": [
        "kospi",
        "kosdaq",
        "konex",
        "all",
        "unlisted"
      ]
    },
    "fs_div": {
      "description": "Default both = 연결(CFS)+별도(OFS) as SEPARATE rows (의견·강조·KAM·ICFR held per report) → ≤2 rows/company; dedupe corp_code to count companies.",
      "type": "string",
      "enum": [
        "both",
        "CFS",
        "OFS"
      ]
    },
    "opinion": {
      "description": "감사의견: unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견 (한정·부적정·의견거절).",
      "type": "string",
      "enum": [
        "unqualified",
        "qualified",
        "adverse",
        "disclaimer",
        "modified"
      ]
    },
    "emphasis": {
      "description": "Has 강조사항(EoM)",
      "type": "boolean"
    },
    "other_matter": {
      "description": "Has 기타사항(OM)",
      "type": "boolean"
    },
    "kam": {
      "description": "Has 핵심감사사항(KAM)",
      "type": "boolean"
    },
    "kam_required": {
      "description": "This report had to carry KAM: 적용시기 (규모·연도·시장) met AND opinion ≠ 의견거절 (감사기준서 705 문단 29; 한정·부적정 still must). false = outside phase-in, or 의견거절 (row carries kam_exempt_reason)",
      "type": "boolean"
    },
    "kam_none_declared": {
      "description": "감사보고서 explicitly declares '보고할 핵심감사사항 없음' (kam_count=0 then normal); false = undeclared or unknown",
      "type": "boolean"
    },
    "asset_bucket": {
      "description": "전기말 자산총액(별도) band = row label: gte_2tn=2조이상, gte_500bn=5천억이상 (<2조), gte_100bn=1천억이상 (<5천억), lt_100bn=1천억미만.",
      "type": "string",
      "enum": [
        "gte_2tn",
        "gte_500bn",
        "gte_100bn",
        "lt_100bn"
      ]
    },
    "industry": {
      "description": "업종: financial=금융 (KSIC 64~66: 은행·보험·금융지주…), non_financial=비금융; 주석 XBRL·ICFR 운영의무 thresholds differ.",
      "type": "string",
      "enum": [
        "financial",
        "non_financial"
      ]
    },
    "xbrl_required": {
      "description": "재무제표 주석 XBRL mandatory that year (적용시기)",
      "type": "boolean"
    },
    "going_concern": {
      "description": "감사보고서 mentions 계속기업 불확실성",
      "type": "boolean"
    },
    "icfr_opinion": {
      "description": "내부회계관리제도 의견: adverse=부적정, disclaimer=의견거절 (감사 의견거절 + 검토 검토결론 불표명 — split by row icfr.type), modified=변형 (≠ 적정).",
      "type": "string",
      "enum": [
        "adverse",
        "disclaimer",
        "modified"
      ]
    },
    "icfr_material_weakness": {
      "description": "Has 내부회계관리제도 중요한 취약점",
      "type": "boolean"
    },
    "auditor": {
      "description": "감사인명 partial match (e.g. 삼정)",
      "type": "string"
    },
    "limit": {
      "default": 200,
      "description": "Cap on ROWS, not companies. Cut → truncated=true, count = full row count; deduped company count then a floor — narrow market·fs_div·asset_bucket until truncated=false.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "fields": {
      "default": "full",
      "description": "Row width. full = every field incl. 본문 text (의견근거·강조·기타·계속기업, KAM 제목, ICFR 근거·취약점, applicability), ~4KB/row. brief = corp_name·corp_code·stock_code·bsns_year·market·fs_div·auditor·audit_opinion·going_concern·emphasis·other_matter·icfr{type,opinion}·kam_count·rcept_no, ~0.3KB/row — for list/count asks; once a company is picked, full or get_audit_report·get_internal_control. coverage·breakdown·count·truncated identical in both.",
      "type": "string",
      "enum": [
        "full",
        "brief"
      ]
    },
    "include_reference": {
      "default": false,
      "description": "Attach the 적용시기 참조표 (KAM·ICFR·XBRL 주석·자금부정통제 phase-in schedule, ~4.8KB) — only when 법령 근거 text is needed.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_valuation_data(kind, corp, index, rate_series, start, ...)

MyDART MCP의 get_valuation_data 도구는 가치평가 데이터(시장 시계열·WACC·유사회사)를 kind 로 골라 조회합니다. [Purpose] - 평가기준일 시세·β checks, WACC build-up, peer comps. - Evidence, not adoption — the 평가자 decides. - 재무수치: get_financials; 업종(KSIC)·시장구분: get_company_profile. [Usage] 1. "에스에프에이 최근 1년 주가" → kind="market", corp="에스에프에이" 2. "반도체장비 업종 피어 멀티플" → kind="peers", ksic="29271" [Response] - Units: *_pct = %, but mrp·srp·tax_rate = decimals (0.08 = 8%); flt_rt = 등락률 %. [Rules] - Returns come from flt_rt, never close deltas (break at 액면분할·병합). - Quote aggregates with n (varies; EBITDA often missing). - peers = KSIC candidates the 평가자 curates; too few relax the prefix 5→4→3 (see prefix_depth_used). - 무차입β (beta.unlevered·beta_unlev) = Hamada on WACC's 기준일 D/E (D 이자부부채 리스 포함, E per equity_basis); peers: E outstanding_plus_nci+우선주, β 2w. - Cite each source·as_of verbatim (조서 정합). - ALWAYS read notes[] — 강등·폴백·주의 accumulate there. - Daily cap on distinct targets per token or key.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "market",
        "wacc",
        "peers"
      ],
      "description": "market = 시세·지수·금리 time series; wacc = WACC components + CAPM build-up; peers = 동업종(KSIC) peer multiples·무차입β·자본구조. Arguments are tagged by kind ([market]·[wacc]·[peers]); one this kind does not use → error listing the ones it accepts; unknown key → rejected."
    },
    "corp": {
      "description": "회사명·종목코드·corp_code. market: 개별 종목 시세 (exactly one of corp·index·rate_series); wacc: REQUIRED, the subject company; peers: target (동업종 peers auto-selected)",
      "type": "string"
    },
    "index": {
      "description": "[market] 시장지수 kospi·kosdaq (KOSPI·코스피 etc. accepted). Not with corp·rate_series",
      "type": "string"
    },
    "rate_series": {
      "description": "[market] 시장금리: ktb* = 국고채, corp_* = 회사채 3년 (AA-·BBB-; pyeong = 민평), cd91 = CD 91일. Not with corp·index",
      "type": "string",
      "enum": [
        "ktb1y",
        "ktb2y",
        "ktb3y",
        "ktb5y",
        "ktb10y",
        "ktb20y",
        "ktb30y",
        "ktb50y",
        "corp_aa_3y",
        "corp_aa_pyeong_3y",
        "corp_bbb_3y",
        "cd91"
      ]
    },
    "start": {
      "description": "[market] YYYYMMDD or YYYY-MM-DD; default end − 1 year",
      "type": "string"
    },
    "end": {
      "description": "[market] Default: latest 적재일",
      "type": "string"
    },
    "freq": {
      "description": "[market] daily (default)·weekly (Fri close)·monthly (month-end). weekly/monthly rows carry period_return_pct (compounded flt_rt, %) instead of flt_rt — returns come from it, never close deltas",
      "type": "string",
      "enum": [
        "daily",
        "weekly",
        "monthly"
      ]
    },
    "beta_spec": {
      "description": "[wacc] β: 2w = 2년 주간 (default), 5m = 5년 월간",
      "type": "string",
      "enum": [
        "2w",
        "5m"
      ]
    },
    "rf_tenor": {
      "description": "[wacc] Rf(무위험이자율) tenor (default 10y)",
      "type": "string",
      "enum": [
        "3y",
        "5y",
        "10y"
      ]
    },
    "credit_rating": {
      "description": "[wacc] 신용등급 for Kd (무보증 공모회사채, KIS자산평가 매트릭스); mid-notch = AA0·A0·BBB0·BB0·B0, not bare AA. Omitted → 공시 회사채 등급; none disclosed → Kd not computed (no assumed rating), WACC null if D/E>0",
      "type": "string",
      "enum": [
        "AAA",
        "AA+",
        "AA0",
        "AA-",
        "A+",
        "A0",
        "A-",
        "BBB+",
        "BBB0",
        "BBB-",
        "BB+",
        "BB0",
        "BB-",
        "B+",
        "B0",
        "B-"
      ]
    },
    "kd_tenor": {
      "description": "[wacc] Kd(타인자본비용) tenor (default 5y)",
      "type": "string",
      "enum": [
        "1y",
        "2y",
        "3y",
        "5y",
        "7y",
        "10y"
      ]
    },
    "kd": {
      "description": "[wacc] Kd directly, % p.a. 세전 (e.g. 4.5); overrides credit_rating·kd_tenor",
      "type": "number"
    },
    "mrp": {
      "description": "[wacc] MRP override, decimal; default 0.08 = midpoint of 한국공인회계사회 가이던스 7~9%",
      "type": "number"
    },
    "srp_scheme": {
      "description": "[wacc] 규모위험 프리미엄(SRP) 분위체계 (default quintile)",
      "type": "string",
      "enum": [
        "quintile",
        "tercile",
        "none"
      ]
    },
    "srp": {
      "description": "[wacc] SRP override, decimal; skips 분위 판정",
      "type": "number"
    },
    "target_de": {
      "description": "[wacc] Target 자본구조 D/E (시가) for WACC weights (wE·wD); default 실측 D/E (0 if missing). β: still unlevered at 실측 D/E, only relevered here (relevered_at_target_de); Ke keeps observed βL",
      "type": "number"
    },
    "equity_basis": {
      "description": "[wacc] E(자기자본 시가): listed (자기주식 포함)·outstanding (자기주식 제외)·outstanding_plus_nci (default, +비지배지분); also β-unlevering D/E",
      "type": "string",
      "enum": [
        "listed",
        "outstanding",
        "outstanding_plus_nci"
      ]
    },
    "include_pref": {
      "description": "[wacc] Add 우선주 시총 into E (default true)",
      "type": "boolean"
    },
    "ksic": {
      "description": "[peers] KSIC 업종코드 instead of corp (비상장 target) or overriding corp's 업종; e.g. '26410'",
      "type": "string"
    },
    "exclude": {
      "description": "[peers] spac·reit·loss (LTM 순손실)·financial (KSIC 64~66). Default [spac, reit]; a given value replaces it",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "size_band": {
      "description": "[peers] Keep peers within N× the target's 시총 (10 = 1/10~10x; min 2); ignored without corp",
      "type": "number"
    },
    "yq": {
      "description": "[wacc·peers] 평가기준 분기 YYYYQn (e.g. 2026Q2, lowercase q OK); default latest snapshot",
      "type": "string"
    },
    "tax_rate": {
      "description": "[wacc·peers] 한계법인세율, decimal; default 0.264 (24%×1.1). Also Hamada t (beta.unlevered·beta_unlev)",
      "type": "number"
    },
    "limit": {
      "description": "[market·peers] market: row cap, latest rows kept (default 600, 1~3000); peers: top-N by 시총, aggregates over these N only (default 15, 3~50)",
      "type": "number"
    }
  },
  "required": [
    "kind"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools
verifiedversion not recorded15 tools
failed observationversion not recorded—
failed observationversion not recorded—
failed observationversion not recorded—