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 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

NameRequiredDescriptionDefault
corpNo회사명/종목코드/corp_code — corp+year required without rcept_no; locates the 사업보고서 (비상장: 감사보고서 F 단독공시 fallback)
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).
fs_divNoDefault both = 연결(CFS)+별도(OFS) → reports[] up to 2 entries; reading only the first drops an axis.
refreshNoBypass cache; re-collect (corp+year only)
rcept_noNo접수번호 instead of corp+year (사업보고서 or 감사보고서 F 단독공시) — resolved·applicability then null.
sectionsNoSection 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.
truncate_atNoMax chars per included section body (default 8,000; excess cut; out-of-range clamped). truncated=true → check char_count, re-call higher.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedInput schema / properties / corp / description
      Previous 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"New value: +"회사명/종목코드/corp_code — corp+year required without rcept_no; locates the 사업보고서 (비상장: 감사보고서 F 단독공시 fallback)"
    • changedInput schema / properties / fs_div / description
      Previous value: -"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). With both, reports[] holds 2 entries — reading only the first drops an axis. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."New value: +"Default both = 연결(CFS)+별도(OFS) → reports[] up to 2 entries; reading only the first drops an axis."
    • changedInput schema / properties / rcept_no / description
      Previous value: -"접수번호 given directly (instead of corp/year) — parses that filing live (never cached) and returns resolved/applicability as null. A 감사보고서제출(F) 단독공시 works too."New value: +"접수번호 instead of corp+year (사업보고서 or 감사보고서 F 단독공시) — resolved·applicability then null."
    • changedInput schema / properties / refresh / description
      Previous value: -"Bypass the cache and re-collect (corp+year path only)"New value: +"Bypass cache; re-collect (corp+year only)"
    • changedInput schema / properties / sections / description
      Previous value: -"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."New value: +"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."
    • 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. Applies only to sections whose body is included — see `sections`."New value: +"Max chars per included section body (default 8,000; excess cut; out-of-range clamped). truncated=true → check char_count, re-call higher."
    • 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), 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)."
  2. Changed1 schema field changed
    • changedInput schema / properties / fs_div / description
      Previous value: -"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). Aliases consolidated/separate·연결/별도 also accepted. With both, reports[] holds 2 entries — reading only the first drops an axis."New value: +"both (default — 연결+별도 both)/연결(CFS)/별도(OFS). With both, reports[] holds 2 entries — reading only the first drops an axis. Aliases consolidated/separate·연결/별도 also accepted (case·spaces ignored)."
  3. 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`."
  4. 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"
  5. 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)."
  6. First observed

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description does not contradict them, so the safety profile is effectively transparent. The description adds genuine behavioral detail beyond annotations: body_omitted:true stubs are re-requestable rather than absent, refresh bypasses the cache, truncation is clamped and reportable via truncated=true, and fs_div=both can return up to two reports where reading only the first drops an axis. The omission is any statement of auth requirements or failure modes; with annotations carrying the safety burden, a 3 is fair.

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?

Front-loaded with a one-sentence purpose, then clean [Purpose]/[Usage]/[Response]/[Rules] blocks, so an agent can skim to the relevant block. It is dense, though — the Korean/English code-switching and long schema-side parentheticals mean some Rules entries (F 단독공시 caveat) restate what the parameter descriptions already cover, costing a little signal.

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?

With 7 optional parameters and no output schema, the description carries the return-shape load and does so: sections[].key, the opinion enum (적정/한정/부적정/의견거절), fs_label, source_note, correction_note, and kam.count expectations are all explained. The one gap is that it never says what happens when corp+year resolve to nothing or how the corp fallback to F 단독공시 is signalled to the caller.

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, but the description adds real semantics on top: sections="summary" is defined as the finding-paragraph subset with a conditional basis rule, truncate_at is framed as a retry lever rather than a raw cap, and fs_div's 'reading only the first drops an axis' warning is operational advice absent from the schema. What it does not add is guidance on when to prefer rcept_no over corp+year beyond what the schema already states.

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 returns 감사보고서 body paragraphs structured section-by-section, listing the exact section keys (감사의견·감사의견근거·KAM·강조사항·기타사항·계속기업가정불확실성). It explicitly distinguishes itself from two siblings, routing structured fact summaries to get_audit_profile and ICFR detail to get_internal_control, so the agent can pick this tool without opening the 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 three concrete request-to-parameter mappings (KAM 문단 전문, 별도 의견거절 근거 원문 with fs_div="OFS", 발견사항만 with sections="summary"), plus the escalation path (truncate_at 상향) when results are cut. The [Purpose] block names the two alternatives and the conditions that select them, and [Rules] adds exclusion logic (재무제표·주석 수치는 download_document).

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