Skip to main content
Glama

gongsi-mcp

투자 관점 DART MCP가 "이 회사 사도 되나"에 답한다면, gongsi-mcp 는 "이거 공시해야 하나, 언제까지, 안 하면 얼마"에 답합니다 — 근거 조문·계산식과 함께.

회사 이름도 인증키도 없이, 거래금액·자본·날짜·상장 여부만 말하면 됩니다. Claude 에 평소 말하듯 물으면 알아서 맞는 도구를 부릅니다. 공정거래위원회 기업집단 공시(대규모내부거래 · 기업집단현황 · 비상장사 중요사항)를 제출하는 사람을 위한 MCP 서버입니다.

npm version Node 22.13+ License: MIT

"이거 공시사항이야?"라는 전화를 받은 순간부터 점검을 통과할 때까지, 물어볼 사람이 없어도 혼자서 확신을 가질 수 있도록.


이렇게 씁니다

💬 "비상장 계열사에 80억 자금대여 의결했어 (자본총계 1,200억). 공시 대상이야? 기한은?"

공시 대상입니다. 기준금액 = min(100억, max(5억, 자본총계 1,200억 × 5%)) = 60억 ≤ 거래 80억. 이사회 의결일(7/22) 다음 날부터 7영업일 — 기한 7/31. 근거: 대규모내부거래 고시 §6①. 웹에 퍼진 "1일 이내"는 오정보입니다 — 고시 원문은 상장 3영업일 / 비상장 7영업일. 실제 공시 사례와 대조 검증된 계산입니다.

💬 "30억 내부거래 공시를 5일 늦게 냈어. 과태료 얼마 나와?"

예상 165만원. 산식 전문을 함께 드립니다: (기본금액 500만원 + 일수가산 50만원) × 거래금액 적용비율 60%(20억~40억 구간) = 기준금액 330만원 − 지연 7일 이하 감경 50% = 165만원 거래금액을 안 알려주시면 "이 값은 상한선(최대 275만원)"이라고 명시합니다 — 조용히 과대·과소 산정하지 않습니다.

💬 "기한 놓친 지 3일째인데 아직 공시 전이야. 지금 내면 뭐가 달라져?"

자진시정 골든타임(기한 다음 날부터 10영업일)이 아직 열려 있습니다 — 종료일·남은 영업일·면제 요건(신규 지정 30일 내, 사소한 부주의 등)을 알려드립니다. 골든타임이 지나도 지연 3일 이하는 75% 감경 구간이라, 하루라도 빨리 내는 게 유리하다는 계산까지.

위 세 답은 인증키 없이 나옵니다. 회사 자료(공시 원문·재무·계열사)를 조회하는 질문에는 무료 OpenDART 키가 필요합니다 — 30초 설치.

💬 "회사 이름은 말 못 해. 자본총계 1,200억에 계열사와 80억 자금거래인데 공시 대상이야? 이사회 날짜는 아직 안 잡혔어"

공시 대상입니다 — 기준금액 60억 ≤ 거래 80억. 회사명·인증키는 필요 없습니다. 공시기한은 이사회 의결일과 상장 여부를 알려주시면 계산합니다. 날짜가 없으니 지연 여부·과태료는 계산하지 않았습니다("기한 내"도 "지연"도 아닙니다). (0.3.0+ — 패키징한 설치본을 stdio 로 호출해 받은 응답: 대상 판정 완료 · 기한 미확정 · 과태료 없음)

💬 "비상장 계열사가 7월 22일 이사회에서 자금대여를 의결했어. 자본은 아직 확인 못 했어. 대규모내부거래라면 언제까지 공시해?"

대규모내부거래에 해당한다면 기한은 7/31 입니다 — 의결일 다음 날부터 비상장 7영업일(고시 §6①). 기한은 자본과 무관하게 계산되고, 대상 여부는 자본총계(또는 자본금)·금액이 없어 판정하지 않았습니다 — 두 계산의 상태를 따로 돌려주고, 더 필요한 입력을 "대상 판정용 / 기한 계산용"으로 나눠 알려줍니다. 실제 공시일까지 주면 지연일수·과태료도 계산하지만, 대상이 확정되지 않은 동안에는 "공시 대상으로 확정될 경우의 값"이라고 붙입니다. (0.3.0+)

💬 "자본총계 1200억인 비상장 계열사가 다른 계열사에 30 빌려주려고 해. 공시해야 돼?"

"30"에 단위가 없어 하나로 정해 단정하지 않고 해석별로 나눠 답합니다 — 기준금액 60억 기준으로 30억원이어도, 3,000만원이어도 대상이 아닙니다. 그리고 단위 확인을 요청합니다. (0.3.0+ — 합성 질문 종단 평가에서 받은 답변 요약)

💬 "우리 회사 6~7월 대규모내부거래 공시, 지연된 거 있는지 감사해줘"

해당 기간 공시 5건 전수 대조 완료 — 원본 접수일 vs 원문 이사회 의결일 기준 전부 기한 내입니다. 집단 단위 감사도 됩니다(실측: 삼성 67개 계열사 조인). 대규모내부거래 위반의 94~95%가 "기한" 유형(공정위 실측) — 이 도구가 잡는 게 바로 그것입니다.

💬 "기업집단현황공시에 적힌 거래내역이랑 대규모내부거래 공시를 대조해서, 공시 안 하고 넘어간 거래가 있는지 봐줘"

접수분만 보는 기한 감사가 원리상 못 하는 일 — 공시 자체가 없는 거래를 보는 — 의 유일한 경로입니다. 실제 제출된 연1회 공시 1건으로 돌린 결과: 자금 차입 3건은 전부 차입일 직전에 해당 유형 공시가 접수돼 있었습니다(건별 근접 대조 −5일·−4일·−2일) — 미공시 후보 0건. 상품·용역에서 연간 2,054.5억원 거래 1건이 남았지만 "미공시"라고 하지 않고 조건부 후보로 냅니다 — 이 유형의 공시의무는 상대방이 "자연인인 동일인이 단독으로 또는 친족과 합하여 20% 이상 출자한 계열회사"일 때만 성립하는데(법 §26①4호·령 §33②) 지분 데이터가 없어 요건을 확인할 수 없기 때문입니다. 유가증권 36쌍도 공시 존재 4 / 기준 미달 24 / 판정 불가 8 로 갈라서 돌려줍니다 — 확인 못 한 8건을 "문제 없음"에 섞지 않습니다. 결과가 커서(실물 22만 자) 첫 응답은 요약·조치 목록·필수 경고만 오고, 판정 근거·caveat 전문은 read_detection_result 로 이어서 읽습니다 — 파일을 열 수 없는 대화창에서도 근거까지 닿습니다. (요약·상세 읽기는 0.3.0+)

💬 "기업집단현황공시 제출본, 숫자 틀린 데 없는지 점검해줘"

재무현황 표에서 불일치 3건을 찾았습니다 — 예: ○○사 자산총계가 유동+비유동 합계와 7.28억 차이. 각 건의 행·기대값·실제값을 제시하니 원본과 대조해 정정 여부를 판단하세요. DART 에 접수된 공시의 접수번호로 점검합니다 — 아직 제출하지 않은 엑셀·HWP 초안은 읽지 못합니다. (실제 제출된 공시에서 검출된 실측 사례, 오탐 0. 공시의무 위반 건수의 84%가 이 공시(J004)에서 나옵니다)

💬 "사모사채 발행 공시, 다른 회사는 어떻게 썼는지 5년치 선례 찾아줘"

3개사 선례를 원문과 함께 가져왔습니다. 어디까지 훑었는지(coverage)도 함께 — 훑지 않은 구간을 "없다"고 말하지 않습니다.

💬 "계열사 발행어음이 만기 자동연장됐는데, 이것도 공시해야 해?"

규칙만으로 판정하기 어려운 경계사례라, 공정위 공시 업무 매뉴얼(2026. 4.)의 해당 공식 문답을 원문 그대로 출처·연도와 함께 인용해 드립니다.

💬 "올해 우리가 언제 뭘 공시해야 하는지 달력으로 뽑아줘"

2026년에 기한이 도래하는 정기공시 19건을 D-day 와 함께 시간순으로. 기업집단현황공시 연1회는 법정 기한 5/31이 일요일이라 실제 기한은 6/1이고, 그날 1분기 공시·비상장 주요주주 지분변동까지 3건이 겹칩니다(연1회와 1분기는 같은 날이라 단일 서식 1건으로 함께 제출 — 두 번 내는 게 아닙니다). 분기 공시 항목의 기준일이 "공시기한일의 직전 분기"라는, 담당자가 가장 자주 틀리는 지점도 항목마다 붙습니다. 그리고 달력이 비었다고 공시할 게 없다는 뜻이 아니라고 먼저 말합니다 — 대규모내부거래 개별거래·비상장 중요사항 등 사유 발생형 4종은 애초에 달력에 올릴 수 없어 따로 알려드립니다.

💬 "2027년 5월 1일이 기한 말일이면 실제로 언제까지 내면 돼?"

5/4(화) 까지입니다. 5/1 노동절(2026-04-30 규정 개정으로 신설) · 5/2 일요일 · 5/3 대체공휴일을 건너뛴 결과 — 건너뛴 날짜와 사유·근거 조문을 동봉합니다. (모델의 달력 지식이 아니라 공식 공고와 대조 검증된 데이터로 계산)


Related MCP server: dart-mcp

왜 믿을 수 있나

공시 업무에서 틀린 답보다 무서운 건 근거 없는 확신입니다. 이 도구는 세 가지를 지킵니다.

  • 법령은 원문으로만 봅니다. 웹과 챗봇에 퍼진 "공시기한 1일 이내", "50억 기준"은 오정보입니다 — 고시 원문은 상장 3영업일 / 비상장 7영업일, 기준금액은 자본의 5%(5억~100억)입니다. 모든 답에 조문·계산식·입력값을 붙여 담당자가 직접 재확인할 수 있게 합니다. 규칙으로 안 풀리는 경계사례는 공정위 공식 문답 430건(2026. 4. 공시 업무 매뉴얼 포함)을 원문 그대로 인용합니다.

  • 날짜는 검증된 달력으로 셉니다. 기한 계산의 기초인 공휴일 데이터를 2026·2027년 공식 공고와 대조했습니다(노동절 신설·대체공휴일 반영). 모델의 기억이 아니라 데이터로 계산하고, 미검증 연도는 응답에 경고를 붙입니다.

  • 확인 못 한 것을 "없음"이라 말하지 않습니다. 검색이 잘리면 잘렸다고, 대사가 안 되면 안 됐다고, 지분 요건을 못 봤으면 "조건부 후보"라고 씁니다. 감사·판정 도구가 저지를 수 있는 최악의 실수 — 확인하지 않았는데 "문제 없음"이라 안심시키는 것 — 을 설계 단계에서 막았습니다. 설계 원칙 참고.

그리고 자동 제출은 만들지 않았습니다. 판정·근거·초안까지가 도구의 몫이고, 제출은 담당자의 몫입니다.


30초 설치

Node.js 22.13 이상만 있으면 됩니다. 대상 판정·기한·과태료·영업일 계산은 키 없이 바로 됩니다.

Claude Code

npx -y gongsi-mcp setup
claude mcp add gongsi-mcp -- npx -y gongsi-mcp

setup 마법사가 인증키를 실제 API 호출로 검증해 ~/.gongsi-mcp/.env 에 저장하고, 룰 엔진 자가검증(실제 공시 사례 재현)까지 돌립니다. 키가 아직 없으면 건너뛰고 나중에 다시 실행해도 됩니다.

Claude Desktop — 설정 파일에 아래를 추가하고 앱을 재시작합니다 (Windows %APPDATA%\Claude\claude_desktop_config.json, Mac ~/Library/Application Support/Claude/claude_desktop_config.json).

{
  "mcpServers": {
    "gongsi-mcp": {
      "command": "npx",
      "args": ["-y", "gongsi-mcp"],
      "env": { "DART_API_KEY": "OpenDART에서 발급받은 키" }
    }
  }
}

쓰려는 기능

필요한 키

공시의무 판정 · 기한 · 과태료 · 영업일 · 정기공시 달력 · 정정 리스크 · 공정위 문답

없음

공시 검색 · 원문 · 선례 · 재무 · 제출본 점검 · 기한 감사 · 미공시 탐지

DART_API_KEYOpenDART 무료 발급 (즉시, 일 20,000건)

기업집단 단위 조회·감사 (소속회사 전수 등)

위에 더해 EGROUP_API_KEY — 공공데이터포털 기업집단포털 API 활용신청

Cursor·MS 스토어판 Claude Desktop·Windows 에서 npx 를 못 찾는 경우·소스 클론은 설치 상세에 있습니다.


이런 사람에게

  • 기업집단 소속 회사의 공시담당자·공정거래팀 — 대상 판정, 기한 관리, 제출본 점검이 일상인 사람

  • "GPT한테 물어봤더니 이상한 말만 해서" 근거 조문이 있는 답이 필요한 사람

  • 물어볼 선배가 없는 신규 담당자 (공정위가 공식 지목한 위반 1순위 원인이 "신규 담당자 업무 미숙")

다른 도구가 낫다면 — 투자·재무 분석(재무비교·내부자거래·XBRL)은 투자 관점 DART MCP 가 훨씬 잘합니다(관점이 정반대라 같이 설치해도 됩니다). 거래소(KRX) 공시 규정 판정은 다루지 않습니다. 서식 자동 작성·자동 제출은 의도적으로 만들지 않았습니다.


한계 — 먼저 알고 쓰세요

  • 판정은 참고 정보입니다. 법령·고시 원문에 근거하지만 법률 자문·공정위 유권해석이 아닙니다. 최종 확인은 소관 부서에.

  • 아직 실무자 반복 사용으로 검증된 단계는 아닙니다. 실제 공시 사례 재현, 자동 테스트 743개, 합성 질문 종단 평가까지는 거쳤지만, 담당자가 현업에서 쓴 기록은 없습니다. 오답을 발견하면 Issues에 남겨 주세요.

  • 제출본 점검은 DART 에 접수된 공시만 봅니다(접수번호 입력). 아직 제출하지 않은 엑셀·HWP 초안은 읽지 못합니다.

  • DART 일반 조회 커버리지는 좁습니다 — 재무·검색·원문 등 범용 도구 6개뿐이고, XBRL·지분공시·임원보수 같은 투자 분석 엔드포인트는 없습니다.

  • 기업집단포털은 연 1회(매년 5/1 기준) 갱신이라 연중 신규 편입은 늦게 반영됩니다. 응답에 기준 시점을 명시합니다.

  • 대규모 기간·집단 전체 감사는 MCP 클라이언트의 60초 제한 때문에 분할 안내를 돌려줍니다(원문 캐시가 쌓이면 재감사는 빨라집니다). 집단 전수 미공시 탐지 같은 질문은 답까지 수 분이 걸릴 수 있습니다.

  • 미공시 탐지의 상세 결과는 서버 메모리에 30분만 보관됩니다(최대 4건). 만료·서버 재시작 뒤 근거를 다시 보려면 탐지를 다시 실행해야 합니다. 요청을 중간에 취소하면 결과를 보관하지 않지만 이미 시작된 DART 조회는 끝까지 진행돼 일일 호출 한도는 소모됩니다.

  • 공휴일 데이터는 2026·2027년분만 공식 공고와 대조했습니다. 다른 연도는 응답에 경고가 붙습니다.


기존 DART MCP와의 차별점

공개 DART MCP 5종 조사 결과(2026-07 기준) 전부 투자·재무 관점이었고, 공정위 기업집단 공시 판정을 다루는 것도, 공정위 기업집단포털 API를 쓰는 것도 없었습니다.

기능

일반 DART MCP

gongsi-mcp

관점

공시를 읽는 사람 (투자자)

공시를 제출하는 사람 (공시담당자·공정거래팀)

공정위 공시(J) 대상 판정 · 기준금액 계산

✅ 기준금액 min(100억, max(5억, 자본×5%)) 자동 계산 — 근거 조문·계산식·입력값 전부 동봉

공시기한 계산 (영업일·공휴일)

✅ 상장 3영업일 / 비상장 7영업일 등 유형별 기한. 공휴일 데이터는 2026·2027 공식 공고와 대조 검증 (노동절 신설·대체공휴일 반영)

예상 과태료 (별표9 + 고시 2종)

✅ 기본금액 + 일수가산 + 거래금액별 적용비율(50~100%) + 가중·감경 + 상한까지 — 산식 전문 제공, 미확정이면 "상한선" 명시

공정위 기업집단포털 결합

❌ (사용 사례 전무)

✅ 법인등록번호로 DART와 조인 — 계열사 전수 목록·집단 재무·동일인 정보

공정위 공식 Q&A 근거 제시

✅ 430건 (2026. 4. 공시 업무 매뉴얼 주요 사례 포함) — 규칙으로 판정 안 되는 경계사례에 공식 답변 인용, 폐지된 옛 기준은 경고

기한 감사 (접수일 vs 의결일)

✅ 원본 접수분과 원문 이사회 의결일을 전수 대조 — 지연 후보에 예상 과태료·자진시정 골든타임 동봉

정기공시 캘린더 · 미제출 점검

✅ 연간 마감일을 D-day·기준일·겹치는 날까지 계산 + 정기공시(J004·J009)를 실제로 냈는지 회사별 점검 — 무조건 의무라 접수분 부재가 곧 신호

미공시 교차탐지 (J004↔J001)

✅ 기업집단현황공시의 실제 거래내역을 대규모내부거래 공시와 대조 — 접수분만 보는 감사가 원리상 못 하는 "공시 자체가 없는 거래"를 신뢰도별 후보로

정정 이전 원본 보존

대부분 최종본만

✅ 검색 기본값이 원본 접수분 — 최종본만 보면 지연 판정 자체가 불가능하기 때문

제출본 정합성 자가점검

✅ 접수번호로 제출본을 재검산 — 자산=부채+자본 항등식 · 소계 재합산 · 부채비율 재계산 · 대표회사↔개별회사 문서 간 대사 (미제출 초안 파일은 대상 아님)

검색 절단·부분결과 명시

도구마다 다름

✅ 모든 응답에 diagnostics·coverage — 확인 못 한 범위를 "없음"으로 말하지 않음


도구 (17개)

0.3.0 기준입니다. 0.2.0 에는 read_detection_result 가 없어 16개입니다. 도구 이름을 외울 필요는 없습니다 — 질문하면 Claude 가 고릅니다.

판정·리스크 (공정위 공시 특화 — 이 서버에만 있는 것)

도구

설명

check_disclosure_duty

공시의무 판정 + 기한 계산 + 예상 과태료 — 근거 조문·계산식 동봉, 인증키 불필요. 거래 상황을 서술하면 유사 공정위 공식 Q&A도 근거로 첨부. 기한을 놓쳤으면 자진시정 10영업일 골든타임(면제 사유·남은 영업일)을 안내. 비상장사 중요사항은 대상회사 판정(자산 100억·동일인 지분 20%)과 무조건 공시 사유 7종까지. 입력이 일부 없어도 되는 계산(대상 판정·기한)부터 돌려주고 부족한 입력을 용도별로 알려줌 (0.3.0+)

assess_correction_risk

"정정하면 과태료 나온다?" — 커뮤니티 썰 진단. 과태료 고시의 위반행위 열거에 정정은 없다는 원문 근거와 함께, 오류 성격별(단순 오기·계산 실수·내용 누락·거짓 기재·거래 변경) 리스크와 골든타임 일정 제시

check_j004_consistency

기업집단현황공시(J004) 접수된 제출본 자가점검(접수번호 입력 — 미제출 초안 파일은 읽지 못함) — 재무표 항등식·소계 재합산·부채비율 재계산·단위 오류 힌트 + 대표회사↔개별회사 공시 대사. 대사가 수행되지 못한 건은 "정합"으로 세지 않고 별도 verdict 로 보고

audit_group_disclosures

기업집단·회사의 대규모내부거래(J001) 기한 감사 — 원본 접수일 vs 원문 의결일 대조, 지연 후보에 예상 과태료·자진시정 골든타임 동봉. 접수분만 보므로 미공시는 원리상 탐지하지 못한다고 응답에 고지

audit_periodic_disclosures

기업집단현황공시(J004)·하도급대금 결제조건(J009) 정기공시를 실제로 냈는지, 기한을 지켰는지 회사별 점검 — 기한이 달력으로 고정돼 있어 원문 없이 접수일만으로 판정합니다. J001 감사가 못 하는 미제출 탐지가 됩니다(무조건 의무라 접수분 부재 자체가 신호). 판정하지 않는 것들은 scope_caveats 로 전부 나열

detect_undisclosed_transactions

미공시 교차탐지 (J004↔J001) — 기업집단현황공시에 적힌 실제 거래내역을 대규모내부거래 공시와 대조해 "거래는 했는데 공시가 없는" 후보를 찾습니다. 자금 차입은 건별 차입일 근접 대조, 상품·용역은 상대방 지분요건(법 §26①4호) 미확인이라 조건부 후보, 유가증권 매트릭스는 연간 총액뿐이라 확인 대상까지 — 신뢰도별로 분리해 돌려주고 전부 "후보"이지 확정이 아닙니다. 결과가 커서 첫 응답은 크기 예산(24,576바이트 — 호스트 한도가 아니라 여유 있게 잡은 제품 상한) 안의 요약(조치 목록 앞부분·집계·필수 경고)이고, 근거 전문은 read_detection_result 로 읽습니다. 요청을 취소하면 결과를 보관하지 않습니다 (요약·취소 처리는 0.3.0+)

read_detection_result

(0.3.0+) 탐지 요약의 detail_access.result_id 를 입력 result_id 로 넣어 판정 근거·caveat 전문을 조각 단위로 이어 읽기 — 조각을 이어붙이면 원본과 정확히 같습니다. 키 불요, 탐지를 다시 돌리지 않음. ⚠️ 상세는 서버 프로세스 메모리에 30분만 보관(최대 4건) — 만료·서버 재시작 뒤에는 탐지를 다시 실행해야 합니다

disclosure_calendar

"올해 우리가 언제 무엇을 공시해야 하나" — 기한이 달력으로 고정된 정기공시 마감일을 D-day 와 함께 시간순으로. 비영업일이면 조정된 실제 기한, 항목별 기준일(분기는 "직전 분기"), 같은 날 겹치는 지점(collisions)까지. 사유 발생형 공시는 달력에 올릴 수 없다고 not_in_calendar 로 명시. 인증키 불필요

search_ftc_qna

공정위 공식 Q&A 430건 검색(2026. 4. 27. 공시 업무 매뉴얼 주요 사례 포함) — 규칙으로 판정 안 되는 경계사례에 공정위 공식 답변을 근거로 제시. 옛 문서의 폐지된 기준은 caveat 로 표시

calc_business_days

영업일·공휴일·기한 날짜 계산 — 기한 말일이 주말·공휴일이면 언제까지인지, N영업일/N달력일 기한, 남은 영업일. 건너뛴 날짜·근거 조문 동봉, 인증키 불필요

검색·원문·선례 (범용)

도구

설명

search_disclosures

공시 검색 — 공정위 프리셋 내장, 적응형 분할 전수 수집, 절단·부분결과를 조용히 넘기지 않음

read_disclosure

공시 원문을 표 구조 보존 마크다운으로 — 이사회 의결일 자동 추출

find_precedents

같은 유형 공시를 회사당 1건씩 원문과 함께, 최대 5년치. coverage 가 훑은 범위와 전수 여부를 보고

resolve_entity

회사·기업집단 통합 식별 — 동명 법인을 임의로 고르지 않음

get_group_structure

기업집단 개요 + 소속회사 전수 + 재무현황 (공정위 포털 결합)

get_financials

재무제표 조회 — 자본총계·자본금이 판정 도구 입력으로 직결

server_info

서버 상태 진단 — 버전, 키 인식 여부, 오늘 호출 잔량, 캐시 규모, 공휴일 데이터 검증 연도. "키를 넣었는데 인식이 안 돼요"의 진단 창구


설치 상세

키가 필요한 도구를 키 없이 부르면 도구가 발급 절차를 그 자리에서 안내합니다. 회사명은 자료를 조회할 때만 필요합니다.

버전별 차이

버전

Node.js

들어 있는 것

0.2.0 (npm 배포 2026-08-30)

22.5+

도구 16개

0.3.0 (npm 배포 2026-09-15)

22.13+

도구 17개 — 위에 더해 일부 입력만으로 되는 판정(missing_inputs·components·review), 미공시 탐지 요약 + read_detection_result, 탐지 이어보기(continuation_token)·시간 예산, 탐지 취소 시 결과 미보관, 0.2.0 이후 미공시 탐지 정확도 개선

main 에 올라간 변경이 곧 npm 배포는 아닙니다 — npm 배포는 버전 태그로 따로 하고, npm 에 올라간 최신 버전은 npm view gongsi-mcp version 으로 확인합니다. 2026-09-15 이후 방법 1·2(npx -y gongsi-mcp)와 방법 3(소스 클론) 모두 0.3.0 입니다. 어느 쪽이든 실행 중인 버전은 server_infoversion 에 표시됩니다.

0.2.0 에서 올릴 때 — Node.js 22.13 이상이 필요하고, 이미 떠 있는 서버는 옛 버전이므로 MCP 클라이언트를 다시 시작해야 새 버전이 적용됩니다. detect_undisclosed_transactions 의 첫 응답은 전체 결과가 아니라 요약으로 바뀌었습니다 — 전문은 요약의 detail_access.result_idread_detection_result 의 입력 result_id 에 넣어 읽습니다. check_disclosure_duty 는 입력이 일부 빠져도 오류로 끝내지 않고 계산할 수 있는 부분을 돌려주며, 확정하지 못한 계산은 missing_inputs·components 로 표시합니다 — 예: 금액·자본 등 대상 요건이 충족된 경우, 이사회 의결일이 없으면 대상 판정은 verdict: required 로 나오고 기한만 components.deadline.status: insufficient_data 입니다(의결일이 없다는 것만으로 required 가 되지는 않습니다). 응답을 직접 파싱하는 연동이 있다면 0.3.0 릴리스 노트의 호환성 절을 먼저 보세요.

방법 1: setup 마법사 + Claude Code (권장)

npx -y gongsi-mcp setup
claude mcp add gongsi-mcp -- npx -y gongsi-mcp

마법사가 키를 실호출로 검증하고 ~/.gongsi-mcp/.env 에 저장 — 서버가 자동으로 읽는 위치라 등록 시 env 를 다시 줄 필요가 없습니다. 비대화 모드: npx gongsi-mcp setup --dart-key <키> [--egroup-key <키>] --no-input

방법 2: Claude Desktop / Cursor 등 (설정 파일)

설정 파일에 추가 (YOUR_API_KEY 교체):

설정 파일 위치

Claude Desktop (Windows)

%APPDATA%\Claude\claude_desktop_config.json

Claude Desktop (Mac)

~/Library/Application Support/Claude/claude_desktop_config.json

Cursor

프로젝트 .cursor/mcp.json

{
  "mcpServers": {
    "gongsi-mcp": {
      "command": "npx",
      "args": ["-y", "gongsi-mcp"],
      "env": {
        "DART_API_KEY": "OpenDART에서 발급받은 키"
      }
    }
  }
}

Windows에서 실행 실패 시: 클라이언트가 npx 를 못 찾는 경우 "command": "cmd", "args": ["/c", "npx", "-y", "gongsi-mcp"] 로 래핑하세요.

MS 스토어판 Claude Desktop: 설정 파일이 가상화 경로에 있습니다 — %LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude\claude_desktop_config.json. %APPDATA%\Claude 를 고쳐도 앱이 읽지 않습니다.

방법 3: 소스 클론 (개발)

git clone https://github.com/dolseom/gongsi-mcp.git && cd gongsi-mcp
npm install && npm run build
node dist/src/cli.js setup
claude mcp add gongsi-mcp -- node <절대경로>/dist/src/cli.js

이미 클론했다면 git pull && npm install && npm run build 뒤 MCP 클라이언트를 다시 시작하세요.

요구사항: Node.js 22.13+ (런타임 의존성 2개 — MCP SDK, zod. SQLite는 Node 내장 node:sqlite 사용 — v22.13.0부터 --experimental-sqlite 플래그 없이 동작)


설계 원칙 — 이 도구가 가장 피하는 실패는 "거짓 안심"

감사·판정 도구의 최악의 출력은 틀린 경고가 아니라 확인하지 못했는데 "문제 없음"이라고 말하는 것입니다. 담당자가 그 말을 믿고 공시를 안 하면 과태료가 나옵니다. 그래서:

  • 모든 판정에 근거 동봉 — 조문·계산식·원천 데이터 없이 결론만 주지 않는다

  • 절단을 조용히 넘기지 않는다 — 모든 검색 응답에 diagnostics(truncated·partial_results·분할 내역), 선례 검색에 coverage(훑은 구간·전수 여부) 동봉

  • 확인 못 한 것은 "없음"이 아니라 "미확인"으로 — 대사 실패는 "정합"이 아니고, 예산 초과로 못 훑은 구간은 "그런 공시 없음"이 아니다

  • 정정 이전 원본을 보존한다 — 검색 기본값이 원본 접수분. 최종본만 보면 지연 판정이 불가능하다

  • 법령 세부는 원문으로만 — 웹에 퍼진 "공시기한 1일"·"50억 기준" 같은 오정보를 원문 대조로 걸러냄

  • 자동 제출 기능은 만들지 않는다 — 초안·판정·근거까지만. 최종 제출은 담당자의 몫

검증(0.3.0 소스, 2026-09-14): 테스트 743개(32파일) · 패키징한 설치본 stdio 스모크 9종 · 공휴일 데이터 공식 공고 대조(2026·2027) · 실제 공시 사례 재현 · 3자 교차검토(치명 경로 전수 수정) · 자연어 종단 평가(eval/e2e — 합성 질문이라 실사용 검증은 아닙니다).


참고

라이선스

MIT

Available Tools

17 tools
assess_correction_risk정정공시 리스크 진단A

"정정하면 과태료 나온다"는 속설을 과태료 고시 원문으로 진단합니다 (키 불요). 정정 자체는 위반행위가 아니고(고시 Ⅱ 위반 열거에 없음), 문제는 원 공시의 상태(누락·거짓·지연)입니다.

  • errorType 별로 원 공시의 위반 성립 여부, 면제 경로, 권고를 근거 조문과 함께 돌려줍니다

  • originalDeadline 을 주면 골든타임(기한 만료 후 10영업일) 상태와 지연 감경 축소 일정(75%→50%→30%→20%)을 계산합니다

  • 거래 내용 자체가 변경된 경우(transaction_changed)는 정정이 아니라 새 공시의무입니다 — 재의결·재공시 경로를 안내합니다

  • 면제·감경은 모두 공정위 재량이라 확정이 아닌 판단 재료입니다

ParametersJSON Schema
NameRequiredDescriptionDefault
todayNo판정 기준일 (기본: 시스템 날짜)
regimeYes과태료 체계. art26_29=대규모내부거래·공익법인(약관특례·상품용역 감소 포함), art27_28=비상장사 중요사항·기업집단현황
errorTypeYes원 공시 오류의 성격. trivial_error=명칭·성명·날짜·금액 등 단순 오기·누락(오인 가능성 거의 없음), minor_miscalculation=단순 계산 실수·오기(사소한 부주의), content_omission=주요내용 누락, false_content=사실과 다른 기재, transaction_changed=거래의 주요내용 자체가 변경됨(정정이 아니라 새 공시의무)
crossConfirmableNo오류의 사실내용이 해당 공시 또는 이전의 다른 공정거래법 공시 내용으로 확인 가능한지 — 사소한 부주의 면제(Ⅴ.1.나)의 성립 요건입니다
originalDeadlineNo원 공시의 법정 기한 (YYYYMMDD). 주면 자진시정 골든타임과 지연 감경 축소 일정을 계산합니다
newlyDesignatedWithin30dNo위반 공시일이 공시대상기업집단 신규 지정·계열 편입 통지일부터 30일 이내인지 (Ⅴ.1.가)

TDQS

A3.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full disclosure burden and excels at it. It reveals the core insight (correction itself is not a violation, only the original state matters), discloses that it computes golden time and reduction schedules from originalDeadline, and — critically — states that exemptions/reductions are FTC discretion, returning 'judgment materials, not confirmations'. This honesty about output nature is exemplary and prevents agent overconfidence.

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 description is front-loaded with the single most important insight (correction isn't a violation; the problem is the original state) before the bullet list. Each bullet earns its place — errorType behavior, deadline calculations, the transaction_changed exception, and the discretion caveat. It is dense but efficiently organized with zero filler; only the missing output-format note prevents a 5.

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 complex legal-risk tool with 6 parameters, 2 enums, and no output schema or annotations, the description is commendably complete. It explains what comes back (violation status, exemption paths, recommendations with cited clauses), the schedule calculations, and the discretionary nature of outcomes. It doesn't describe the exact output structure (field names, format), but for a judgment-tool it conveys everything an agent needs to invoke and interpret it correctly.

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

Parameters3/5

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

Schema coverage is 100%, with detailed descriptions for all 6 parameters including full enum semantics for errorType and regime. The description adds modest value beyond the schema — it links originalDeadline to the golden-time and 75→50→30→20% reduction schedule, and explains transaction_changed is a new duty rather than a correction. These are useful additions, but the schema already documents parameter meaning thoroughly, so the description's marginal contribution is limited.

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

Purpose4/5

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

The description clearly states the tool's purpose: diagnosing the folk belief that correcting a disclosure triggers fines, using the penalty notice original text. It specifically states the tool assesses whether the original disclosure state (omission, false, delay) constitutes a violation per errorType, which is a specific verb+resource+scope. It doesn't explicitly name sibling alternatives, but the function is unambiguous and none of the 17 siblings perform correction-risk assessment.

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

Usage Guidelines3/5

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

Usage context is implied rather than stated. The description explains behaviors (errorType-based violation status, originalDeadline golden-time calculation) but never explicitly says 'use this when' or names when NOT to use it relative to siblings like check_disclosure_duty or detect_undisclosed_transactions. The transaction_changed bullet hints that such cases route to a re-disclosure path, but no alternative tool is named.

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

audit_group_disclosures대규모내부거래 기한 감사A

기업집단(또는 회사 목록)의 대규모내부거래(J001) 공시를 기간 단위로 감사해 기한 지연 후보를 찾습니다. 원본 접수분의 접수일과 원문에서 추출한 이사회 의결일을 대조합니다 (상장 3영업일 / 비상장 7영업일).

  • 지연 후보에는 지연일수·예상 과태료·자진시정 골든타임 상태·근거가 동봉됩니다 (확정이 아닌 후보)

  • 약관 금융거래 특례 서식(의결일 없음)은 별도 분류로 나옵니다

  • 정정 제출분은 빼고 원본 접수분만 봅니다 (지연 판정의 성립 조건)

  • 범위가 크면 range_too_large 와 분할 구간을 안내합니다

  • 집단 감사는 EGROUP_API_KEY 필요. coverage 의 미조인 회사는 감사에서 빠진 것입니다

⚠️ 이 감사는 "미공시"를 탐지하지 못합니다. DART 접수분만 조회하므로 아예 공시하지 않은 거래는 기록 자체가 없습니다. 판정 범위도 J001 중 트랙 A(의결형) 뿐입니다. "지연 후보 0건" ≠ "공시의무 이행에 문제 없음" — coverage.undetectable·coverage.not_judged 를 함께 전달하세요. 시행령 별표9 기본금액: 미공시는 의결 있음 5,000만원 / 의결 없음 7,000만원, 기한초과는 500만원 + 1일 10만원 (어느 쪽도 최종 부과액이 아닙니다).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes감사 기간 종료일
fromYes감사 기간 시작일 (접수일 기준)
groupNo기업집단명("삼성") 또는 집단코드("K1000032"). companies 와 둘 중 하나 필수
todayNo판정 기준일 (기본: 오늘). 자진시정 골든타임 계산에 쓴다
companiesNo회사 목록 — 회사명 또는 corp_code(8자리). 집단 전체 대신 특정 회사만 감사할 때
year_monthNo집단 소속회사 기준 공개년월 (기본: 최신 지정연도)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It reveals that results are candidates, not final; that EGROUP_API_KEY is required for group audits; that uncovered companies are omitted; that range_too_large is a possible response; and that '0 candidates' does not imply compliance. This is exemplary transparency for a high-stakes audit tool.

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 long but every sentence earns its place, covering output semantics, exclusions, error behavior, authentication, and legal caveats. The core purpose is front-loaded in the first sentence, and the bulleted caveats are clearly separated. For a tool with no annotations and no output schema, this level of detail is warranted, not padded.

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 no annotations, no output schema, six parameters, and a complex legal audit context, the description is remarkably complete. It explains inputs, return contents, exclusions, coverage semantics, error handling, authentication requirements, and limitations. An agent has enough information to invoke the tool correctly and interpret its results safely.

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 useful parameter-related context beyond the schema. It clarifies that the period is based on the original filing's receipt date for both from and to, that group audits require EGROUP_API_KEY, and that the group/companies parameter choices interact with coverage behavior. This earns a 4.

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 names a specific verb (audit), a specific resource (J001 large internal transaction disclosures), and a specific objective (finding delayed-submission candidates by comparing receipt date with board resolution date). It also draws clear boundaries, stating it only covers track A (resolution-based) filings and cannot detect non-disclosures, which distinguishes it from sibling tools.

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

Usage Guidelines4/5

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

The description gives strong context about when this tool is appropriate and when it is not: it excludes corrections, special exemption forms, and undisclosed transactions, and it explains coverage limitations. It does not explicitly name sibling alternatives like detect_undisclosed_transactions, but the exclusions are clear enough for an agent to route correctly.

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

audit_periodic_disclosures정기공시 이행 점검 (제출 여부·지연·미제출)A

기업집단현황(J004)·하도급대금 결제조건(J009)의 정기 공시를 실제로 냈는지, 기한을 지켰는지 회사별로 점검합니다. 기한이 달력으로 고정돼 목록의 접수일만으로 판정하므로 원문이 필요 없고, 기한이 지났는데 접수분이 없으면 그 자체가 미제출 신호입니다. 다만 내용의 정확성은 보지 않습니다.

  • 기한별로 on_time / late_candidates / not_filed_candidates 를 회사 단위로 돌려줍니다

  • 기한이 아직 오지 않은 항목(due:false)은 미제출 판정을 하지 않습니다

  • 하도급대금(J009)은 원사업자·거래가 있을 때만의 의무라 미제출을 신호로 쓰지 않습니다 (non_filing_is_signal:false)

  • 집단 점검은 EGROUP_API_KEY 필요. 회사당 1회 조회라 한 번에 80개사까지입니다

  • '연1회공시및1/4분기용' 서식 1건은 연1회와 1분기 의무를 동시에 이행합니다

  • 기간 배정은 접수일 창 추정이라 모호한 자리에는 ambiguous_assignment·possibly_filed_late 가 붙습니다

  • 대표회사 제출은 개별회사 의무를 대체하지 않습니다 (고시 §3⑤ 항목만 대표회사 책임)

⚠️ 미제출 후보는 확정이 아닙니다 — 고시 §2① 단서(자산 100억원 미만 + 청산·휴업)로 공시대상회사가 아닐 수 있고, 포털 스냅샷이 연 1회라 분기별 소속 상태를 판정하지 못합니다. 판정 밖의 것은 scope_caveats 에 전부 나열됩니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes점검할 연도 — 그 해에 **기한이 도래하는** 정기공시를 본다
groupNo기업집단명 (companies 와 동시 사용 불가)
todayNo오늘 날짜 (기본: 시스템 날짜). 기한 도래 여부 판정 기준
dutiesNo점검할 의무 (기본: 기업집단현황 연1회·분기). subcontract_payment_terms 를 넣으면 하도급대금 결제조건도 본다
companiesNo회사명 또는 corp_code(8자리) 목록 (group 과 동시 사용 불가)
year_monthNo기업집단포털 기준월 YYYYMM. 생략하면 **점검 연도의 5월**(YYYY05)을 쓴다 — 포털 스냅샷이 매년 5월 1일 기준이라 과거 연도를 점검할 때 최신 스냅샷을 쓰면 모집단이 어긋난다

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so extensively. It discloses that content accuracy is not checked, due:false items are ignored for non-filing, J009 has non_filing_is_signal:false, ambiguous assignments get ambiguous_assignment/possibly_filed_late flags, representative filings don't replace individual duties, and not_filed candidates are not confirmed and are enumerated in scope_caveats. This gives the agent a realistic model of the tool's behavior and limitations.

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 front-loads the core purpose and main caveat in the first two sentences, then uses bullet points to enumerate behavioral rules without repetition. It is long but each bullet adds a distinct fact relevant to invocation or interpretation, making it appropriately sized for a tool with 6 parameters and nuanced judgment logic.

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?

There is no output schema, but the description names result categories (on_time, late_candidates, not_filed_candidates), explains due:false and non_filing_is_signal semantics, and points to scope_caveats for excluded cases. It also covers authentication, limits, representative-filing exceptions, and snapshot timing, giving the agent enough information to call and interpret the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter (year, group, today, duties, companies, year_month) already documented. The description adds some operational context such as the 80-company limit and the May snapshot default, but it does not meaningfully enhance the semantics of individual parameters beyond what the schema provides. Baseline 3 is appropriate.

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 opens with '정기공시 이행 점검' and specifies that it checks periodic disclosures of J004 and J009 per company, whether filed and on time. It also explicitly states '내용의 정확성은 보지 않습니다' (does not check content accuracy), which distinguishes it from content-review-focused sibling tools. This is a specific verb+resource with clear sibling differentiation.

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

Usage Guidelines4/5

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

The description provides clear context: deadlines are calendar-fixed and judged by receipt date, J009 non-filing is not a signal (non_filing_is_signal:false), due:false items are not judged as non-filing, and representative company submission does not substitute individual duty. It also gives operational constraints like EGROUP_API_KEY requirement and the 80-company limit. However, it does not explicitly name alternative tools or state when to use a sibling instead, so it lacks explicit when-not-to-use routing.

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

calc_business_days영업일·공휴일·기한 날짜 계산A

한국 영업일·공휴일 기준 날짜 계산 (키 불요). 영업일 여부·공휴일 명칭·기한 조정·N영업일/N달력일 기한· 남은 영업일 세기를 돌려줍니다.

⚠️ 공휴일은 법령 개정으로 바뀝니다 — 2027년부터 노동절(5/1) 공휴일 신설로 2027-05-03(월)이 대체공휴일입니다. 모델의 자체 달력 지식은 최신 개정을 모릅니다 — 기한·영업일·공휴일이 걸린 날짜 질문에는 반드시 이 도구를 호출하세요.

  • 건너뛴 비영업일 목록(날짜·요일·공휴일 명칭)과 근거 조문이 동봉됩니다

  • 근로자의 날(5/1)은 관공서 공휴일이 아니어서 민법 기간계산과 고시 영업일 계산이 갈립니다 (2027년부터 차이 소멸)

  • 공휴일 데이터가 없거나 미검증인 연도는 warnings 로 알립니다

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes기준일 (YYYYMMDD). 단독으로 주면 이 날짜가 영업일인지, 아니라면 어느 공휴일인지와 다음 최초 영업일(기한 말일 조정 결과)을 돌려줍니다
add_business_daysNo기준일 다음 날부터 N영업일 후의 기한을 계산합니다 (예: 이사회 의결일 + 상장 3영업일 / 비상장·공익법인 7영업일)
add_calendar_daysNo기준일 다음 날부터 N일(달력일) 후의 기한을 계산합니다 (예: 분기 종료 후 45일). 말일이 비영업일이면 다음 영업일로의 조정 결과를 함께 줍니다
count_business_days_toNo기준일 다음 날부터 이 날짜까지의 영업일 수를 셉니다 (예: 오늘부터 기한까지 남은 영업일)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses important behavioral traits: it returns skipped non-business days with dates, weekdays, holiday names, and legal basis; it warns about missing/unverified holiday data via warnings; it explains the nuance that Labor Day (5/1) is not a public office holiday, causing divergence between civil law and notice-based business day calculations until 2027. It also warns that holiday laws change and gives a concrete example (2027-05-03 substitute holiday). This is rich behavioral context beyond a simple 'calculates business days' statement.

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 description is moderately sized but information-dense. It front-loads the core purpose in the first sentence, then provides critical usage warnings and behavioral details. The bullet points are well-structured. It loses one point because the warning about 2027 Labor Day is somewhat verbose and could be tightened, but every sentence earns its place by conveying important caveats.

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?

Given the tool's complexity (4 parameters, no output schema, no annotations), the description is quite complete. It explains what each parameter returns, warns about data limitations, and provides legal context. It doesn't explicitly describe the output format structure, but without an output schema, a brief note on return shape would help. However, the description does list the types of outputs (business day status, holiday name, deadline adjustment, skipped days list, legal basis, warnings), which is sufficient for an agent to understand what to expect.

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 description coverage is 100%, so the baseline is 3. The description adds value by explaining the semantics of each parameter with examples: add_business_days for '이사회 의결일 + 상장 3영업일 / 비상장·공익법인 7영업일', add_calendar_days for '분기 종료 후 45일', count_business_days_to for '오늘부터 기한까지 남은 영업일'. It also clarifies that date alone returns business-day status and next business day. This goes beyond the schema's basic descriptions, though it doesn't add syntax details for the date format (already in schema pattern).

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 clearly states the tool computes Korean business days, holidays, and deadline adjustments, listing specific outputs (business day status, holiday name, deadline adjustment, N-business-day/N-calendar-day deadlines, remaining business day count). It distinguishes itself from sibling tools by being the only date-calculation tool among disclosure/search/audit tools.

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 explicitly instructs when to use the tool: '기한·영업일·공휴일이 걸린 날짜 질문에는 반드시 이 도구를 호출하세요' (must call this tool for date questions involving deadlines, business days, holidays). It also warns that the model's own calendar knowledge is outdated, providing a clear directive to prefer this tool over internal knowledge. It does not name specific sibling alternatives, but the sibling list contains no other date-calculation tool, so the guidance is sufficient.

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

check_disclosure_duty공시의무 진단·기한 계산A

공정거래법상 공시의무 대상 여부를 판정하고 공시기한·지연 시 예상 과태료를 계산합니다. 외부 API를 쓰지 않으므로 인증키 없이 동작합니다.

판정 결과에는 항상 근거 조문과 계산식이 포함됩니다. 자본총계·자본금이 없으면 추정하지 않고 insufficient_data 를 반환하므로, 그때는 get_financials 로 재무수치를 먼저 조회하세요.

⚠️ 거래금액 산정 방식(amountBasis)에 주의하세요 — 담보제공은 담보한도액, 부동산임대차는 연간임대료+보증금환산액, 보험은 보험료총액, 상품·용역은 분기 합계액입니다. 틀리면 판정이 뒤집힙니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
dutyYes공시의무 유형. large_internal_transaction=대규모내부거래(법§26), unlisted_material=비상장사 중요사항(법§27), group_status=기업집단현황(법§28), public_interest_corp=공익법인(법§29), omnibus_financial=약관에 의한 금융거래 특례(고시§9), goods_services_reduced=상품·용역 20%↑ 감소(고시§9의2)
yearNo연도 (기업집단현황)
todayNo오늘 날짜 (기본: 시스템 날짜). D-day 계산 기준
amountNo거래금액 (원). 기준금액과 비교해 공시 대상 여부를 판정하고, 지연 시 과태료의 거래금액별 적용비율(고시 Ⅵ.2 — 100억원 미만이면 90~50%)에도 쓰인다. 약관 금융거래는 분기 일괄 거래금액, 상품·용역 감소 특례는 실제 거래금액을 넣는다
listingNo상장 여부. 대규모내부거래 기한이 갈린다 (상장 3영업일 / 비상장 7영업일)
quarterNo분기. 지정하면 분기공시(종료 후 2개월), 생략하면 연1회(5/31)
boardDateNo이사회 의결일 (대규모내부거래·공익법인)
situationNo거래 상황 서술 (예: "계열사 발행어음이 만기 후 자동연장됨", 500자 이내). 주면 유사한 공정위 공식 Q&A를 relatedOfficialQna 로 함께 돌려줍니다 — 규칙만으로 판정하기 어려운 경계사례(대상 여부·거래 성격)에 유용합니다
quarterEndNo분기 종료일 (약관 금융거래·상품용역 감소)
amountBasisNo거래금액 산정 방식 (고시§4③). ⚠️ 틀리면 판정이 뒤집힌다. collateral_limit=담보제공은 담보한도액, lease_annualized=부동산임대차는 연간임대료+보증금환산, insurance_premium_total=보험은 보험료총액, quarterly_sum=상품용역은 분기 합계액
totalAssetsNo자산총액 (원). 비상장사 중요사항 중 고정자산 판정용
totalEquityNo자본총계 (원). 주총 승인된 최근 사업연도말 재무제표 기준
materialItemNo비상장사 중요사항 세부 항목. 임계 비율형: fixed_asset=고정자산 취득·처분(자산총액 10%), other_corp_stock=타법인 주식(자기자본 5%), gift=증여(1%), guarantee=담보·보증(5%), debt_relief=채무 면제·인수(5%), shareholding_change=최대·주요주주 지분 1%p 변동. 금액 무관 결정형: capital_change=증자·감자, cb_bw_issue=CB·BW 발행, business_transfer=영업양수도·합병·분할, stock_exchange_transfer=주식 포괄적 교환·이전, dissolution=해산, rehabilitation=회생절차, restructuring_procedure=기촉법 관리절차
occurredDateNo사유 발생일 (비상장사 중요사항)
paidInCapitalNo자본금 (원). 이사회 의결일 직전일 기준
shareChangePctNoshareholding_change 전용 — 발행주식총수 대비 지분 변동 크기 (%p). 1 이상이면 공시 대상
boardResolutionNo과태료 산정용: 이사회 의결을 실제로 거쳤는지. 대규모내부거래·공익법인(§26 계열)에서 의결 없이 공시하거나 미공시한 사건은 별표 9의 "의결 X" 칸(기본금액 5,000만~7,000만원)이 적용되어 금액이 크게 달라집니다. 생략하면 의결을 거친 것으로 가정하고 그 가정을 caveat 로 알립니다
shareholderTypeNoshareholding_change 전용 — largest=최대주주(7영업일 공시) / major=주요주주(분기별 공시, 고시 §5의2④ 단서). 기한이 완전히 달라지므로 반드시 구분하세요
disclosureStatusNo공시 이행 상태. not_disclosed(아직 공시 전)를 명시하면 기한 경과 시 자진시정 골든타임을 계산합니다. 생략하면 미공시로 단정하지 않습니다 — 기한만 조회하는 호출과 구분하기 위한 명시적 입력입니다
isFinancialCompanyNo금융업·보험업 영위 여부 (비상장사 중요사항 대상회사 판정용 — 영위하면 제외)
specialRelated20pctNo자산총액 100억 미만 회사의 대상 판정용 — 동일인·친족이 합산 20% 이상 소유한 회사(또는 그 회사가 50% 초과 소유한 자회사)인지 (고시 §2②2호)
actualDisclosureDateNo실제 공시일. 주면 기한 준수 여부와 지연일수를 함께 판정한다
estimatePenaltyIfLateNo지연이 확인되면 예상 과태료도 함께 산정할지 (기본 true)
inLiquidationOrDormantNo청산 절차 진행 중 또는 1년 이상 휴업 중인지 (고시 §2②2호 단서의 제외 요건)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden and does so well: it discloses that the tool does not call external APIs and requires no auth key, always includes 근거 조문 and 계산식 in results, and returns insufficient_data instead of estimating missing financial figures. It does not state side-effect/read-only behavior, but the disclosed traits substantially inform invocation.

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 compact and well-structured: core function first, then output guarantees and the missing-data fallback, then a high-impact warning about amountBasis. Every sentence contributes actionable information, and the critical warning is clearly marked and front-loaded.

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?

Given 24 parameters, no output schema, and no annotations, the description is reasonably complete for tool selection and safe invocation: it states the computation scope, result contents, missing-data behavior, and a key input pitfall. It does not enumerate every duty-specific parameter combination, but the richly documented schema compensates for that gap.

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 description coverage is 100%, so the schema already documents all parameters. The description adds semantic value by highlighting amountBasis as decision-critical and by explaining the insufficient_data behavior tied to totalEquity/paidInCapital, plus routing to get_financials. This goes beyond the baseline but does not exhaustively synthesize all 24 parameters.

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

Purpose4/5

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

The description opens with a specific verb and resource: '공정거래법상 공시의무 대상 여부를 판정하고 공시기한·지연 시 예상 과태료를 계산합니다.' This clearly identifies the tool's core function and differentiates it from sibling audit/search tools in substance, though it does not explicitly name or contrast any sibling tool.

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

Usage Guidelines4/5

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

The description provides an explicit conditional alternative: when 자본총계·자본금 are missing, the tool will not estimate and returns insufficient_data, and the agent should 'get_financials 로 재무수치를 먼저 조회하세요.' This gives a concrete when-not-to-use instruction and a named alternative. General when-to-use context is implied by the purpose statement but not elaborated for all duty types.

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

check_j004_consistency기업집단현황공시(J004) 정합성 자가점검A

기업집단현황공시(J004) 원문에서 기계적으로 재검산 가능한 항목을 전부 다시 계산해 불일치를 찾습니다.

  • ⚠️ 이미 DART 에 접수된 공시의 접수번호(rcept_no) 로만 점검합니다 — 아직 제출하지 않은 초안 파일(엑셀·HWP 등)은 읽지 못합니다. 제출본을 점검해 정정할 곳을 찾는 용도입니다

  • 재무현황: 유동+비유동=총계(자산·부채), 자산=부채+자본 항등식, 부채비율 재계산, 금융/비금융 소계·합계 재합산

  • 차이가 약 1,000배면 단위(원/천원/백만원) 오기 힌트를 답니다

  • 문서 내적 정합성만 봅니다 — 원천 회계 데이터와의 일치(진실성)는 판정하지 않습니다

  • 재무표를 찾지 못하면 "정합"이 아니라 not_checkable 을 돌려줍니다

ParametersJSON Schema
NameRequiredDescriptionDefault
rcept_noYes점검할 기업집단현황공시(J004) 접수번호
max_issuesNo반환할 이슈 최대 개수 (기본 100)
compare_rcept_nosNo대표회사 취합분과 대사할 개별회사 공시 접수번호 목록. 각 개별회사의 재무현황 행을 대표회사 취합 표의 같은 회사 행과 1백만원 단위로 대조합니다
include_generic_totalsNo재무·손익 외 일반 표의 합계 재합산도 점검할지 (기본 false). ⚠️ 실험적 — 병합 셀·다층 구분 표에서 구조적 오탐이 발생할 수 있어 결과를 참고로만 쓰세요

TDQS

A4.3/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses key behaviors: the tool cannot read unsent drafts, it returns not_checkable when financial statements are not found, it gives unit-error hints for ~1000x differences, and it may produce structural false positives for generic totals. This gives the agent realistic expectations beyond the schema.

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 description is well structured with a purpose statement followed by concise bullets. Every bullet adds meaningful constraint or behavior, and warnings are front-loaded. It is slightly long, but the length is justified by the domain complexity.

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 complex tool with no output schemacompress, the description is quite complete: it covers what is checked, what is not checked, key limitations, and the not_checkable outcome. The compare_rcept_nos and include_generic_totals semantics are covered in the schema. It could more explicitly describe the output shape, but this is not a blocking gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well documented. The description adds no per-parameter detail beyond the schema, which is acceptable under the baseline, but it also does not enrich the meaning of rcept_no or max_issues beyond what the schema already provides.

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 action and resource: it recalculates all mechanically re-calculable items in the J004 filing to find discrepancies. It also clearly scopes the tool to submitted DART filings via rcept_no, distinguishing it from generic search/read/duty-check sibling tools.

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

Usage Guidelines4/5

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

The description gives strong usage boundaries: only already-submitted filings with a receipt number are checked; draft files are not readable; it checks internal consistency only, not accounting truthfulness; and include_generic_totals is flagged as experimental with false-positive risk. It does not explicitly name alternative sibling tools, so it stops short of a 5.

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

detect_undisclosed_transactions미공시 내부거래 교차탐지 (J004↔J001)A

기업집단현황공시(J004) 대표회사 연1회 서식의 실제 거래내역을 대규모내부거래(J001) 공시와 대조해 "거래는 했는데 공시가 없는" 미공시 후보를 찾습니다.

  • 응답은 요약입니다 — 상세는 read_detection_result 로 이어서 읽습니다. 완전한 결과는 실물에서 22만자~1MB라 그대로는 전달되지 않아, 첫 응답에 detail_access.result_idavailable_sections 를 싣습니다. required_warnings·summary_incomplete·details_required그대로 전달하고, 근거를 물으면 상세를 실제로 읽어 인용하세요 — 읽지 않은 상세를 "확인했다"고 말하지 마세요

  • 요청을 취소하면 결과를 보관하지 않고 result_id 도 주지 않습니다. 다만 이미 시작된 DART 조회는 끝까지 진행될 수 있습니다(엔진이 중간 취소를 지원하지 않습니다)

  • 요약은 action_items_preview 부터 읽으세요. 조치가 필요한 판정을 상태별 배열을 가로질러 우선순위대로 모아 둔 목록입니다. 아래 배열 이름은 매출(매도)회사 관점이라, 같은 거래가 매출회사 기준으로는 미달인데 매입회사 자본 기준으로는 후보인 경우 goods_services_matrix_below_threshold 같은 "기준 미달" 배열 안에 묻힙니다(실측: 케이티 421건 안에 조건부 후보 8건·확인 대상 21건). perspective:"거래상대방" 항목이 그것입니다. 각 항목의 source 가 원래 배열 이름이고 근거·caveat 전문은 거기 있습니다. ⚠️ 이 목록이 비어 있어도 "이상 없음"이 아닙니다 — 판정하지 못한 범위는 not_judged·coverage에 따로 있습니다

  • 자금 차입 = 건별 차입일 근접 대조(가장 강한 신호). 차입일 −90~+30일에 같은 유형 공시가 있으면 j001_filing_near_date, 검색창 안 어딘가에만 있으면 j001_filing_in_window_only(한도 의결 커버일 수도, 부분 공시 누락일 수도 있음), 없으면 미공시 후보. 기준금액은 같은 문서의 자본으로 계산한 근사치이고, 거래금액 100억원 이상만 자본과 무관하게 확실합니다

  • 상품·용역은 연간 합계뿐이라 (판매회사, 거래상대방) 연간 합산 ≥ 4×기준금액일 때만 (어느 분기 하나는 반드시 기준 이상) 신호로 씁니다. 의무 자체가 상대방이 총수일가 20% 이상 출자 계열사 등일 때만 성립하는데(법 §26①4호) 지분 확인이 불가능해 전부 candidate_if_counterparty_qualified(조건부 후보)입니다

  • 개별 건이 기준 미달이어도 같은 상대방 연간 합산이 기준 이상이면 "기준 미달"로 단정하지 않습니다 (고시 §4③ 동일 거래상대방·동일 거래대상)

  • 유가증권은 매트릭스 표의 상대방별 연간 총액뿐이라 개별 거래로 분해되지 않습니다 — 총액이 기준 이상인데 공시가 없으면 candidate_aggregate_only(후보가 아니라 확인 대상). 총액이 기준 미만이면 개별 거래도 전부 미만이라 이 방향만 확실합니다

  • 차입은 대여회사 쪽 의무(lender_side)도 각자 자본으로 따로 판정하고, 상품·용역은 (6)에 없는 쌍을 총괄표 (5)로 보완합니다(4×에 못 미치면 candidate_aggregate_only)

  • 조인 실패·검색 예산 초과·수집 불완전 건은 not_judged — "후보 아님"이 아니라 확인하지 못한 것

  • 미조인 계열사는 실행 중에 법인등록번호를 자동으로 채워 조인합니다(포털 jurirno ↔ DART 기업개황이 정확히 1건 일치할 때만 확정 — 이름 유사도로 고르지 않습니다). 결과는 캐시에 남아 다음 실행부터는 조회 없이 조인되고, 조회 예산을 넘긴 회사는 다시 실행하면 이어서 채웁니다 — 결과·미조인 사유는 diagnostics.population.warming

  • "공시 존재"는 공시 원문의 거래상대방까지 이 거래 상대방과 일치할 때만 냅니다 (counterparty_confirmed_by_document, 근거는 matching_filings 의 doc_counterparties). 같은 유형 공시가 창 안에 있어도 원문 상대방이 다르거나 원문을 못 열면 후보가 아니라 not_judged (type_filing_present_counterparty_unconfirmed) — 표기 차이일 수 있어 "공시 없음"으로도 내리지 않습니다. 원문은 확인되는 즉시 멈추고 열므로 matching_filings 는 근거 1건이고 matching_filings_total 이 창 안의 총수, matching_filings_not_examined_total 은 열어 보지 않은 수(상대방이 다르다는 뜻이 아닙니다)입니다. 원문 내려받기 예산을 넘긴 건은 캐시가 남아 같은 문서로 한 번 더 실행하면 이어서 대조됩니다

  • MCP 클라이언트가 약 60초에 호출을 끊으므로 이 도구는 50초 안에 스스로 멈추고 그때까지의 판정을 부분 결과로 냅니다. 잘렸으면 summary.time_budget_truncated · coverage.not_examined_due_to_time_budget · scope_caveats 맨 앞 · diagnostics.budget 에 드러납니다 — 못 본 범위는 "후보 없음"이 아니라 not_judged(time_budget_exceeded) 입니다

  • 한 번에 끝나지 않으면 이어서 부른다. 결과의 continuation.complete 가 false 면 continuation.token 이 함께 옵니다 — 같은 인자에 continuation_token 을 넣어 complete:true 가 나올 때까지 다시 호출하세요. 호출마다 안 본 회사부터 이어서 보고, 앞 호출이 받아 둔 J001 목록은 다시 받지 않습니다(회사 수 상한 20개사는 한 호출당 상한이라 대형 집단도 몇 번 부르면 온전해집니다). 마지막 호출의 결과가 온전한 답이고, 그 전 호출의 결과를 사용자에게 최종으로 제시하지 마세요 — 진행 상황(continuation.progress)은 중간에 알려도 됩니다. 토큰 수명은 6시간이고, 만료·다른 인자면 continuation_invalid 로 거절합니다(그때는 토큰 없이 처음부터). continuation.stalled 가 true 면 더 불러도 제자리이니 남은 회사를 개별 조회하세요

⚠️ 한도성 이사회 의결, 계열 금융회사 약관특례(트랙 B), 보고서명 유형 분류 오차로 실제로는 공시된 거래일 수 있습니다. near_date/in_window_only 는 상대방까지 대조한 것이고 금액·거래기간까지 대조한 것은 아닙니다scope_caveats 참조. 미공시 과태료 기본금액 5,000만~7,000만원은 지연보다 무거워 오판의 대가가 큽니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo연1회 J004 가 **제출된** 연도 (기본: 올해). 거래내역은 통상 그 전년도(직전 사업연도) 것이다
groupNo기업집단명 — 대표회사 연1회 J004 를 자동으로 찾는다 (rcept_no 와 동시 사용 불가)
todayNo오늘 날짜 (기본: 시스템 날짜). J001 검색창 상한
rcept_noNo점검할 J004 접수번호 직접 지정 (group 없이 단독 사용). 거래현황 표가 있는 **대표회사 연1회 서식**이어야 한다 — 분기 개별 서식에는 거래내역이 없다
continuation_tokenNo이전 호출이 continuation.complete:false 와 함께 돌려준 토큰. **같은 인자**(rcept_no 또는 group)와 함께 주면 안 본 회사부터 이어서 본다 — 앞 호출이 이미 받아 둔 J001 목록은 다시 받지 않는다. complete:true 가 나올 때까지 반복하면 그 마지막 결과가 온전한 답이다

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and delivers exhaustively: the 50-second self-stop due to the MCP client's ~60s timeout, cancellation semantics (no result retention but DART queries may complete), partial-result behavior, document-verification rules (counterparty must match in the original text), cache/persistence behavior, token 6-hour expiration, and legal penalty implications (50M-70M won fines). This is exemplary disclosure of traits well beyond what a schema could express.

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

Conciseness2/5

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

The description is an enormous wall of text—likely 4,000+ characters of dense Korean prose—with no clear sections or headers despite using ★ and — markers. While most sentences earn their place given the tool's complexity, the sheer volume and lack of hierarchy make it hard for an agent to scan for the core workflow (summary-first, continuation protocol). It is over-specified and would benefit from structured sections with the key operating rules front-loaded.

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?

For a highly complex cross-filing detection tool with no output schema, the description is remarkably complete: it covers the output structure (action_items_preview, available_sections, not_judged, coverage, continuation, diagnostics, detail_access), the detection logic for each transaction type (funds borrowing 90-day window, goods/services 4x threshold, securities aggregate-only), edge cases (perspective:거래상대방, candidate_if_counterparty_qualified), and scope caveats. Nothing essential is missing for an agent to call it correctly.

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?

All 5 parameters have schema descriptions (100% coverage), so the baseline is 3. The description substantially enriches continuation_token semantics—the repeat-call protocol, the 'same arguments' requirement, rejection as continuation_invalid with changed args, and the 6-hour token lifetime—and clarifies the group/rcept_no mutual-exclusion implications when rerunning. This adds genuine meaning beyond the schema for the most complex parameter.

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 opens with a precise verb-resource-outcome statement: cross-referencing the actual transaction details in the annual J004 filing against J001 large-scale internal transaction disclosures to find 'undisclosed candidates' (거래는 했는데 공시가 없는). This clearly distinguishes it from siblings such as check_j004_consistency and audit_group_disclosures, which target different verification tasks.

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

Usage Guidelines4/5

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

The description gives strong workflow guidance: when to follow up with read_detection_result for full details, the continuation protocol for calling repeatedly until complete:true, when to stop and query the remaining companies individually (continuation.stalled=true), and the per-call 20-company limit. However, it never explicitly names alternatives or states when NOT to use this tool versus siblings like audit_group_disclosures or search_disclosures.

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

disclosure_calendar정기공시 연간 캘린더A

"올해 언제 무엇을 공시해야 하나"에 답합니다 (키 불요). 기한이 달력으로 고정된 정기 공시의 마감일을 전부 계산해 D-day 와 함께 시간순으로 돌려줍니다.

  • 담는 것: 기업집단현황 연1회(5/31)·분기(분기 종료 후 2개월), 약관 금융거래 분기(분기 종료 후 익월 10영업일), 상품·용역 20% 이상 감소(분기 종료 후 45일), 비상장 주요주주 지분변동 분기, 하도급대금 결제조건 반기(45일)

  • 마지막 날이 비영업일이면 다음 최초 영업일로 조정된 실제 기한을 줍니다 (대체공휴일 반영)

  • 각 항목에 그날 무엇을 쓰는지(items)와 항목별 기준일·기준기간이 붙습니다 — 분기 공시는 "공시기한일의 직전 분기" 기준이라 가장 자주 틀리는 지점입니다

  • 같은 날 겹치는 기한(collisions)도 알려줍니다

⚠️ 캘린더에 없다고 공시할 것이 없다는 뜻이 아닙니다. 대규모내부거래 개별거래와 비상장회사 중요사항(사유 발생 후 7영업일)은 사유 발생형이라 달력에 올릴 수 없습니다 — not_in_calendar 를 반드시 함께 전달하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo기한 범위 끝
fromNo기한 범위 시작 — 예: 이번 분기만 보고 싶을 때
yearNo대상 연도. 생략하면 오늘이 속한 연도. **그 해에 기한이 도래하는** 공시를 담는다
todayNo오늘 날짜 (기본: 시스템 날짜). D-day 계산 기준
dutiesNo의무 키로 거르기 (group_status_annual, group_status_quarterly, omnibus_financial, goods_services_reduced, unlisted_major_shareholder, subcontract_payment_terms)
include_pastNo이미 기한이 지난 항목도 포함할지 (기본 true). false 면 남은 것만
unconditional_onlyNo해당 사유가 있을 때만 하는 조건부 의무를 빼고 무조건 의무만 볼지 (기본 false)

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full disclosure burden and handles it exceptionally. It states no key is required (auth), discloses business-day adjustment including substitute holidays, explains the quarterly reference-period logic (the most common error point), reports same-day collisions, and flags that absence from the calendar does not mean no duty exists. This is a model of behavioral transparency for an unannotated tool.

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 description is well-structured and front-loaded: purpose first, then bulleted contents, then a critical warning. It is somewhat long, but every segment earns its place — the items list, business-day adjustment, reference-period caveat, and the not_in_calendar warning are all operationally important. The bullet-point formatting aids scannability for an agent.

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?

For a complex tool with 7 parameters and intricate business logic (business-day adjustment, reference-period semantics, collision detection), the description is remarkably complete. Since there is no output schema, the description explains what the agent will receive: chronological deadlines with D-days, per-item content (items), reference dates, and collision alerts. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds contextual value (what items appear, reference periods, collision reporting) but does not elaborate on individual parameters beyond the schema. The 'duties' keys are listed only in the schema, not reiterated in the description. The schema already documents each parameter clearly, so the description's minimal parameter-specific contribution is acceptable.

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 opens with a concrete verb+resource ('answers what must I disclose this year and when') and precisely scopes what it returns: fixed-calendar periodic disclosure deadlines computed with D-days, sorted chronologically. It clearly differentiates from siblings like search_disclosures (searching) and check_disclosure_duty (checking a specific duty) by focusing exclusively on fixed-deadline periodic items, listing each covered duty explicitly.

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

Usage Guidelines4/5

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

The description gives strong usage context: it covers periodic disclosures with fixed calendar deadlines and explicitly warns that cause-based events (large-scale internal transactions, unlisted company important matters within 7 business days) are NOT on the calendar and require not_in_calendar. It doesn't name an alternative sibling by name, but the caveat effectively routes the agent away from this tool for event-driven disclosures. The quarter-reference caveat also guides correct interpretation of results.

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

find_precedents타사 선례·문안 참고A

"다른 회사는 이 항목을 어떻게 썼나"에 답합니다. 보고서명 키워드로 같은 유형의 최근 공시를 찾아 회사당 1건씩 골라 원문(표 구조 보존 마크다운)을 함께 돌려줍니다. 기본 범위는 대규모내부거래(J001)입니다.

  • 정정이 반영된 최종본 기준입니다 (문안 참고 목적이라 지연 판정과 반대)

  • coverage 에 실제로 훑은 구간이 나옵니다 — 0건은 "그런 공시가 없다"가 아닙니다

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo가져올 선례 수 (기본 3). 건당 원문 다운로드 1회를 소비합니다
presetNo검색 범위 프리셋 (기본 internal_transaction=대규모내부거래)
corp_clsNo법인구분 필터 — 자사와 같은 구분(상장/비상장)의 문안만 보려면 지정
exclude_corpNo제외할 회사 (corp_code 8자리 또는 회사명) — 보통 자사
lookback_daysNo최대 며칠 전까지 거슬러 찾을지 (기본 180일, 최대 1825일=5년). 후보가 모이면 더 내려가지 않습니다. 훑은 구간 안에서는 항상 전수로 확인하며, 사례가 모이거나 시간 예산에 걸리면 멈춥니다 — "3년치·5년치 사례" 질문에 쓰세요. coverage 로 실제 훑은 구간과 그 구간이 전수인지 확인하세요
one_per_companyNo회사당 1건만 골라 표현을 다양하게 (기본 true). false 면 최신순 그대로
max_chars_per_docNo선례당 본문 최대 길이 (기본 8,000자)
report_name_containsYes찾을 유형 키워드 — 보고서명 부분일치 (예: "자금차입", "담보제공", "수익증권", "부동산임차")

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure — and it delivers richly. It discloses the correction basis (정정 반영 최종본 기준), the semantics of coverage (훑은 구간, 0건 != "그런 공시가 없다"), the selection rule (회사당 1건), and the lookback stop condition (후보가 모이면 멈춤). This is exemplary for an unannotated tool.

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 core purpose is front-loaded in the first sentence, and the caveats are organized as compact bullet points. Each bullet earns its place (correction basis, coverage semantics, time range behavior). It is somewhat long for an 8-parameter tool, but the density of useful caveats justifies the length.

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 complex 8-parameter tool with no output schema and no annotations, the description covers the essential interpretation traps (coverage, 0건 meaning, final-version basis) and output format (마크다운 표 구조 보존). What's missing is minor — e.g., no explicit statement of timeouts or result count display — but these aren't critical to correct invocation.

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 genuine behavioral meaning beyond the schema: it clarifies that count consumes one download per precedent, explains lookback_days' non-monotonic scan behavior (후보가 모이면 더 내려가지 않으며 항상 전수로 확인), and ties coverage to interpretation of results. This elevation justifies a 4.

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 and resource — answering "다른 회사는 이 항목을 어떻게 썼나" by fetching recent disclosures of the same type, selecting one per company, and returning the original text as markdown. It clearly differentiates from siblings: it's for 문안 참고 (wording reference) and explicitly contrasts with 지연 판정 (delay judgment), distinguishing it from check_disclosure_duty and search_disclosures.

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

Usage Guidelines4/5

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

It gives clear context on when to use it (finding third-party wording/문안), grounds the default scope (대규모내부거래 J001), and explicitly states what it is NOT for ("

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

get_financials재무제표 조회A

단일회사 재무제표를 조회합니다 (기본: 직전 연도 사업보고서의 재무상태표).

  • key_metrics 의 total_equity(자본총계)·paid_in_capital(자본금)은 기준금액 산정의 totalEquity/paidInCapital 입력으로 그대로 쓸 수 있습니다 (단위: 원)

  • 금액은 raw/value(원 단위)/display 세 값을 함께 줍니다

  • change 는 전기 대비 증감입니다 (손익·현금흐름은 누적 필드가 있을 때만 누적 기준)

  • 외부감사 대상이 아닌 회사는 DART 에 재무제표가 없을 수 있습니다 — 집단 소속사면 포털 재무가 대안입니다

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNodisplay 표시 단위 (기본 million=백만원). raw/value 는 항상 원 단위 그대로
yearNo사업연도 (기본: 직전 연도). 사업보고서는 보통 3월 말 제출이므로 없으면 그 전 해로 다시 시도
queryNo회사명·종목코드·corp_code — resolve_entity 와 같은 규칙
fs_divNoCFS=연결(기본) / OFS=별도. 연결이 없으면 별도로 자동 폴백합니다 (비상장 다수는 별도만 있음)
reportNo보고서 종류 (기본 annual=사업보고서)
corp_codeNoDART 법인코드 8자리
statementNo재무제표 종류 (기본 BS=재무상태표). all 은 응답이 큽니다

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden, and it does so well: it explains that amounts come as raw/value/display, that change is prior-period difference, that cumulative treatment applies only when cumulative fields exist, that OFS falls back to CFS, and that some companies may have no financial statements at all. This is substantial behavioral disclosure beyond the schema.

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 compact and front-loaded: the main purpose appears first, followed by four tight bullets, each adding distinct value. There is no fluff or repetition of schema content.

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?

Given there is no output schema and no annotations, the description covers a lot: defaults, fallback behavior, value formats, change semantics, and availability caveats. It is slightly incomplete regarding error behavior or what the response looks like beyond amounts and key_metrics, but it is still quite complete for a query tool of this complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds some integration context (key_metrics fields usable as downstream inputs) and output semantics, but it does not meaningfully expand on the input parameters themselves, which are already well documented in 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 description states a specific verb and resource: '단일회사 재무제표를 조회합니다' (retrieve single-company financial statements), and it gives a concrete default (latest annual report's balance sheet). It is clearly distinguishable from siblings like get_group_structure or read_disclosure because it scopes to single-company financial statement data.

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

Usage Guidelines4/5

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

The description gives clear usage context: defaults for year, report type, statement type, and fs_div fallback. It also warns that non-externally-audited companies may have no DART financial statements and suggests portal financials as an alternative for group affiliates. It does not explicitly name a sibling tool to prefer instead, so it stops short of full when-not-to-use guidance.

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

get_group_structure기업집단 구조 조회A

공정위 지정 기업집단의 개요(동일인·대표회사·소속회사 수)와 소속회사 전수를 돌려줍니다. 소속회사 목록이 곧 공정위 공시의무의 모집단입니다. EGROUP_API_KEY 필요.

  • DART corp_code 조인은 법인등록번호 기준입니다 — 이름 매칭은 포털과 DART 의 표기 체계가 달라 불가능합니다

  • 포털 데이터는 연 1회(매년 5/1) 갱신되며 연단위로 캐시됩니다

  • 집단명은 공정위 표기를 씁니다: "SK" 가 아니라 "에스케이"

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYes기업집단명("삼성", "에스케이") 또는 기업집단코드("K1000032")
compactNotrue 면 계열사를 schema+값 배열로 (150개사 집단에서 토큰 절감)
join_dartNoDART corp_code 조인 시도 (기본 true). 법인등록번호가 캐시에 채워진 회사만 조인됩니다 — joined 수가 적으면 resolve_entity(fetchJurirNo=true) 로 회사를 조회해 채우세요
year_monthNo기준 공개년월 (미지정 시 최신 지정연도 추정 — 매년 5월 갱신)
include_financialsNo계열사 재무현황 포함 (기본 false, 포털 호출 1회 추가). 자산총액·자본총액·자본금·부채·매출·당기순이익 (단위: 원). 자본총액·자본금은 check_disclosure_duty 의 totalEquity/paidInCapital 입력으로 쓸 수 있습니다

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and performs well: it discloses API key requirements, annual refresh cadence (매년 5/1) with yearly caching, the DART join limitation based on 법인등록번호 rather than names, and the FTC naming convention. These are precisely the behavioral caveats an agent needs.

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 tight and well-structured: a one-sentence purpose, one contextual sentence, and three focused bullet points. Every sentence adds value, with the most important caveats front-loaded.

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?

Given no output schema, the description adequately states what is returned (overview plus full affiliate list) and covers auth, freshness, naming, and join limitations. Minor gaps include no explicit mention of output format for compact mode or financials, but those are covered in the parameter schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds useful context for the group parameter (FTC naming convention, e.g., 에스케이 not SK) and reinforces the DART join logic, but these are mainly elaborations of what the schema already documents.

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 first sentence states a specific verb (돌려줍니다), a precise resource (공정위 지정 기업집단), and the return contents (개요와 소속회사 전수). It clearly distinguishes this structural data source from analytical siblings like check_disclosure_duty and audit_group_disclosures.

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

Usage Guidelines4/5

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

The statement '소속회사 목록이 곧 공정위 공시의무의 모집단입니다' establishes clear context for when to use this tool. It also notes the EGROUP_API_KEY prerequisite. However, it does not explicitly name alternatives or state when not to use this tool.

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

read_detection_result탐지 결과 상세 이어 읽기A

detect_undisclosed_transactions 요약이 준 result_id 로 판정 근거·caveat 전문을 읽습니다 (키 불요, 탐지 엔진을 다시 돌리지 않습니다).

  • section 에 요약의 available_sections 중 하나를 넣으세요 (예: goods_services_signals · coverage · scope_caveats · notes · action_items). 생략하면 결과 전체를 읽습니다

  • 한 번에 최대 8000자이고 응답 크기 예산에 맞춰 더 짧게 올 수도 있습니다. next_offset 을 그대로 다시 넣으면 이어집니다 — 조각을 순서대로 이어붙이면 원본과 정확히 같습니다. 중간 조각은 그 자체로 유효한 JSON 이 아닙니다

  • offset·total_charsUTF-16 코드 단위입니다 (바이트가 아닙니다 — 한글 1자 = 1 단위)

  • ⚠️ 상세는 서버 프로세스 메모리에만 30분 보관됩니다. 만료·회수·서버 재시작 뒤에는 result_unavailable 로 거절하고 다시 탐지해야 합니다 — 다른 결과를 대신 돌려주지 않습니다

  • ⚠️ 읽지 않은 상세를 "확인했다"고 말하지 마세요. 요약의 details_required 는 아직 안 읽은 근거가 있다는 뜻입니다

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo한 번에 읽을 최대 문자 수 (UTF-16 코드 단위, 기본·최대 8000). 응답 크기 예산에 맞춰 더 짧게 돌아올 수 있습니다
offsetNo이어 읽을 시작 위치 (UTF-16 코드 단위, 기본 0). 앞 호출이 준 next_offset 을 그대로 넣으세요
sectionNo읽을 최상위 항목 이름 (요약의 available_sections 목록 중 하나). 예: goods_services_signals · coverage · scope_caveats · notes. 생략하면 결과 전체를 읽습니다. 파일 경로나 a.b 형태의 중첩 표현은 받지 않습니다
result_idYesdetect_undisclosed_transactions 요약 응답이 준 result_id. 수명은 30분이고 서버 프로세스 안에서만 유효합니다

TDQS

A4.7/5.0
Behavior5/5

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

Despite having no annotations, the description discloses the 30-minute memory TTL, result_unavailable rejection after expiry/retrieval/server restart, the non-JSON nature of intermediate chunks, the exact-concatenation guarantee, and the prohibition on claiming unread details as confirmed. This is far more than minimal behavioral disclosure.

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 purpose is front-loaded in the first sentence, and the remaining content is organized into compact, information-dense bullets covering pagination, unit semantics, and warnings. No filler is present; each warning earns its place as safety-critical guidance.

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?

For a paginated reader with no output schema and no annotations, it covers input selection, chunk size limits, ordering and concatenation behavior, failure mode, TTL, and result semantics. The references to next_offset and total_chars provide enough of the response contract for an agent to use the tool correctly.

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 operational nuance: using next_offset as-is, UTF-16 code units with Hangul = 1 unit, response-size budget shortening, and section values drawn from available_sections. Most of this reinforces the schema rather than adding entirely new parameter information, but the added emphasis is genuinely useful.

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?

First sentence names the action (읽습니다), the object (판정 근거·caveat 전문), and the required identifier (result_id). It also clarifies what the tool is not: it does not rerun the detection engine and needs no key, which distinguishes it from detect_undisclosed_transactions.

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

Usage Guidelines4/5

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

States clearly that this is the reader for a detect_undisclosed_transactions summary and explains section selection, omission for full output, and next_offset-based continuation. It does not explicitly name alternative tools for re-running detection, so the when-not guidance is implied rather than fully explicit.

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

read_disclosure공시 원문 읽기A

접수번호(rcept_no)로 공시 원문을 표 구조를 보존한 마크다운으로 돌려줍니다.

  • 표가 그대로 마크다운 표로 나오므로 항목별 기재 내용을 바로 비교할 수 있습니다

  • board_date(이사회 의결일)를 원문에서 추출해 함께 줍니다

  • HWP 첨부만 있는 공시는 body_unparsable 에러와 함께 뷰어 URL 을 안내합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown(기본) = 표 구조 보존. text = 공백 정규화된 평문
rcept_noYesDART 접수번호 14자리
max_charsNo본문 최대 길이 (기본 60,000자). 초과 시 truncated=true 로 잘라서 준다
force_refreshNo캐시를 무시하고 재다운로드 (기본 false). 접수된 공시는 불변이므로 보통 불필요

TDQS

A4/5.0
Behavior3/5

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

No annotations, so description carries the burden. It discloses error behavior for HWP-only disclosures and board_date extraction. However, it doesn't mention truncation via max_chars or caching behavior with force_refresh, which are described only in the schema. Given no annotations, this is a gap.

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?

Concise, front-loaded purpose, uses bullet points for additional details. No wasted words.

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?

Covers main behavior, error case, and board_date extraction. Missing explicit response structure (truncated flag) and caching behavior, but those are in schema. Given no output schema, it could be more explicit about return fields, but it's adequate.

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

Parameters3/5

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

Schema coverage is 100%, so description adds no additional parameter semantics. The description mentions rcept_no but doesn't go beyond schema descriptions for format, max_chars, or force_refresh.

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?

States a specific verb+resource (returns disclosure text) with format (markdown) and key features (table preservation, board_date extraction, error handling). It distinguishes from search_disclosures (search vs read) and read_detection_result (different resource).

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

Usage Guidelines4/5

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

Implies usage when you have a receipt number and need the full text. Provides context about table preservation and board_date extraction, which hints at when it's beneficial. However, it doesn't explicitly name alternatives or when not to use it.

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

resolve_entity회사·기업집단 식별A

회사명·종목코드·법인코드·법인등록번호·기업집단명을 받아 corp_code·stock_code·법인등록번호· 소속 기업집단으로 풀어줍니다.

  • 동명 법인이 여럿이면 임의로 고르지 않고 status="ambiguous" 와 후보 목록을 돌려줍니다 (상호가 같아도 별개 법인일 수 있음) — 후보의 corp_code 로 다시 호출하세요

  • includeGroup=true 는 EGROUP_API_KEY 필요. 최초 1회는 전 기업집단을 순회해 포털 호출 ~103회를 소비합니다 (이후 1년간 캐시)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo해석 대상. auto(기본)면 회사 → 기업집단 순으로 시도한다
queryYes해석할 값. 회사명("삼성전자"), 종목코드("005930"), 법인코드 8자리("00126380"), 법인등록번호 13자리, 또는 기업집단명("삼성")
yearMonthNo기업집단 기준 공개년월 YYYYMM (미지정 시 최신 지정연도를 추정)
fetchJurirNoNo법인등록번호를 기업개황 API로 채울지 (기본 false, 호출 1회 소비). 기업집단포털과 대사하려면 필요하다
includeGroupNo회사를 찾은 뒤 소속 기업집단까지 조회할지 (기본 false). true 면 기업집단포털을 호출하며 EGROUP_API_KEY 가 필요하다

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries behavioral disclosure itself. It transparently explains the ambiguous-entity behavior, the EGROUP_API_KEY requirement, the first-call cost of ~103 portal requests, and one-year caching. It does not describe not-found statuses or full response shape, but the disclosed behaviors are material and well covered.

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 compact and front-loaded: one clear main sentence followed by two high-signal bullets. Every sentence adds practical value, with no filler or repetition of schema content.

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?

Given the 100% schema coverage and no output schema, the description covers the main workflow, ambiguity handling, and expensive side-effects well. The only notable gap is the absence of explicit behavior for not-found or invalid inputs, but the overall definition remains sufficient for correct invocation in most cases.

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 adds meaningful semantics beyond the schema by explaining the cost/caching implications of includeGroup=true and the retry strategy for ambiguous queries, which aids correct use.

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 action ('풀어줍니다' = resolves) applied to concrete inputs (company name, stock code, corporate code, registration number, group name) and outputs (corp_code, stock_code, registration number, group). It is clearly distinguished from the sibling disclosure/financial tools by its identifier-resolution scope.

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

Usage Guidelines3/5

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

The description gives helpful same-tool guidance, such as re-calling with a candidate's corp_code when status is ambiguous yielding and the strong requirement for includeGroup=true. However, it does not explicitly state when to prefer this tool over sibling alternatives or when not to use it.

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

search_disclosures공시 검색A

공시를 검색합니다. 공정위 기업집단 공시 프리셋 6종(preset)이 내장되어 있습니다.

  • mode:"page"(기본) = 한 페이지씩 조회. mode:"batch" = 기간 전체 전수 수집 (중복 제거·건수 집계 포함)

  • 범위가 크면 range_too_large 와 분할 구간을 안내합니다 — 안내된 구간대로 나눠 다시 호출하세요

  • diagnostics 의 truncated/partial_results 가 true 면 결과가 불완전한 것입니다

  • 정정 이전 원본 접수분을 포함합니다 (last_report_only 기본 false — 지연 판정에 필수)

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNopage(기본)=한 페이지 조회. batch=적응형 분할 전수 수집 — 규모가 크면 range_too_large 와 분할 안내를 반환
pageNomode:"page" 의 페이지 번호 (기본 1)
limitNomode:"batch" 응답에 실을 최대 행수 (기본 200). 수집·집계는 전수로 하고 응답만 자릅니다
queryNo회사명·종목코드(6자리)·corp_code(8자리)·법인등록번호(13자리). 동명 법인이 여럿이면 ambiguous_corp 에러와 후보 목록을 돌려줍니다
presetNo공정위 공시 프리셋. ftc_all=J 전체 / internal_transaction=대규모내부거래 / group_status=기업집단현황 / unlisted_material=비상장사 중요사항 / public_interest_corp=공익법인 / subcontract=하도급 결제조건
compactNotrue 면 schema+값 배열 형태로 토큰 30~40% 절감 (행이 많을 때 권장)
date_toNo조회 종료일 YYYYMMDD (기본: 오늘)
corp_clsNo법인구분 Y=유가 K=코스닥 N=코넥스 E=기타(비상장 대부분)
corp_codeNoDART 법인코드 8자리 — query 대신 직접 지정
date_fromNo조회 시작일 YYYYMMDD (기본: 30일 전)
page_sizeNo페이지당 건수 (기본·최대 100)
pblntf_tyNoDART 공시유형 원시 코드 (preset 과 동시 지정 불가)
last_report_onlyNo⚠️ 기본 false. true(최종보고서만)는 정정으로 대체된 원본 접수분을 지워 지연 판정이 불가능해집니다
pblntf_detail_tyNoDART 공시상세유형 원시 코드 (preset 과 동시 지정 불가)
report_name_containsNo보고서명 부분일치 필터 — 서버 필터가 아니라 수집 후 적용됩니다 (예: "자금차입", "기재정정")

TDQS

A4/5.0
Behavior5/5

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

No annotations are present, so the description carries the full behavioral disclosure burden. It reveals non-obvious traits: batch mode does full-period collection with dedup/count, large ranges return range_too_large with split intervals, truncated/partial_results diagnostics mean incomplete results, and pre-correction original filings are included. This is substantial and prevents misinterpretation of duplicated or incomplete data.

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 front-loaded with the core purpose and uses four compact bullets covering mode behavior, error handling, diagnostics, and correction inclusion. Every sentence carries operational information with no filler.

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 tool with 15 parameters and no output schema, the description covers the main operational pitfalls: splitting large ranges, interpreting incomplete-result diagnostics, and handling pre-correction filings. It does not describe the result structure beyond diagnostics, but the schema and behavioral notes together give an agent enough to invoke the tool correctly in most cases.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The schema already documents all parameters, including defaults, enums, patterns, and warnings such as the last_report_only caution. The description adds some context about mode behavior and delay determination, but mostly reinforces schema-level information rather than adding new parameter-level meaning.

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

Purpose4/5

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

The description opens with '공시를 검색합니다' (searches disclosures), a specific verb and resource, and adds that six FTC corporate-group presets are built in. This clearly separates it from read_disclosure as a search operation, though it does not explicitly name siblings or exclusions.

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

Usage Guidelines3/5

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

The description provides internal usage guidance: page vs batch modes, dedup/count behavior, and explicit instructions to split large ranges when range_too_large is returned. However, it does not state when to prefer this over sibling tools like read_disclosure or the audit/check tools, so cross-tool routing is left implied.

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

search_ftc_qna공정위 공식 Q&A 검색A

공정위가 배포한 해설서·FAQ·매뉴얼에서 추출한 공식 질의응답 430건 (2026. 4. 27. 공시 업무 매뉴얼 주요 사례 79건 포함)을 검색합니다 (키 불요). 규칙만으로 판정할 수 없는 경계사례에 공식 답변을 근거로 대는 용도입니다.

  • 검색어는 핵심 명사 위주가 잘 맞습니다. category 로 공시유형을 좁힐 수 있습니다

  • ⚠️ 구판 문서(2008~2015)에는 **폐지된 기준(50억·기한 1일 등)**이 실려 있습니다 — 각 결과의 caveats 를 반드시 함께 읽고, 같은 주제의 2026 매뉴얼 문답(lit26-*)이 있으면 그쪽을 우선하세요

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo최대 결과 수 (기본 5)
queryYes검색어. 거래 상황을 키워드로: "발행어음 자동연장", "자회사 설립 출자", "퇴직연금 거래금액" 등. 질문 문장을 통째로 넣어도 됩니다
categoryNo공시유형 필터. internal_transaction=대규모내부거래(J001), unlisted_material=비상장사 중요사항(J005), group_status=기업집단현황(J004), subcontract=하도급대금 결제조건(J009). 생략하면 전체에서 검색

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It covers the corpus size, the no-key requirement, the presence of abolished standards in old documents, and the mandatory practice of reading caveats and preferring 2026 manual answers. It does not describe output structure or pagination, but the safety warnings are substantial and valuable.

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 description is compact and front-loaded: purpose and corpus in sentence 1, intended use in sentence 2, then bullet-pointed tips and a critical warning. Every sentence earns its place, and the warning is non-redundant. It is slightly longer than minimal but well organized.

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 search tool with 3 simple parameters and no output schema, the description covers the essentials: what is searched, how to search, and critical caveats about outdated content. It tells the agent that results include caveats and that lit26-* entries should be prioritized, which is sufficient for correct invocation and interpretation, though the exact result format is not spelled out.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already well documented in the schema. The description adds only a minor tip that search terms work best as core nouns and that category narrows by disclosure type—both largely redundant with the schema. This is a small increment over the baseline.

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 clearly states it searches 430 official Q&As extracted from FTC guides/FAQs/manuals, including 79 key cases from the 2026 manual, and explicitly frames its purpose as providing official answers for edge cases that rules alone cannot decide. This distinguishes it from sibling tools like search_disclosures and find_precedents by focusing on authoritative Q&A content.

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

Usage Guidelines4/5

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

It gives clear context: use when rules alone cannot determine a boundary case, with search tips on core nouns and category filtering. It also warns to read each result's caveats and prefer 2026 manual entries (lit26-*) over outdated documents. However, it does not explicitly name sibling alternatives or state when not to use the tool, so it falls short of the highest mark.

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

server_info서버 상태·설정 진단A

서버 버전, 인증키 설정 여부(값은 노출하지 않음), 오늘 사용한 API 호출 수와 잔여 예산, 캐시 규모(법인 인덱스·원문 캐시), 공휴일 데이터 검증 연도, Q&A 지식베이스 건수를 돌려줍니다 (로컬 조회, 키·API 호출 불요).

"키를 넣었는데 인식이 안 된다", "한도가 얼마 남았냐", "공휴일 데이터가 몇 년도까지 있냐" 같은 질문의 진단 창구입니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description bears full burden, and it does well: it discloses side-effect-free local lookup, explicitly says no API key or API invocation is needed, states that the key value is not exposed, and lists the returned metrics. This fully characterizes behavior for a zero-parameter diagnostic tool.

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?

Two sentences: the first front-loads the complete list of returned items and key behavioral facts, the second gives concrete trigger questions. Every sentence earns its place with no redundancy.

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?

For a no-parameter, no-output-schema tool, the description is complete: it covers all return values, the local/no-auth nature, and examples of when to call it. There are no structured fields left to clarify, so nothing is missing.

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?

The tool has 0 parameters, so baseline is 4. The description reinforces that no authentication inputs are needed by stating '키·API 호출 불요' (no key/API call required), which adds relevant context beyond the empty 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 description uses a specific verb ('돌려줍니다' - returns) and identifies the resource as server status/config diagnostics, enumerating the exact data fields. This clearly distinguishes it from all sibling tools, which are domain-specific disclosure/financial tools.

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

Usage Guidelines4/5

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

It gives explicit usage context and sample queries ('키를 넣었는데 인식이 안 된다', '한도가 얼마 남았냐', '공휴일 데이터가 몇 년도까지 있냐'), plus a constraint (local lookup, no key/API call required). It doesn't name alternatives or say when not to use it, but no sibling serves a diagnostic role, so the guidance is adequate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.3.0
    • Addedaudit_periodic_disclosures
    • Changedcheck_disclosure_duty1 field changed
      • addedInput schema / properties / boardResolution
        Added value: +{
        +  "description": "과태료 산정용: 이사회 의결을 실제로 거쳤는지. 대규모내부거래·공익법인(§26 계열)에서 의결 없이 공시하거나 미공시한 사건은 별표 9의 \"의결 X\" 칸(기본금액 5,000만~7,000만원)이 적용되어 금액이 크게 달라집니다. 생략하면 의결을 거친 것으로 가정하고 그 가정을 caveat 로 알립니다",
        +  "type": "boolean"
        +}
    • Addeddetect_undisclosed_transactions
    • Addeddisclosure_calendar
    • Addedread_detection_result
    • Addedserver_info
  2. 12 tool updatesv0.1.0
    • First observedassess_correction_risk
    • First observedaudit_group_disclosures
    • First observedcalc_business_days
    • First observedcheck_disclosure_duty
    • First observedcheck_j004_consistency
    • First observedfind_precedents
    • First observedget_financials
    • First observedget_group_structure
    • First observedread_disclosure
    • First observedresolve_entity
    • First observedsearch_disclosures
    • First observedsearch_ftc_qna

TDQS

A4.2/5.0

Scored across 17 tools

Disambiguation4/5

Each tool targets a distinct step in the disclosure-compliance workflow, from searching and reading filings to auditing late, missing, or inconsistent disclosures. The audit-related tools are the closest in purpose, but their descriptions clearly separate late-filing detection, periodic-filing absence checks, and cross-document undisclosed-transaction detection.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern such as search_disclosures, read_disclosure, resolve_entity, and get_financials. A few names like disclosure_calendar and server_info break the pattern, and calc_business_days uses an abbreviated verb, but overall the convention is largely consistent and predictable.

Tool Count4/5

At 17 tools, the server is slightly above the typical comfortable range for a single MCP server, but the domain is genuinely complex and each tool addresses a distinct compliance task. The count feels justified rather than bloated, with no obvious redundant tools.

Completeness5/5

The tool set gives comprehensive coverage of the Korean fair-trade disclosure compliance lifecycle: searching, reading, duty determination, deadline calculation, calendar planning, entity resolution, financial lookup, precedent research, official Q&A search, and multiple audit modes for late, missing, undisclosed, or inconsistent filings. It also provides follow-up tools for reading detection details and checking correction risk, leaving few practical dead ends.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP Server for public disclosure information of Korean companies, powered by the dartpoint.ai API.
    3
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Korea's DART (Data Analysis, Retrieval and Transfer) electronic disclosure system, operated by the Financial Supervisory Service (FSS). Exposes company disclosures, company profiles, and financial statements via the OpenDART public API.
    3
    8 npm
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Exposes OPEN DART (Korean FSS electronic disclosure) as an MCP server for searching and retrieving original disclosure documents, shareholdings, and financial statements, primarily for legal and internal control review.
    7
    -