Skip to main content
Glama

search_audit_findings

Read-onlyIdempotent

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

NameRequiredDescriptionDefault
kamNoHas 핵심감사사항(KAM)
yearNo결산 사업연도 (회계연도·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[].
limitNoCap 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.
fieldsNoRow 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.full
fs_divNoDefault both = 연결(CFS)+별도(OFS) as SEPARATE rows (의견·강조·KAM·ICFR held per report) → ≤2 rows/company; dedupe corp_code to count companies.
marketNoDefault 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.
auditorNo감사인명 partial match (e.g. 삼정)
opinionNo감사의견: unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견 (한정·부적정·의견거절).
emphasisNoHas 강조사항(EoM)
industryNo업종: financial=금융 (KSIC 64~66: 은행·보험·금융지주…), non_financial=비금융; 주석 XBRL·ICFR 운영의무 thresholds differ.
asset_bucketNo전기말 자산총액(별도) band = row label: gte_2tn=2조이상, gte_500bn=5천억이상 (<2조), gte_100bn=1천억이상 (<5천억), lt_100bn=1천억미만.
icfr_opinionNo내부회계관리제도 의견: adverse=부적정, disclaimer=의견거절 (감사 의견거절 + 검토 검토결론 불표명 — split by row icfr.type), modified=변형 (≠ 적정).
kam_requiredNoThis report had to carry KAM: 적용시기 (규모·연도·시장) met AND opinion ≠ 의견거절 (감사기준서 705 문단 29; 한정·부적정 still must). false = outside phase-in, or 의견거절 (row carries kam_exempt_reason)
other_matterNoHas 기타사항(OM)
going_concernNo감사보고서 mentions 계속기업 불확실성
xbrl_requiredNo재무제표 주석 XBRL mandatory that year (적용시기)
include_referenceNoAttach the 적용시기 참조표 (KAM·ICFR·XBRL 주석·자금부정통제 phase-in schedule, ~4.8KB) — only when 법령 근거 text is needed.
kam_none_declaredNo감사보고서 explicitly declares '보고할 핵심감사사항 없음' (kam_count=0 then normal); false = undeclared or unknown
icfr_material_weaknessNoHas 내부회계관리제도 중요한 취약점

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / required
      Removed value: -[
      -  "year"
      -]
  2. Changed20 schema fields changed
    • changedInput schema / properties / asset_bucket / description
      Previous value: -"Size bucket by 전기말 자산총액(별도). gte_2tn=2조이상, gte_500bn=5천억이상, gte_100bn=1천억이상, lt_100bn=1천억미만. 한글 values also accepted."New value: +"전기말 자산총액(별도) band = row label: gte_2tn=2조이상, gte_500bn=5천억이상 (<2조), gte_100bn=1천억이상 (<5천억), lt_100bn=1천억미만."
    • changedInput schema / properties / auditor / description
      Previous value: -"Partial match on 감사인명 (e.g. 삼정/한영/안진/삼일)"New value: +"감사인명 partial match (e.g. 삼정)"
    • changedInput schema / properties / emphasis / description
      Previous value: -"Presence of 강조사항(EoM)"New value: +"Has 강조사항(EoM)"
    • changedInput schema / properties / fields / description
      Previous value: -"Field width of each company row. full(default)=every field, incl. the 본문 산문 (의견근거·강조·기타·계속기업 text, KAM 제목 배열, ICFR 근거·취약점, applicability) — averages ~3,957 bytes/row. brief=list axis only, the same set as the 뷰어 스크리너 표: corp_name·corp_code·stock_code·bsns_year·market·fs_div·auditor·audit_opinion·going_concern·emphasis·other_matter·icfr{type,opinion}·kam_count·rcept_no (~318 bytes/row, 12x smaller — a whole 목록 fits in one response). Use brief for list/count asks and switch to full (or get_audit_report/get_internal_control) once a company is picked. coverage·breakdown·count·truncated are identical in both."New value: +"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."
    • changedInput schema / properties / fs_div / description
      Previous value: -"재무제표 구분. CFS=연결, OFS=별도. 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company), so row count ≠ company count — dedupe by corp_code when counting companies. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."New value: +"Default both = 연결(CFS)+별도(OFS) as SEPARATE rows (의견·강조·KAM·ICFR held per report) → ≤2 rows/company; dedupe corp_code to count companies."
    • changedInput schema / properties / going_concern / description
      Previous value: -"계속기업 불확실성 mentioned in the 감사보고서"New value: +"감사보고서 mentions 계속기업 불확실성"
    • changedInput schema / properties / icfr_material_weakness / description
      Previous value: -"A 내부회계관리제도 중요한 취약점 exists"New value: +"Has 내부회계관리제도 중요한 취약점"
    • changedInput schema / properties / icfr_opinion / description
      Previous value: -"내부회계관리제도 의견. adverse=부적정, disclaimer=의견거절 (covers both 감사 의견거절 and 검토 검토결론 불표명 — use icfr_type to tell 감사 from 검토), modified=변형 (everything other than 적정). 한글 values also accepted."New value: +"내부회계관리제도 의견: adverse=부적정, disclaimer=의견거절 (감사 의견거절 + 검토 검토결론 불표명 — split by row icfr.type), modified=변형 (≠ 적정)."
    • changedInput schema / properties / include_reference / description
      Previous value: -"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."New value: +"Attach the 적용시기 참조표 (KAM·ICFR·XBRL 주석·자금부정통제 phase-in schedule, ~4.8KB) — only when 법령 근거 text is needed."
    • changedInput schema / properties / industry / description
      Previous value: -"업종 — financial=금융 (KSIC 64~66: 은행·보험·금융지주 etc.), non_financial=비금융. The 주석 XBRL and ICFR 운영의무 thresholds differ between them. 한글 values (금융·비금융) also accepted."New value: +"업종: financial=금융 (KSIC 64~66: 은행·보험·금융지주…), non_financial=비금융; 주석 XBRL·ICFR 운영의무 thresholds differ."
    • changedInput schema / properties / kam / description
      Previous value: -"Whether 핵심감사사항(KAM) are present"New value: +"Has 핵심감사사항(KAM)"
    • changedInput schema / properties / kam_none_declared / description
      Previous value: -"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"New value: +"감사보고서 explicitly declares '보고할 핵심감사사항 없음' (kam_count=0 then normal); false = undeclared or unknown"
    • changedInput schema / properties / kam_required / description
      Previous value: -"Whether THIS report had to carry a KAM section: 적용시기 rules (규모·연도·시장) AND opinion ≠ 의견거절 (감사기준서 705 문단 29 — a 의견거절 report carries no KAM section; 한정·부적정 still must). false = outside the phase-in OR 의견거절 (those rows carry kam_exempt_reason)"New value: +"This report had to carry KAM: 적용시기 (규모·연도·시장) met AND opinion ≠ 의견거절 (감사기준서 705 문단 29; 한정·부적정 still must). false = outside phase-in, or 의견거절 (row carries kam_exempt_reason)"
    • changedInput schema / properties / limit / description
      Previous value: -"Cap on **rows** returned (SQL LIMIT applies to rows, not companies — with the default fs_div=both a company can occupy 2 rows, so the number of distinct companies shown is smaller than this cap). When the list is cut here, truncated=true while count still reports the full row count. To count companies, dedupe companies[] by corp_code — and if truncated=true that count is a floor, not the answer: narrow the scope (market·fs_div·asset_bucket) until truncated=false."New value: +"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."
    • changedInput schema / properties / market / description
      Previous value: -"시장구분. Default all = 상장사 (유가 kospi·코스닥 kosdaq·코넥스 konex — by FY말 market). unlisted = 비상장(사업보고서): rows whose FY말 market is E — 사업보고서를 내는 비상장사 plus 상장사의 상장 전·폐지 후 연도. all never includes unlisted, so for 비상장 (or 상장+비상장) query market=unlisted separately. unlisted is answered only where the server has the 비상장 dataset public (otherwise a validation:market error; on such a server all may still carry 상장 전·폐지 후 연도 rows as E). 감사보고서만 내는 외감 비상장사 (no 사업보고서) are in neither — use get_audit_profile per company. Uppercase (KOSDAQ) and 한글 (코스닥/유가증권/코넥스/전체/비상장) aliases accepted."New value: +"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."
    • changedInput schema / properties / opinion / description
      Previous value: -"감사의견 filter. unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견 (everything other than 적정: 한정/부적정/의견거절). 한글 values (적정·의견거절 etc.) also accepted."New value: +"감사의견: unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견 (한정·부적정·의견거절)."
    • changedInput schema / properties / other_matter / description
      Previous value: -"Presence of 기타사항(OM)"New value: +"Has 기타사항(OM)"
    • changedInput schema / properties / xbrl_required / description
      Previous value: -"Whether 재무제표 주석 XBRL was mandatory for that year (적용시기 rules). Populated only after the backfill"New value: +"재무제표 주석 XBRL mandatory that year (적용시기)"
    • changedInput schema / properties / year / anyOf
      Previous value: -[
      -  {
      -    "description": "결산 사업연도 (회계연도, 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).",
      -    "minimum": 2015,
      -    "type": "integer"
      -  },
      -  {
      -    "items": {
      -      "description": "결산 사업연도 (회계연도, 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).",
      -      "minimum": 2015,
      -      "type": "integer"
      -    },
      -    "maxItems": 10,
      -    "minItems": 1,
      -    "type": "array"
      -  }
      -]New value: +[
      +  {
      +    "minimum": 2015,
      +    "type": "integer"
      +  },
      +  {
      +    "items": {
      +      "minimum": 2015,
      +      "type": "integer"
      +    },
      +    "maxItems": 10,
      +    "minItems": 1,
      +    "type": "array"
      +  }
      +]
    • changedInput schema / properties / year / description
      Previous value: -"결산 사업연도 (회계연도, fiscal year) — the number you pass IS the 사업연도=회계연도=결산연도. Do NOT subtract it; pass it as-is. Only tools where year is optional auto-select the latest published year when omitted (if year is required in the tool you are calling, it cannot be omitted — confirm the year actually used via the response `year` field).e.g. 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → all 2025 (결산일 2025-12-31). Convert ONLY when the user explicitly names the 공시(제출)연도, as in '○○년에 공시된 보고서': a 12월 결산법인 files by the end of March of the following year.(e.g. '2026년에 공시된 사업보고서' → 2025). Otherwise the input is ALWAYS on a 사업연도=회계연도=결산연도 basis. Relative expressions ('최근 N개년'·'작년' and the like) count back from the most recent PUBLISHED 사업연도 as of today: a 사업보고서 is filed within about 90 days after 결산 (12월 결산 법인 → March of the following year), so from April the latest is last year, and in Jan~Mar it is the year before last. e.g. if today is 2026-06 the latest is FY2025 → '최근 5개년'=2021~2025 (NOT 2020~2024). Supported floor is FY2015 (the range OpenDART's structured APIs cover) — 2014 and earlier are rejected. A 비12월 결산 (3·6·9월) 법인 may have its latest 사업연도 equal to the calendar year (e.g. a 3월 결산 company from July onward). Accepts a single year OR an array (e.g. [2024, 2025], max 10) for a multi-year query — rows then carry their own bsns_year and `coverage` returns a per-year breakdown (coverage.years[])."New value: +"결산 사업연도 (회계연도·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[]."
  3. Changed2 schema fields changed
    • changedInput schema / properties / market / description
      Previous value: -"시장구분. Default all = every 상장사 (유가 kospi·코스닥 kosdaq·코넥스 konex are all loaded). Uppercase (KOSDAQ) and 한글 (코스닥/유가증권/코넥스/전체) aliases accepted."New value: +"시장구분. Default all = 상장사 (유가 kospi·코스닥 kosdaq·코넥스 konex — by FY말 market). unlisted = 비상장(사업보고서): rows whose FY말 market is E — 사업보고서를 내는 비상장사 plus 상장사의 상장 전·폐지 후 연도. all never includes unlisted, so for 비상장 (or 상장+비상장) query market=unlisted separately. unlisted is answered only where the server has the 비상장 dataset public (otherwise a validation:market error; on such a server all may still carry 상장 전·폐지 후 연도 rows as E). 감사보고서만 내는 외감 비상장사 (no 사업보고서) are in neither — use get_audit_profile per company. Uppercase (KOSDAQ) and 한글 (코스닥/유가증권/코넥스/전체/비상장) aliases accepted."
    • changedInput schema / properties / market / enum
      Previous value: -[
      -  "kospi",
      -  "kosdaq",
      -  "konex",
      -  "all"
      -]New value: +[
      +  "kospi",
      +  "kosdaq",
      +  "konex",
      +  "all",
      +  "unlisted"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / fs_div / description
      Previous value: -"재무제표 구분. CFS=연결, OFS=별도 (aliases consolidated/separate·연결/별도 also accepted). 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company), so row count ≠ company count — dedupe by corp_code when counting companies."New value: +"재무제표 구분. CFS=연결, OFS=별도. 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company), so row count ≠ company count — dedupe by corp_code when counting companies. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."
  5. Changed1 schema field changed
    • changedInput schema / properties / kam_required / description
      Previous value: -"Whether KAM disclosure was mandatory by 규모·연도·시장 (적용시기 rules). kam=false & kam_required=true & kam_none_declared=false = suspected omission"New value: +"Whether THIS report had to carry a KAM section: 적용시기 rules (규모·연도·시장) AND opinion ≠ 의견거절 (감사기준서 705 문단 29 — a 의견거절 report carries no KAM section; 한정·부적정 still must). false = outside the phase-in OR 의견거절 (those rows carry kam_exempt_reason)"
  6. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Cap on companies returned. When the list is cut here, truncated=true while count still reports the full row count"New value: +"Cap on **rows** returned (SQL LIMIT applies to rows, not companies — with the default fs_div=both a company can occupy 2 rows, so the number of distinct companies shown is smaller than this cap). When the list is cut here, truncated=true while count still reports the full row count. To count companies, dedupe companies[] by corp_code — and if truncated=true that count is a floor, not the answer: narrow the scope (market·fs_div·asset_bucket) until truncated=false."
  7. Changed4 schema fields changed
    • addedInput schema / properties / year / anyOf
      Added value: +[
      +  {
      +    "description": "결산 사업연도 (회계연도, 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).",
      +    "minimum": 2015,
      +    "type": "integer"
      +  },
      +  {
      +    "items": {
      +      "description": "결산 사업연도 (회계연도, 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).",
      +      "minimum": 2015,
      +      "type": "integer"
      +    },
      +    "maxItems": 10,
      +    "minItems": 1,
      +    "type": "array"
      +  }
      +]
    • changedInput schema / properties / year / description
      Previous value: -"결산 사업연도 (회계연도, 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)."New value: +"결산 사업연도 (회계연도, fiscal year) — the number you pass IS the 사업연도=회계연도=결산연도. Do NOT subtract it; pass it as-is. Only tools where year is optional auto-select the latest published year when omitted (if year is required in the tool you are calling, it cannot be omitted — confirm the year actually used via the response `year` field).e.g. 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → all 2025 (결산일 2025-12-31). Convert ONLY when the user explicitly names the 공시(제출)연도, as in '○○년에 공시된 보고서': a 12월 결산법인 files by the end of March of the following year.(e.g. '2026년에 공시된 사업보고서' → 2025). Otherwise the input is ALWAYS on a 사업연도=회계연도=결산연도 basis. Relative expressions ('최근 N개년'·'작년' and the like) count back from the most recent PUBLISHED 사업연도 as of today: a 사업보고서 is filed within about 90 days after 결산 (12월 결산 법인 → March of the following year), so from April the latest is last year, and in Jan~Mar it is the year before last. e.g. if today is 2026-06 the latest is FY2025 → '최근 5개년'=2021~2025 (NOT 2020~2024). Supported floor is FY2015 (the range OpenDART's structured APIs cover) — 2014 and earlier are rejected. A 비12월 결산 (3·6·9월) 법인 may have its latest 사업연도 equal to the calendar year (e.g. a 3월 결산 company from July onward). Accepts a single year OR an array (e.g. [2024, 2025], max 10) for a multi-year query — rows then carry their own bsns_year and `coverage` returns a per-year breakdown (coverage.years[])."
    • removedInput schema / properties / year / minimum
      Removed value: -2015
    • removedInput schema / properties / year / type
      Removed value: -"integer"
  8. Changed1 schema field changed
    • addedInput schema / properties / fields
      Added value: +{
      +  "default": "full",
      +  "description": "Field width of each company row. full(default)=every field, incl. the 본문 산문 (의견근거·강조·기타·계속기업 text, KAM 제목 배열, ICFR 근거·취약점, applicability) — averages ~3,957 bytes/row. brief=list axis only, the same set as the 뷰어 스크리너 표: corp_name·corp_code·stock_code·bsns_year·market·fs_div·auditor·audit_opinion·going_concern·emphasis·other_matter·icfr{type,opinion}·kam_count·rcept_no (~318 bytes/row, 12x smaller — a whole 목록 fits in one response). Use brief for list/count asks and switch to full (or get_audit_report/get_internal_control) once a company is picked. coverage·breakdown·count·truncated are identical in both.",
      +  "enum": [
      +    "full",
      +    "brief"
      +  ],
      +  "type": "string"
      +}
  9. Changed2 schema fields changed
    • changedInput schema / properties / fs_div / description
      Previous value: -"재무제표 구분. CFS=연결, OFS=별도 (aliases consolidated/separate·연결/별도 also accepted). 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company)."New value: +"재무제표 구분. CFS=연결, OFS=별도 (aliases consolidated/separate·연결/별도 also accepted). 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company), so row count ≠ company count — dedupe by corp_code when counting companies."
    • changedInput schema / properties / limit / description
      Previous value: -"Cap on companies returned"New value: +"Cap on companies returned. When the list is cut here, truncated=true while count still reports the full row count"
  10. Changed18 schema fields changed
    • changedInput schema / properties / asset_bucket / description
      Previous value: -"전기말 자산총액(별도) 규모 버킷. gte_2tn=2조이상, gte_500bn=5천억이상, gte_100bn=1천억이상, lt_100bn=1천억미만. 한글값도 허용."New value: +"Size bucket by 전기말 자산총액(별도). gte_2tn=2조이상, gte_500bn=5천억이상, gte_100bn=1천억이상, lt_100bn=1천억미만. 한글 values also accepted."
    • changedInput schema / properties / auditor / description
      Previous value: -"감사인명 부분일치 (예: 삼정/한영/안진/삼일)"New value: +"Partial match on 감사인명 (e.g. 삼정/한영/안진/삼일)"
    • changedInput schema / properties / emphasis / description
      Previous value: -"강조사항(EoM) 유무"New value: +"Presence of 강조사항(EoM)"
    • changedInput schema / properties / fs_div / description
      Previous value: -"재무제표 구분. CFS=연결, OFS=별도(consolidated/separate·연결/별도 별칭도 허용). 별도·연결은 각각 별개 행(의견·강조·KAM·ICFR 모두 별도/연결 따로). both=둘 다(회사가 최대 2행)."New value: +"재무제표 구분. CFS=연결, OFS=별도 (aliases consolidated/separate·연결/별도 also accepted). 별도 and 연결 are SEPARATE rows (의견·강조·KAM·ICFR are all held per 별도/연결). both = both (up to 2 rows per company)."
    • changedInput schema / properties / going_concern / description
      Previous value: -"감사보고서 계속기업 불확실성 언급"New value: +"계속기업 불확실성 mentioned in the 감사보고서"
    • changedInput schema / properties / icfr_material_weakness / description
      Previous value: -"내부회계관리제도 중요한 취약점 존재"New value: +"A 내부회계관리제도 중요한 취약점 exists"
    • changedInput schema / properties / icfr_opinion / description
      Previous value: -"내부회계관리제도 의견. adverse=부적정, disclaimer=의견거절(감사 의견거절·검토 검토결론 불표명 모두 — 감사/검토 구분은 icfr_type), modified=변형(적정이 아닌 전부). 한글값도 허용."New value: +"내부회계관리제도 의견. adverse=부적정, disclaimer=의견거절 (covers both 감사 의견거절 and 검토 검토결론 불표명 — use icfr_type to tell 감사 from 검토), modified=변형 (everything other than 적정). 한글 values also accepted."
    • changedInput schema / properties / include_reference / description
      Previous value: -"적용시기 참조표(KAM·ICFR·XBRL 주석·자금부정통제 단계적 도입 일정 전문, 약 4.8KB) 포함 여부. 각 회사 행의 applicability 필드에 회사별 판정은 이미 실리므로, 판정의 법령 근거 원문이 필요할 때만 true."New value: +"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."
    • changedInput schema / properties / industry / description
      Previous value: -"업종 — financial=금융(KSIC 64~66: 은행·보험·금융지주 등), non_financial=비금융. 주석 XBRL·ICFR 운영의무 기준이 갈림. 한글값(금융·비금융)도 허용."New value: +"업종 — financial=금융 (KSIC 64~66: 은행·보험·금융지주 etc.), non_financial=비금융. The 주석 XBRL and ICFR 운영의무 thresholds differ between them. 한글 values (금융·비금융) also accepted."
    • changedInput schema / properties / kam / description
      Previous value: -"핵심감사사항(KAM) 보유 여부"New value: +"Whether 핵심감사사항(KAM) are present"
    • changedInput schema / properties / kam_none_declared / description
      Previous value: -"감사보고서의 '보고할 핵심감사사항 없음' 명시 선언 여부. true=선언(kam_count=0 이 정상), false=미선언·미상. kam_count=0 과 결합해 '진짜 누락 의심'과 '선언된 없음'을 구분"New value: +"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"
    • changedInput schema / properties / kam_required / description
      Previous value: -"규모·연도·시장 기준 KAM 기재 의무 대상 여부(적용시기 규칙). kam=false & kam_required=true & kam_none_declared=false 면 누락 의심"New value: +"Whether KAM disclosure was mandatory by 규모·연도·시장 (적용시기 rules). kam=false & kam_required=true & kam_none_declared=false = suspected omission"
    • changedInput schema / properties / limit / description
      Previous value: -"반환 회사 수 상한"New value: +"Cap on companies returned"
    • changedInput schema / properties / market / description
      Previous value: -"시장구분. 기본 all=전체 상장사(유가 kospi·코스닥 kosdaq·코넥스 konex 모두 적재됨). 대문자(KOSDAQ)·한글(코스닥/유가증권/코넥스/전체) 별칭 허용."New value: +"시장구분. Default all = every 상장사 (유가 kospi·코스닥 kosdaq·코넥스 konex are all loaded). Uppercase (KOSDAQ) and 한글 (코스닥/유가증권/코넥스/전체) aliases accepted."
    • changedInput schema / properties / opinion / description
      Previous value: -"감사의견 필터. unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견(적정이 아닌 전부: 한정/부적정/의견거절). 한글값(적정·의견거절 등)도 허용."New value: +"감사의견 filter. unqualified=적정, qualified=한정, adverse=부적정, disclaimer=의견거절, modified=변형의견 (everything other than 적정: 한정/부적정/의견거절). 한글 values (적정·의견거절 etc.) also accepted."
    • changedInput schema / properties / other_matter / description
      Previous value: -"기타사항(OM) 유무"New value: +"Presence of 기타사항(OM)"
    • changedInput schema / properties / xbrl_required / description
      Previous value: -"해당 연도 재무제표 주석 XBRL 의무 대상 여부(적용시기 규칙). 백필 후에만 채워짐"New value: +"Whether 재무제표 주석 XBRL was mandatory for that year (적용시기 rules). Populated only after the backfill"
    • changedInput schema / properties / year / description
      Previous value: -"결산 사업연도(회계연도, fiscal year) — 입력한 숫자가 곧 사업연도=회계연도=결산연도다. 빼지 말고 그대로 넣는다. year 가 선택 입력인 도구만 생략 시 최신 공시 연도를 자동 지정한다(이 도구에서 year 가 required 면 생략 불가 — 실제 사용 연도는 응답 year 필드로 확인).예: 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → 모두 2025(결산일 2025-12-31). 환산은 사용자가 '○○년에 공시(제출)된 보고서'처럼 공시(제출)연도를 명시한 경우에만 수행: 12월 결산법인은 익년도 3월말까지 공시함.(예: '2026년에 공시된 사업보고서' → 2025). 그 밖에는 항상 입력값은 사업연도=회계연도=결산연도 기준. 상대표현('최근 N개년'·'작년' 등)은 '오늘' 기준 가장 최근 '공시된' 사업연도부터 역순으로 센다: 사업보고서는 결산 후 약 90일 내(12월 결산 법인 → 익년 3월) 공시되므로 4월 이후면 최신=작년, 1~3월이면 최신=재작년. 예: 오늘이 2026-06이면 최신=FY2025 → '최근 5개년'=2021~2025 (2020~2024 아님). 지원 하한 FY2015(OpenDART 정형 API 제공 범위) — 2014 이하는 거부된다. 비12월 결산(3·6·9월) 법인은 최신 사업연도가 달력연도와 같을 수 있다(예: 3월 결산은 7월부터 당해연도)."New value: +"결산 사업연도 (회계연도, 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)."
  11. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds substantial non-obvious behavior: coverage.note must be read before concluding a null result (empty ≠ nonexistent), fs_div=both yields up to two rows per company requiring corp_code dedupe, breakdown ignores non-baseline filters, and there is a daily row cap per token. These are exactly the traps that would cause a wrong answer, not restatements of the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The [Purpose]/[Usage]/[Response]/[Rules] headers front-load the essential framing and there is little filler. However, the [Rules] section is compressed into pseudo-formulas ("kam=false+kam_required=true+kam_none_declared=false") that trade readability for density, and the bilingual prose adds some scanning cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter search tool with no output schema, the definition carries most of the necessary burden: filter semantics, the brief/full row contents, output market letters (Y/K/N/E), fs_div KOREAN labels, and the null-result interpretation rule. The remaining gap is that the overall response envelope (coverage, breakdown, count, truncated, applicability) is only alluded to rather than described, so an agent must infer the shape of the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding cross-parameter meaning the schema does not carry — fields="brief" is the list/count path while full is for a picked company, year accepts an array for multi-year with per-year coverage.years[], and fs_div=both is a row-multiplication caveat rather than a simple enum. A few rules (e.g. the kam/ kam_required / kam_none_declared triple) are stated so telegraphically that they are hard to apply without re-reading the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource: it finds listed/unlisted companies by audit-report conditions *without* naming a company. It also carves out the sibling boundary explicitly — detail via get_audit_profile/get_internal_control, original text via get_audit_report — so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The [Usage] block gives four concrete natural-language-to-parameter mappings (opinion="disclaimer" + market="kospi", fields="brief" for list/count, year=[2024,2025] for multi-year, market="unlisted" for private filers), and [Purpose] names the alternatives for detail and full-text needs. When-to-use and when-to-go-elsewhere are both covered.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources