Skip to main content
Glama

get_audit_report

Read-onlyIdempotent

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 with none_declared: declared "없음" = normal; undeclared = 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

TableJSON Schema
NameRequiredDescriptionDefault
corpNo회사명/종목코드/corp_code (required when rcept_no is absent). corp+year auto-locates the 사업보고서, falling back to the 감사보고서 F 단독공시 for unlisted companies; results on that path are cached
yearNo결산 사업연도 (회계연도, fiscal year) — the number you pass IS the 사업연도=회계연도=결산연도. Do NOT subtract it; pass it as-is. Only tools where year is optional auto-select the latest published year when omitted (if year is required in the tool you are calling, it cannot be omitted — confirm the year actually used via the response `year` field).e.g. 'FY2025'·'2025년 재무제표'·'2025 사업보고서'·'2025 회계연도' → all 2025 (결산일 2025-12-31). Convert ONLY when the user explicitly names the 공시(제출)연도, as in '○○년에 공시된 보고서': a 12월 결산법인 files by the end of March of the following year.(e.g. '2026년에 공시된 사업보고서' → 2025). Otherwise the input is ALWAYS on a 사업연도=회계연도=결산연도 basis. Relative expressions ('최근 N개년'·'작년' and the like) count back from the most recent PUBLISHED 사업연도 as of today: a 사업보고서 is filed within about 90 days after 결산 (12월 결산 법인 → March of the following year), so from April the latest is last year, and in Jan~Mar it is the year before last. e.g. if today is 2026-06 the latest is FY2025 → '최근 5개년'=2021~2025 (NOT 2020~2024). Supported floor is FY2015 (the range OpenDART's structured APIs cover) — 2014 and earlier are rejected. A 비12월 결산 (3·6·9월) 법인 may have its latest 사업연도 equal to the calendar year (e.g. a 3월 결산 company from July onward).
fs_divNoboth (default — 연결+별도 both)/연결(CFS)/별도(OFS). Aliases consolidated/separate·연결/별도 also accepted. With both, reports[] holds 2 entries — reading only the first drops an axis.
refreshNoBypass the cache and re-collect (corp+year path only)
rcept_noNo접수번호 given directly (instead of corp/year) — parses that filing live (never cached) and returns resolved/applicability as null. A 감사보고서제출(F) 단독공시 works too.
sectionsNoWhich section BODIES to include. full (default) = every section. summary = the paragraphs that carry a finding — 의견(opinion)·KAM·강조(emphasis)·기타(other_matter)·계속기업(going_concern), plus 의견근거(basis) ONLY when the opinion is not 적정 (for 적정 that paragraph is boilerplate: p50 575 bytes with almost no variance across 27,067 reports; for 한정/부적정/의견거절 it is the reason itself, 2.5~3.1x longer). Or pass an explicit key array, e.g. ["opinion","kam"]; [] = 목차만. Keys: opinion·basis·going_concern·kam·emphasis·other_matter·other_information·mgmt_resp·auditor_resp·other_reporting. Unselected sections are NOT dropped — they stay as {key, heading, char_count, body_omitted:true} so you can re-request them. The structured fields (opinion·kam.matters titles·emphasis·other_matters·going_concern_mentioned) are ALWAYS returned regardless of this argument.
truncate_atNoMax length per section body (default 8,000 chars; the excess is cut, out-of-range values are clamped to the bound). On truncated=true check char_count and re-call with a higher value. Applies only to sections whose body is included — see `sections`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / sections
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "full",
      +        "summary"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "enum": [
      +          "opinion",
      +          "basis",
      +          "going_concern",
      +          "kam",
      +          "emphasis",
      +          "other_matter",
      +          "other_information",
      +          "mgmt_resp",
      +          "auditor_resp",
      +          "other_reporting"
      +        ],
      +        "type": "string"
      +      },
      +      "maxItems": 10,
      +      "type": "array"
      +    }
      +  ],
      +  "description": "Which section BODIES to include. full (default) = every section. summary = the paragraphs that carry a finding — 의견(opinion)·KAM·강조(emphasis)·기타(other_matter)·계속기업(going_concern), plus 의견근거(basis) ONLY when the opinion is not 적정 (for 적정 that paragraph is boilerplate: p50 575 bytes with almost no variance across 27,067 reports; for 한정/부적정/의견거절 it is the reason itself, 2.5~3.1x longer). Or pass an explicit key array, e.g. [\"opinion\",\"kam\"]; [] = 목차만. Keys: opinion·basis·going_concern·kam·emphasis·other_matter·other_information·mgmt_resp·auditor_resp·other_reporting. Unselected sections are NOT dropped — they stay as {key, heading, char_count, body_omitted:true} so you can re-request them. The structured fields (opinion·kam.matters titles·emphasis·other_matters·going_concern_mentioned) are ALWAYS returned regardless of this argument."
      +}
    • changedInput schema / properties / truncate_at / description
      Previous value: -"Max length per section body (default 8,000 chars; the excess is cut, out-of-range values are clamped to the bound). On truncated=true check char_count and re-call with a higher value"New value: +"Max length per section body (default 8,000 chars; the excess is cut, out-of-range values are clamped to the bound). On truncated=true check char_count and re-call with a higher value. Applies only to sections whose body is included — see `sections`."
  2. Changed4 schema fields changed
    • changedInput schema / properties / corp / description
      Previous value: -"회사명/종목코드/corp_code (required when rcept_no is absent)"New value: +"회사명/종목코드/corp_code (required when rcept_no is absent). corp+year auto-locates the 사업보고서, falling back to the 감사보고서 F 단독공시 for unlisted companies; results on that path are cached"
    • changedInput schema / properties / fs_div / description
      Previous value: -"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). Aliases consolidated/separate·연결/별도 also accepted."New value: +"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). Aliases consolidated/separate·연결/별도 also accepted. With both, reports[] holds 2 entries — reading only the first drops an axis."
    • changedInput schema / properties / rcept_no / description
      Previous value: -"접수번호 given directly (instead of corp/year). A 감사보고서제출(F) 단독공시 works too."New value: +"접수번호 given directly (instead of corp/year) — parses that filing live (never cached) and returns resolved/applicability as null. A 감사보고서제출(F) 단독공시 works too."
    • changedInput schema / properties / truncate_at / description
      Previous value: -"Max length per section body (default 8,000 chars; the excess is cut, out-of-range values are clamped to the bound)"New value: +"Max length per section body (default 8,000 chars; the excess is cut, out-of-range values are clamped to the bound). On truncated=true check char_count and re-call with a higher value"
  3. Changed6 schema fields changed
    • changedInput schema / properties / corp / description
      Previous value: -"회사명/종목코드/corp_code (rcept_no 없을 때 필수)"New value: +"회사명/종목코드/corp_code (required when rcept_no is absent)"
    • changedInput schema / properties / fs_div / description
      Previous value: -"both(기본·연결+별도 모두)/연결(CFS)/별도(OFS). consolidated/separate·연결/별도 별칭도 허용."New value: +"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). Aliases consolidated/separate·연결/별도 also accepted."
    • changedInput schema / properties / rcept_no / description
      Previous value: -"접수번호 직접 지정 (corp/year 대신). 감사보고서제출(F) 단독 공시도 가능."New value: +"접수번호 given directly (instead of corp/year). A 감사보고서제출(F) 단독공시 works too."
    • changedInput schema / properties / refresh / description
      Previous value: -"캐시 무시하고 강제 재수집 (corp+year 경로)"New value: +"Bypass the cache and re-collect (corp+year path only)"
    • changedInput schema / properties / truncate_at / description
      Previous value: -"섹션 본문 최대 길이 (기본 8,000자, 초과분 잘림, 범위 밖 값은 경계로 보정)"New value: +"Max length per section body (default 8,000 chars; the excess is cut, out-of-range values are clamped to the bound)"
    • 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)."
  4. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. The description meaningfully adds behavioral context beyond those: it explains the 'body_omitted:true' semantics (section exists but body not requested, not absent), disclosure rules about unlisted F 단독공시 legitimately lacking KAM, and the behavior of 'kam.count=0 with none_declared' (declared 없음 normal vs undeclared suspect). It also reveals cache behavior via refresh and rcept_no annotations, which is beyond the basic annotation hints. A small gap: it doesn't describe pagination or network failure behavior, but the added detail is substantial, so 4 is appropriate.

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

Conciseness5/5

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

The description is a model of structured front-loading: it opens with a one-sentence purpose summary with a bullet list, then uses labeled sections ([Purpose], [Usage], [Response], [Rules]) that each contain dense but relevant information. Every sentence earns its place — e.g., the rules section bundles the most decision-relevant operational caveats (body_omitted, none_declared, internal_control verdict-only) in compact form. There is no padding or repetition.

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

Completeness5/5

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

Given the tool's complexity (7 params, 10 section keys, conditional behaviors) and the fact that there is no output schema, the description is remarkably complete. It covers: what the response structure looks like (sections[].key, fs_label, source_note, correction_note), edge-case interpretations (kam.count=0 with none_declared), unlisted-company caveats, the body_omitted contract, and where to route other needs (download_document, get_internal_control). No output schema exists, so the description's response-structure coverage is essential and well done.

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 baseline is 3 per rubric. The description adds meaningful semantic value beyond the schema: it maps natural-language intent to parameters ('삼부토건 FY2024 별도 의견거절 근거 원문' → corp='삼부토건', year=2024, fs_div='OFS'), explains the sections argument's selection and body_omitted mechanics, and gives truncate_at usage guidance ('잘리면 truncate_at 상향'). It also clarifies the years semantics in the schema itself. This lifts it above baseline 3, though not to 5 because the schema already carries detailed per-parameter descriptions.

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 description states a specific verb ('returns'), a precise resource ('audit report body structured by paragraph'), and explicitly lists the section types ('감사의견·감사의견근거·KAM·강조사항·기타사항·계속기업가정불확실성'). It distinguishes itself from sibling tools by name ('get_audit_profile', 'get_internal_control'), so an agent can identify this tool as the verbatim-paragraph audit report tool.

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 description provides detailed, explicit when-to-use guidance: it contrasts with 'structured fact summaries' (get_audit_profile) and ICFR detail (get_internal_control), gives concrete query-to-parameter examples ('LG에너지솔루션 2024 KAM 문단 전문' → corp='LG에너지솔루션', year=2024), and includes conditional advice such as '발견사항만 → sections="summary"; 잘리면 truncate_at 상향'. This exceeds the bar for usage guidance.

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