dart-risk-mcp
dart-risk-mcp is an MCP server that lets an AI query Korea's DART electronic disclosures to surface unfair-trading risk signals — fact-only, with no scores, grades, or trading advice.
Company risk reports — comprehensive analysis (
analyze_company_risk), chronological event narrative with entry/deepening/exit phases (build_event_timeline), disclosure-structure anomaly metrics, and basic company info.Disclosure document reading — list filings by stock code, fetch full text, browse section tables of contents, read by section or page, and analyze a single filing's risk.
Financial anomaly scanning — receivables/inventory/cash-flow/capital-impairment shifts, accrual ratios, consolidated-vs-separate net income reversals, Beneish variables; plus summaries, multi-company comparison (up to 20 firms × 10 years), and full account-level statements.
Actor/network tracing — detect common executives and CB/rights-issue subscribers across 2–5 firms over multiple years (
find_actor_overlap), insider stake-change time series, shareholder data, executive compensation, watchlist management, and opt-in public-record registry lookup.Capital and fund-flow tracking — capital-event rhythm (repeated 증자/감자/CB churn), fund usage plan vs. actual, CB/BW/EB terms (dilution, refixing floor), major decisions (M&A, mergers, splits), affiliate investment networks, and debt balances/maturity pressure.
Audit monitoring — audit opinion and auditor-change history, non-audit service contracts, and verbatim quotes from audit reports (going-concern, KAM sections).
Working-capital trends — multi-year turnover ratios, cash conversion cycle, and driver-by-driver comparisons.
Specialized lookups — unlisted audited-firm financials, keyword search within a single report's notes, report revision versions, and verbatim audit-opinion text.
Market-wide early warning — preset batch scans across all listed companies (CB issuance, treasury, reverse split, delisting, embezzlement, etc.) and signal/precedent explanations.
Output principle — Korean narrative results only, always tied to disclosure receipt numbers; no risk scores, ratings, price predictions, real-time alerts, or automated monitoring.
Integrates with the Korean DART (Data Analysis, Retrieval and Transfer) financial disclosure system to detect unfair trading risk signals, enabling AI agents to analyze company disclosures, track insider trading, monitor capital structure changes, scan market-wide disclosures, and compare financial anomalies.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dart-risk-mcp삼성전자 최근 공시 위험 분석해줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DART 리스크 분석 MCP
공시 기반 불공정거래 위험 모니터링 — 금융감독원 전자공시(DART)에서 위험 신호를 읽어내는 MCP 서버입니다.
📖 처음이신가요? 사전 지식 없이 읽을 수 있는 프로젝트 소개 페이지를 먼저 보세요.
🔎 설치 없이 맛보기 — 리스크 뷰어: 종목명을 입력하면 본인의 무료 DART 키로 최근 12개월 공시를 실시간 스캔해 신호 타임라인·자본 이벤트 리듬을 시각화합니다(점수 없음, 사실만).
공시는 누구에게나 공개돼 있지만, 한 건씩 따로 공개됩니다. 불공정거래의 신호는 낱장이 아니라 흐름과 연결에 있습니다 — 12개월 안에 자본을 세 번 주무르는 리듬, 회사마다 이름을 바꾸는 투자조합 뒤의 같은 임원, 조달 명분과 다른 곳으로 흘러간 돈. 이 도구는 Claude 같은 AI가 DART에 직접 접속해 그 흐름을 읽게 해 줍니다.
🚗 그런데 "MCP"가 뭐예요?
한마디로 AI에게 바깥 세상과 연결되는 "옵션 장치"를 달아 주는 표준 규격입니다(Model Context Protocol). 자동차에 빗대면 쉽습니다.
그냥 AI 채팅 = 깡통차. 잘 달리지만 아는 건 배운 것뿐이라, 오늘 올라온 공시나 내 데이터는 보지 못합니다.
'프로젝트' 같은 기본 기능을 쓰는 정도 = 에어컨 옵션 하나 단 셈. 조금 편해지죠.
MCP를 붙이면 = 내비게이션을 단 것과 같습니다. AI가 바깥(여기선 DART 전자공시)에 직접 접속해 길을 찾아 줍니다. 잘 엮어 쓰면 여러 도구를 알아서 조합하는 자율주행급까지 갑니다.
다른 걸로 빗대도 똑같습니다.
📷 사진앱 필터 — 같은 사진도 필터를 입히면 전혀 달라지듯, 같은 AI도 MCP라는 도구를 끼우면 할 수 있는 일이 달라집니다.
🍜 라면 + 계란 — 라면(기본 AI)도 맛있지만 계란을 넣으면 다른 음식이 되죠. 이 프로젝트가 바로 그 '계란' — AI에게 DART 공시를 직접 읽는 능력을 얹어 줍니다.
설치하면 Claude Desktop·Claude Code·Cursor 등에서 한국어 질문만으로 공시 분석이 됩니다. 도구 이름을 외울 필요도 없어요.
예: "이 다섯 회사에 공통으로 등장하는 인물 있어?" → 5개사의 CB 인수자·등기임원을 다년으로 겹쳐 공통 행위자를 찾아 줍니다.
Related MCP server: korean-dart-mcp
설치하기
설치 방법은 두 가지입니다. Claude Desktop을 쓴다면 방법 A(원클릭) 가 가장 쉽습니다 — 터미널이 전혀 필요 없어요.
방법 A — 원클릭 확장(.mcpb) · Claude Desktop · 터미널 0 ⭐
최신 릴리스에서
dart-risk-mcp.mcpb파일을 내려받습니다.Claude Desktop → 설정(Settings) → Extensions 를 열고, 받은
.mcpb파일을 창에 끌어다 놓습니다(또는 "확장 설치"로 열기).설치 화면의 DART API 키 칸에 키를 붙여넣으면 끝입니다. (키가 없으면 아래 방법 B의 3단계에서 무료로 2분이면 발급 — 발급만 하고 이 칸에 붙여넣으면 됩니다.)
파이썬을 직접 설치할 필요 없이 Claude Desktop이 알아서 처리합니다.

Claude Desktop → 설정 → 확장 프로그램. 이 화면에 .mcpb 파일을 끌어다 놓으면 설치됩니다.
방법 B — 터미널로 설치 (Cursor·Windsurf·Claude Code 등 그 외 클라이언트)
처음이라도 순서대로만 따라오면 약 10분이면 끝납니다.
⛔ 가장 먼저 알아둘 것
아래에 나오는
pip install ...같은 명령어는 Claude(또는 ChatGPT) 채팅창에 입력하는 게 아닙니다. 컴퓨터의 "터미널"(명령 프롬프트) 이라는 검은 창에 입력하는 것입니다. 채팅창에 붙여넣으면 아무 일도 일어나지 않아요. 터미널 여는 법은 바로 아래 1단계에 있습니다.
1단계 — 터미널(명령어 입력하는 창) 열기
명령어를 입력하는 전용 프로그램입니다. 운영체제에 따라 여는 법이 다릅니다.
Windows — 키보드에서
⊞ Windows키를 누르고powershell또는cmd라고 입력한 뒤 Enter. 파란색(또는 검은색) 창이 뜹니다.Mac —
⌘ Command + Space를 눌러 Spotlight를 열고터미널또는terminal이라고 입력한 뒤 Enter. 흰색/검은색 창이 뜹니다.
이 창이 앞으로 명령어를 입력할 곳입니다. 채팅창이 아니라 이 창입니다.

이렇게 검은 창이 뜨면 준비 완료. (Windows 예시 — cmd든 powershell이든 괜찮습니다.)
2단계 — 파이썬(Python)이 설치돼 있는지 확인
이 도구는 파이썬이라는 프로그램 위에서 돌아갑니다. 대부분의 컴퓨터엔 없거나 버전이 낮으니 먼저 확인합니다.
터미널에 아래를 그대로 입력하고 Enter:
python --version
Python 3.11.x처럼 3.11 이상 숫자가 나오면 → 통과. 3단계로 가세요.Python 2.x가 나오거나,'python'은(는) 내부 또는 외부 명령... 이 아닙니다/command not found같은 오류가 나오면 → 아직 없는 것입니다. 아래에서 설치하세요.
python.org/downloads 에 접속해 노란색 다운로드 버튼(최신 버전)을 눌러 설치 파일을 받습니다.
설치 파일을 실행합니다.
⚠️ Windows에서 아주 중요: 설치 첫 화면 맨 아래의
Add python.exe to PATH체크박스에 반드시 체크한 뒤Install Now를 누르세요. 이걸 놓치면 나중에python명령을 못 찾습니다.Mac은 그냥
계속→설치를 누르면 됩니다.
설치가 끝나면 터미널 창을 완전히 닫았다가 다시 열고(중요), 다시
python --version을 입력해 3.11 이상이 나오는지 확인하세요.Mac에서
python이 안 되면python3 --version으로 시도해 보세요. 이 경우 앞으로 나오는python을 전부python3로 바꿔 입력하면 됩니다.
3단계 — DART API 키 발급 (무료·2분)
DART(금융감독원 전자공시)에서 데이터를 가져오려면 본인 전용 열쇠(키)가 필요합니다. 무료입니다.
opendart.fss.or.kr 접속 → 오픈API 신청 → 인증키 신청/관리.
이메일 주소를 넣고 인증하면 길고 복잡한 문자열(예:
a1b2c3d4e5...) 하나를 즉시 받습니다. 이게 API 키입니다.이 키를 메모장 같은 곳에 잠깐 복사해 두세요. 잠시 뒤 붙여넣습니다. (일 20,000건까지 조회 가능)
4단계 — 도구 설치하기
이제 1단계에서 연 터미널 창으로 돌아와, 아래 두 줄을 한 줄씩 입력하고 각각 Enter를 누릅니다.
pip install dart-risk-mcp
python -m dart_risk_mcp.setup
첫 줄(
pip install ...)은 도구를 내려받아 설치합니다. 글자가 주르륵 지나가다 멈추면 완료된 것입니다.둘째 줄(
python -m dart_risk_mcp.setup)은 컴퓨터에 깔린 AI 프로그램(Claude Desktop 등)을 자동으로 찾아 연결해 줍니다. 중간에 "API 키를 입력하세요" 라고 물으면, 3단계에서 복사해 둔 키를 붙여넣고 Enter를 누르세요.터미널에 키를 붙여넣는 법: Windows는 창 안에서 마우스 오른쪽 클릭, Mac은
⌘ Command + V.기존에 쓰던 다른 MCP 설정이 있어도 지우지 않고 그대로 둡니다.
'pip'은(는) ... 명령이 아닙니다/command not found: pip→pip대신python -m pip install dart-risk-mcp로 입력해 보세요.Mac에서
python이 안 됐다면pip도pip3로,python -m ...은python3 -m ...로 바꿔 입력합니다.Permission denied류 권한 오류 → 명령 끝에--user를 붙여pip install dart-risk-mcp --user로 시도하세요.
5단계 — AI 프로그램 재시작하고 질문하기
Claude Desktop(또는 사용 중인 AI 프로그램)을 완전히 종료했다가 다시 켭니다. (연결을 새로 읽어들이기 위해 꼭 필요합니다.)
이제 채팅창에 평소처럼 한국어로 질문하면 됩니다:
"삼성전자 최근 1년 공시 흐름 요약해줘"
도구 이름을 외울 필요가 전혀 없습니다. 질문만 하면 AI가 알아서 알맞은 도구를 골라 씁니다. 잘 안 된다면 아래 "자주 막히는 부분"을 보세요.

*질문하면 이렇게 도구 사용 권한을 묻는 창이 뜹니다. **"항상 허용"*을 누르면 다음부터 묻지 않습니다 — 이 화면이 보이면 설치 성공입니다.
AI가 "그런 도구가 없다"고 해요 → AI 프로그램을 완전히 껐다 켰는지 확인(5단계). 백그라운드에 남아 있으면 재시작이 안 된 것일 수 있습니다.
"DART_API_KEY가 없다"는 오류 → 4단계의
python -m dart_risk_mcp.setup을 다시 실행해 키를 넣거나, 아래 "수동 설정"의 JSON에 키를 직접 넣으세요.Claude Code 사용자 → 자동 셋업 대신 터미널에서
claude mcp add명령으로 등록하는 것이 확실합니다.그래도 안 된다 → GitHub 이슈 에 오류 메시지를 그대로 복사해 올려 주시면 도와드립니다.
자동 셋업 대신 설정 파일을 직접 편집하려면, 아래 내용을 클라이언트 설정 파일에 추가하고 발급받은_키 자리에 3단계의 키를 넣습니다.
{
"mcpServers": {
"dart-risk": {
"command": "python",
"args": ["-m", "dart_risk_mcp"],
"env": { "DART_API_KEY": "발급받은_키" }
}
}
}설정 파일 위치: Claude Desktop은
claude_desktop_config.json, Claude Code는claude mcp add, 기타 클라이언트는 각 문서 참조.uv 사용자:
"command": "uvx", "args": ["dart-risk-mcp"]로 대체 가능(별도 설치 불필요).특정 버전 고정:
pip install dart-risk-mcp==1.6.0· 개발판:pip install git+https://github.com/anboyu-alt/dart-risk-mcp.git
💡 설치가 부담스럽다면 — 아무것도 깔지 않고 웹에서 바로 맛보는 리스크 뷰어가 있습니다. 종목명만 넣으면 최근 12개월 공시를 시각화해 줍니다.
무엇을 하나
축 | 내용 |
신호 탐지 | 위험 상관이 높은 공시 유형 37종(CB/BW, 무상감자, 최대주주 변경, 감사의견 이슈, 조회공시, 회생절차 …)을 8개 카테고리로 자동 표시. 금감원·금융위 공개 적발 사례 기반 키워드 |
패턴 인식 | 신호의 조합 9종 — 무자본 M&A( |
행위자 추적 | 여러 회사의 CB 인수자·유상증자 참여자·등기임원 명단을 다년으로 겹쳐 공통 인물 탐지. 조합명은 매번 바뀌어도 임원 이름은 공시에 남는 고정점 |
재무 이상 스캔 | 매출채권·재고 급증, 이익·현금흐름 괴리, 전기 수치 재작성, 연결·별도 순이익 역전, XBRL에서 추출한 감가상각비로 복원한 Beneish 연구 변수 8종(지수 사실 표기, 합산 점수 없음) |
실제 대화는 이렇게 흘러갑니다
결과물은 표가 아니라 대화 속 서술형 리포트로 나오고, 후속 질문으로 꼬리를 물며 깊어집니다. 아래 AI 응답은 이 문서를 쓰면서 **실제로 MCP를 호출해 받은 응답(2026-07-18)**에서 그대로 발췌한 것입니다(인물명만 마스킹).
👤 "제이스코홀딩스, 요즘 공시에 이상한 흐름 있어?"
🤖 track_capital_structure — "🎯 12개월 안에 자본 관련 공시가 지나치게 자주 반복되고 있습니다 — 증자·감자·자사주·CB/BW/EB/RCPS 같은 자본 구조 변경이 12개월 안에 3건 이상 몰리는 상태입니다. 정상적인 기업은 자본 구조를 자주 건드리지 않습니다. (…) 자본 이벤트 총 47건 · 12개월 최대 집중도: 26건"
👤 "이름 바꿔가면서 여러 회사를 드나드는 세력은 어떻게 잡아? 이 다섯 회사에 공통 인물 있는지 봐줘"
🤖 find_actor_overlap (5개사 · 3년) — "이번 비교에서 2곳 이상에 동시에 등장한 인수자가 3명/건 발견됐습니다. ⚠️ 신○수 — 3개 회사에 [임원] 경로로 등장 · ⚠️ 신○규 — 2개 회사 · ⚠️ 이○영 — 2개 회사 (…)"
👤 "저 사람 워치리스트에 올려두고, 다음에 회사 늘려서 다시 봐줘"
🤖 manage_watchlist — "✅ '신○수' 갱신 — 총 3개사: CG인바이츠, 제이케이시냅스, 헬스커넥트" — 다음부터
find_actor_overlap(watchlist="…")한 줄로 회사군 전체 재조회.
더 긴 대화 데모는 소개 페이지에 있습니다.
도구 33개 — 질문으로 찾기
도구 이름을 외울 필요 없습니다. AI에게 질문하면 알맞은 도구가 호출됩니다.
🔀 공시 도구를 여러 개 쓰고 있다면 — 이 서버의 이름은
dart-risk입니다. 「dart-risk로 셀트리온 봐줘」처럼 앞에 붙이면 이쪽으로 옵니다.dartrisk·다트리스크·다트 리스크라고 불러도 같은 곳을 가리킵니다(서버가 스스로 알립니다). 다른 DART 도구를 밀어내지는 않습니다 — 재무제표·원문 조회는 익숙한 도구를 쓰시면 됩니다.
이런 질문을 하면 | 이 도구가 움직입니다 |
"이 회사, 괜찮은 거야?" |
|
"공시 원문을 직접 읽고 싶어" |
|
"재무제표가 수상해" |
|
"돈이 어디로 갔는지 쫓고 싶어" |
|
"사람을 쫓고 싶어" |
|
"시장 전체를 훑고 싶어" |
|
실측으로 검증합니다
아래는 실제 DART API 응답에서 나온 결과입니다(해당 시점 기준, 사실 표기).
임원 겸직으로 세력 추적 — 무관해 보이는 5개 상장사를 3년 조회 → 같은 인물이 3개사 등기임원으로 겹치고 동행 인물 2명이 함께 드러남 (
find_actor_overlap)자본 주무르기 리듬 — 한 코스닥사에서 12개월 내 자본 이벤트 집중 + 공시의무 위반 동반 →
capital_churn_anomaly패턴 라이브 발화연결<별도 역전 — 연결 순이익 4,189억 < 별도 1조 48억(−58.3%) 자동 표시 → 종속회사 합산 손실 확인 지점 (
CFS_OFS_REVERSAL)XBRL 좁은 추출 — 요약 재무 API에 없는 감가상각비를 사업보고서 XBRL에서 추출(연결 43.6조/39.6조) → Beneish DEPI·TATA 복원
검증 방식: 유가증권·코스닥 10개사 × 31개 도구의 실측 골드 출력 304건 + 테스트 5,400여 개가 저장소에 있으며, 모든 변경은 이 실측 출력과 대조해 회귀 검증됩니다. 라이브로 재현된 적 없는 신호는 CLAUDE.md의 검증 매트릭스에 ⚠로 정직하게 표기합니다.
출력 원칙 — 점수를 매기지 않습니다
이 도구의 가장 중요한 설계 결정은 **"무엇을 하지 않는가"**입니다.
점수·등급 없음 — "위험도 82점", "고위험" 같은 표기를 일절 하지 않습니다. 정량화된 낙인은 그 자체로 판정이 되고 투자 권유로 오독됩니다. 이 원칙은 자동 회귀 테스트(
tests/test_golden_output_hygiene.py)가 기계적으로 지킵니다.한정 예외: 공개 리스크 뷰어는 신호에 2단계 관찰 우선순위(주의/참고)를 배지로 표시합니다. 이는 "무엇부터 볼 것인가"의 정렬 표시이지 위험 판정·점수·등급이 아니며, 뷰어 화면에 같은 취지의 면책이 함께 표기됩니다. MCP 도구 출력에는 적용되지 않습니다.
사실 표기, 판정 없음 — "연결 순이익이 별도보다 58% 작습니다"까지만 말하고 "분식 의심"이라고 말하지 않습니다. 모든 출력에 근거 공시 접수번호가 붙습니다.
인물 낙인 없음 — 행위자 조회는 공개기록 등장 사실만 반환하며, 항상 동명이인 가능성과 원본 확인 필요를 고지합니다.
하나의 한국어 서술 출력 — level/mode/format 분기가 없습니다. 원시 데이터가 필요하면 원문 도구(
get_disclosure_document등)를 조합하세요.
이 도구가 하지 않는 것
안 하는 것 | 이유 |
매수·매도 추천, 가격 예측 | 출력은 투자 판단의 근거가 아닙니다 |
위험 점수·등급 부여 | 정량화는 판정·투자 권유로 해석될 수 있음 |
실시간 알림·자동 감시 | 조회는 항상 사용자가 시작합니다 |
업종 평균 비교 | DART 미제공 — 회사 자체의 전년 대비 추세만 사용 |
인물 데이터 배포 | 레지스트리 데이터는 저장소·배포물에 미포함(아래 opt-in 참조) |
행위자 레지스트리(opt-in)와 연결망
공개기록 행위자 레지스트리 —
lookup_known_actor등이 참조하는 인물 데이터는 v1.5.0부터 이 저장소·배포물에 포함되지 않습니다(빈 스켈레톤만 동봉). 원본은 제작자가 비공개로 관리하며, 조회 참여를 원하면 제작자에게 연락해 읽기 전용 접근을 요청하세요(opt-in). 명단 관련 이의·문의도 같은 경로로 받습니다.행위자 연결망 시각화 — 반복 등장 행위자와 회사의 연결망을 보여주는 인터랙티브 화면을 별도로 운영 중입니다(열기). 화면에는 실명이 포함되며, 표기는 공시에 적힌 명단을 그대로 옮긴 사실 표기이지 판정이 아니고 동명이인·동명 법인은 미확인입니다.
위 두 가지 모두 문의는 제작자 GitHub 프로필의 연락처로 보내 주세요.
개발자 안내
git clone https://github.com/anboyu-alt/dart-risk-mcp.git && cd dart-risk-mcp
pip install -e . && pip install pytest
python -m pytest -q # 전체 테스트 (API 키 불필요)
python scripts/regen_goldens.py --dry-run # 실측 골드 재생성 매트릭스 확인 (키 필요)아키텍처·33개 도구 상세·DART 엔드포인트 맵·신호 추가 방법: CLAUDE.md (개발자 가이드)
변경 이력: Releases
외부 의존성은
mcp,requests둘뿐입니다(최소 의존성 원칙). HTML 파싱도 표준 라이브러리로 처리합니다.PR 환영합니다. 단, 비범위 항목(점수 부여·실시간 알림·매매 추천 등)은 설계 결정과 충돌하므로 받지 않습니다.
라이선스 · 크레딧
MIT License — 자유롭게 사용·수정·배포할 수 있습니다.
일부 재무 분석 로직(업종별 회계정책 맵, 주석 분류, Beneish 변수, 감사인 별칭 등)은 capitalparser/kreports-dart-mcp(Apache 2.0)에서 이식했습니다 — 상세 내역은 THIRD_PARTY_NOTICES.md.
데이터 출처: 금융감독원 DART OpenAPI.
⚠️ 면책: 본 도구의 모든 출력은 공시라는 공개 기록의 사실 표기이며, 특정 기업·인물에 대한 판정이나 투자 권유가 아닙니다. 중요한 판단 전에는 반드시 DART 원문 공시를 직접 확인하세요.
Available Tools
33 toolsanalyze_company_riskA
기업명 또는 종목코드로 공시 기반 불공정거래 위험 신호를 분석한다.
공개기록 레지스트리(opt-in)가 설정돼 있고 이 회사가 등재 행위자의 관련기업으로 태깅된 경우, 리포트 말미에 공개기록 참고 섹션이 추가된다.
Args: company_name: 기업명 (예: "에코프로") 또는 종목코드 6자리 (예: "086520") lookback_years: 조회 기간(년). 기본 1년, 1~5년 범위. 1년을 넘으면 원문 사실 블록 없이 신호·패턴·타임라인만 담은 "지도"가 된다 — 특정 구간을 깊게 보려면 from_date/to_date로 좁혀 다시 조회한다. from_date: 조회 시작일(선택). "2024-01-01"·"20240101" 형식. 주면 lookback_years는 무시된다. to_date: 조회 종료일(선택). 미지정 시 오늘. from_date만 주면 그날부터 오늘까지, to_date만 주면 그날 기준 1년.
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | No | ||
| from_date | No | ||
| company_name | Yes | ||
| lookback_days | No | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It discloses conditional behavior (registry opt-in section), output mode changes (map without original fact blocks), and date-override semantics. It does not cover errors or side effects, but the disclosed behaviors are substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Opens with the core purpose, isolates the conditional registry behavior, and structures the parameter details in a compact Args block. Every sentence adds meaningful information without repeating schema defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and zero schema descriptions, the description covers most operational details well and can rely on the output schema for return values. The main gaps are the undocumented lookback_days parameter and lack of guidance on choosing among risk-analysis sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by explaining company_name, lookback_years, from_date, and to_date with examples, formats, defaults, and precedence. However, lookback_days appears in the schema but is completely undocumented, leaving a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear and specific action: analyze disclosure-based unfair trading risk signals for a company name or stock code. The resource and verb are concrete, but it does not explicitly differentiate itself from the similarly named sibling tool check_disclosure_risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage conditions: lookback_years range and default, the map mode when exceeding one year, and the recommendation to narrow with from_date/to_date for deeper sections. No explicit when-not-to-use or sibling exclusions are given, 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.
build_event_timelineA
기업의 공시 이벤트를 시간순으로 정렬해 조작 흐름의 서사를 구성한다.
각 이벤트를 진입기(자금 조달/경영권 진입), 심화기(지배구조 변화), 탈출기(의심/수사/부실) 단계로 분류하고, 알려진 위기 패턴과 매칭한다.
공개기록 레지스트리(opt-in)가 설정돼 있고 이 회사가 등재 행위자의 관련기업으로 태깅된 경우, 리포트 말미에 공개기록 참고 섹션이 추가된다.
Args: company_name: 기업명 (예: "에코프로") 또는 종목코드 6자리 (예: "086520") lookback_years: 조회 기간(년). 기본 1년, 1~5년 범위. 1년을 넘으면 원문 사실 블록 없이 신호·패턴·타임라인만 담은 "지도"가 된다. from_date: 조회 시작일(선택). "2024-01-01"·"20240101" 형식. 주면 lookback_years는 무시된다. to_date: 조회 종료일(선택). 미지정 시 오늘. from_date만 주면 그날부터 오늘까지, to_date만 주면 그날 기준 1년.
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | No | ||
| from_date | No | ||
| company_name | Yes | ||
| lookback_days | No | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses not only the sorting behavior but also the automated stage classification, crisis-pattern matching, and a conditional public-record reference section that appears only under specific opt-in and tagging conditions. This adds meaningful behavioral detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary purpose, followed by behavioral detail and parameter semantics. Each sentence adds useful information, and the Args section is organized. The formatting appears slightly cramped or truncated around lookback_years and from_date, which slightly hurts readability but not substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, behavior, conditional output sections, and most parameters. Because output schema exists, not describing return values is acceptable. However, the undocumented lookback_days parameter, missing date format, and lack of any sibling differentiation prevent the description from being fully complete for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does document company_name (accepts name or six-digit code), lookback_years (default 1, range 1–5), and from_date/to_date behavior (including default ranges when only one is given). However, lookback_days is omitted entirely and no date format is specified, leaving a real gap for an agent attempting correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: it sorts a company's disclosure events chronologically to build a manipulation-flow narrative. It goes beyond the name by describing the three-stage classification (entry, deepening, exit) and matching against known crisis patterns, which distinguishes it from raw disclosure-listing siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this tool is useful: when an agent needs a chronological, pattern-matched narrative of events rather than a simple list of disclosures. It does not explicitly name alternatives or when-not-to-use cases, which prevents a 5, but the intended use case is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_disclosure_anomalyA
공시 구조 지표 5종의 건수·비율을 집계해 사실 요약을 반환합니다.
정정공시 비율·감사의견 이슈·공시의무 위반·자본 스트레스·조회공시 빈도 5개 지표를 나열합니다. 위험도를 정량화하거나 등급화하지 않습니다(v0.8.5 원칙).
Args: company_name: 기업명 또는 종목코드 lookback_years: 조회 기간(년). 기본 1년, 1~5년 범위.
Returns: 지표별 탐지 건수·근거 공시명 텍스트 (점수·등급 없음)
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | Yes | ||
| lookback_days | No | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently lists the 5 indicators, states return format (counts and basis disclosure names, no scores/grades), and mentions the version. It does not mention read-only or side effects, but given the tool is likely read-only, the disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: purpose, indicator list, and Args section. It is front-loaded and has minimal waste. However, the indicator list could be more structured (e.g., bullet points) for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema covering return values, the description sufficiently explains inputs for company_name and lookback_years, but misses lookback_days and does not elaborate on the meaning of each indicator. This leaves some context gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It describes company_name (accepts name or stock code) and lookback_years (range 1-5, default 1), but does not mention the lookback_days parameter at all, leaving one parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool aggregates 5 specific disclosure anomaly indicators and returns a factual summary. It explicitly differentiates by stating it does not quantify or grade risk (v0.8.5 principle), distinguishing it from siblings like check_disclosure_risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (to get factual summary of anomaly indicators) and what it does not do (no risk quantification). While it does not name alternatives, the negative statement provides clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_disclosure_riskB
DART 공시 접수번호 또는 공시 제목으로 해당 공시의 위험도를 분석한다.
Args: rcept_no: DART 접수번호 14자리 (예: "20240315000123") report_name: 공시 제목 (접수번호 없을 때 사용, 예: "전환사채권발행결정")
| Name | Required | Description | Default |
|---|---|---|---|
| rcept_no | No | ||
| report_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 only states the purpose and input parameters, but fails to disclose what 'risk' entails, whether the operation is read-only, any side effects, or limitations. There is no mention of what happens if both parameters are provided or neither.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a single main sentence followed by a clean parameter list with examples. There is no wasted text, and the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two optional parameters and an output schema, so the description does not need to explain return values. However, it leaves out important context such as what risk criteria are used, how to handle missing inputs, and precedence when both parameters are provided (though 'used when no receipt number' implies rcept_no takes precedence). These gaps make it adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions (0% coverage), but the description's Args section clearly explains both parameters: rcept_no is a 14-digit DART receipt number, and report_name is the disclosure title used when no receipt number is provided. This adds meaningful context beyond the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'analyzes' and resource 'risk of the disclosure', making it clear that the tool assesses risk for a DART disclosure. However, it does not explicitly distinguish itself from sibling tools like check_disclosure_anomaly or analyze_company_risk, which may also involve risk assessment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool over alternatives. It only states that the tool uses a receipt number or title, but that's parameter usage, not tool-selection criteria. No exclusions or when-not-to-use conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_financialsA
여러 기업의 재무제표를 나란히 비교한다 (최대 20개 기업 · 최대 10개 연도).
매출액·영업이익·당기순이익·자산총계·부채총계를 기본으로 내고, accounts로
좁힐 수 있다. year_to를 주면 그 구간을 연도별로 조회해 시계열로 낸다.
⚠ 조회 콜은 회사 수와 무관하게 연도 수만큼이다 — fnlttMultiAcnt가
corp_code를 콤마로 묶어 한 번에 받는다(실측 2026-09-11: 20개사 1콜 606행,
누락 0). 연도 폭 상한 10이 곧 콜 상한이다.
Args:
company_names: 비교할 기업명 목록 (220개).
year: 사업연도 4자리. 미입력 시 직전 연도.
year_to: 구간의 끝 사업연도. 주면 yearyear_to를 시계열로 낸다.
report_type: "annual" | "half" | "q1" | "q3".
accounts: 계정명 부분일치 목록. 미지정이면 응답의 전 계정.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| year_to | No | ||
| accounts | No | ||
| report_type | No | annual | |
| company_names | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so well: it discloses the API call-count model (calls scale with years, not companies), the underlying endpoint fnlttMultiAcnt, and even an empirical observation (20 companies = 1 call, 606 rows, 0 missing). It doesn't cover error behavior or return schema details, but has an output schema so that's acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then adds operational detail and parameter semantics. The call-count paragraph and empirical evidence are valuable but slightly verbose; still every line earns its place for a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, scope limits, parameter meanings, defaults, the call/performance model, and constrains behavior. Output schema exists so return format is covered. Missing only explicit sibling routing and error/permission notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it defines each parameter (company_names count range, year default = prior year, year_to as range end, report_type with enum values, accounts as partial-match list) plus the default accounts returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (비교한다 / compare) and resource (재무제표 / financial statements) with explicit scope limits (max 20 companies, max 10 years). Clearly distinguished from siblings like get_financial_summary (single company) and get_financial_statements_full by the multi-company comparison framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage through limits (2-20 companies) and the year_to timeseries mode, and contrasts with the single-call design vs per-year calls. Does not explicitly name sibling alternatives (e.g., get_financial_summary for one company), but context is clear enough to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_actor_overlapA
여러 기업(2~5개)의 임원 겸직과 CB/BW/EB·유상증자 인수자를 비교해 공통 행위자(세력)를 탐지한다.
⚠ 실제로는 임원 겸직이 주 산출물이다. 인수자 쪽은 원문 ZIP을 열어야 해 기업당 CB 3건 + 유상증자 3건으로 상한이 걸린다 — CB를 열 번 스무 번 굴린 회사에서는 최근 3건만 본다(상한에 걸리면 「N건 중 3건 조회 · M건 미조회」로 분모를 적는다). 반면 임원현황은 사업연도 단위 명부를 다년 합집합으로 받아 상한이 없다. 무자본 M&A 세력은 인수마다 새 SPC·조합을 만들어 조합명이 매번 다르지만 사람 이름은 고정점이라, 겸직 쪽이 더 자주 걸린다.
임원은 등기·미등기를 가리지 않고 수집하며 회사별 직위·등기 여부를 함께 표기한다(동명이인을 눈으로 가릴 수 있게 하는 사실 표기이며 필터가 아니다).
DART API 제약상, 분석 대상 기업을 직접 지정해야 한다. "행위자 이름으로 역검색"은 현재 불가능하다.
CB/BW/EB 공시(CB_BW, EB 신호)와 유상증자 공시(3PCA, RIGHTS_UNDER 신호)를 모두 수집해 인수자를 통합 비교하며, 공통 행위자에는 출처 태그 (CB / 유상증자 / 임원)를 표시한다.
무자본 M&A 세력은 인수 시점에 CB를 한 번 박은 뒤 수년에 걸쳐 리픽싱·차환으로 굴리므로, 신규 CB 발행결정 공시는 과거에 몰린다. lookback_years로 조회 윈도우를 넓혀야 단년 창에 안 잡히는 다년 공통 인수자를 포착할 수 있다.
Args:
company_names: 비교할 기업명 또는 종목코드 목록 (25개, 예: ["에코프로", "바이오제닉스"])
lookback_years: 조회 기간(년). 기본 1년(하위호환), 15년 범위.
watchlist: 저장된 워치리스트 인물명. 지정 시 해당 회사군을 company_names와
합집합으로 분석한다 (manage_watchlist로 관리).
| Name | Required | Description | Default |
|---|---|---|---|
| watchlist | No | ||
| company_names | No | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: it discloses that executive overlap is the real primary output, that the acquirer side is capped at 3 CB + 3 rights issues per company (with the 'N건 중 3건 조회' denominator convention), that executive rosters are uncapped multi-year unions, that registered and unregistered executives are both included, and that source tags are attached. This is exactly the kind of limitation and output-composition detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is long, but front-loaded with the core purpose and a warning about the actual primary output, and each subsequent paragraph discloses a distinct behavioral trait rather than restating. Only mildly verbose, and the structure (warning, mechanism, args) is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values need no explanation, and the description still covers mechanism, caps, source tagging, the DART targeting constraint, and lookback semantics. An agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it documents all three parameters: company_names (2-5 company names or ticker codes), lookback_years (default 1 year, 1-5 range, and why to widen it), and watchlist (saved person names unioned with company_names, managed by manage_watchlist). Nothing in the Args block is left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare/detect) and concrete resources (executive concurrent positions and CB/BW/EB-rights-issue acquirers) across 2-5 companies. An agent can immediately tell this apart from sibling tools like lookup_known_actor or get_executive_compensation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use it (comparing a 2-5 company group to surface common actors/forces), when to widen lookback_years, and how watchlist interacts via manage_watchlist. It also states a hard usage constraint — that DART requires specifying target companies and reverse search by actor name is impossible — but does not explicitly name a sibling to use instead for reverse lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_risk_precedentsC
신호 유형 조합으로 해당 신호의 특성과 위험 해석을 반환한다.
Args: signal_types: 신호 유형 목록 (예: ["CB_BW", "3PCA", "SHAREHOLDER"]) lookback_days: 참고용 (현재 버전에서는 사용되지 않음)
| Name | Required | Description | Default |
|---|---|---|---|
| signal_types | Yes | ||
| lookback_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions lookback_days is not used, which is a behavioral trait, but fails to disclose return structure, side effects, or permissions. Output schema exists but unmentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded sentence. Could benefit from clearer bullet formatting, but no unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and 2 parameters, description is sparse. Lacks details on return value, risk interpretation meaning, or example use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. Description adds examples for signal_types and notes lookback_days is unused, partially compensating. However, lacks full semantics like valid formats or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns characteristics and risk interpretation of signals based on signal types. The verb 'returns' is specific, but 'find_risk_precedents' implies precedents, while description focuses on interpretation. Slightly misaligned but still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like 'analyze_company_risk' or 'check_disclosure_risk'. Description does not provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_affiliate_investmentsA
타법인 출자현황을 조회합니다 — 이 회사가 어떤 법인들에 돈을 넣었는지.
피출자 법인명·출자목적·최초취득일·최초취득금액·기초 장부가액·
증감(취득·처분)·증감(평가)·기말 장부가액·기말 지분율·피투자사
최근 순이익을 사실로 나열합니다. 기초와 증감을 함께 실어야 「그해에
전액을 털었다」가 보입니다 — 기말만 보면 그 건은 - 한 글자입니다.
무자본 M&A 세력의 SPC·자회사망 추적, 특수관계자 자산 공동화 패턴
확인에 활용합니다.
Args: company_name: 기업명 또는 종목코드(6자리). year: 사업연도(예: "2024"). 빈 값이면 직전 연도.
Returns: 출자 내역 표(기초·기말 장부가액 중 큰 값 기준 상위 30건) + 요약 사실 (전액 상각·처분 건수 포함) + 단위 유의 안내. 원문의 합계 행은 제외합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden, and it does meaningful work: it explains that 기초 and 증감 must be read together or a fully-divested case shows only '-', and it describes the return composition and the exclusion of total rows. It does not cover permissions or rate limits, but the interpretative nuance is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then fields, then use cases, with Args and Returns sections. Efficient and readable, though the field enumeration and interpretation aside make it slightly long for two parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema already exists, so return values need not be fully specified, yet the description still summarizes the return (top-30 table plus summary facts and a unit notice). Args, behavior, and use case are all covered for a simple two-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must document the parameters itself, and it does: company_name accepts a name or 6-digit ticker, and year is a business year that defaults to the prior year when empty. Both parameters are clarified with format and default semantics, compensating for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('타법인 출자현황을 조회합니다 — 이 회사가 어떤 법인들에 돈을 넣었는지') and enumerates the exact fields returned, so the agent knows precisely what this retrieves. It is clearly distinct from siblings like get_shareholder_info or track_capital_structure, but never names an alternative to confirm the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage contexts — tracking SPC/subsidiary networks of shell-company M&A and detecting related-party asset tunneling. This tells the agent when the tool is relevant, but offers no exclusions or explicit pointers to sibling tools for adjacent questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_opinion_historyA
감사의견·감사인 교체·비감사용역 이력을 조회합니다.
연도별 의견 결과와 감사인 교체를 봅니다. 감사인이 그 의견에 무엇이라고
썼는지(의견근거·계속기업 관련 불확실성·강조사항·핵심감사사항)는 구조화
응답에 없고 원문에 있습니다 — **get_audit_opinion_text**가 그 문장을
원문 그대로 인용합니다.
DART OpenAPI 3개 엔드포인트(accnutAdtorNmNdAdtOpinion,
adtServcCnclsSttus, accnutAdtorNonAdtServcCnclsSttus)를 결합해
연도별 감사의견·감사인·보수 경고 신호를 한글 서술로 반환합니다.
Args: company_name: 기업명 또는 종목코드(6자리). lookback_years: 1~10(밖이면 5로 강제).
Returns: 감사의견 표·감사인 교체 이력·비감사용역 계약 건수 텍스트.
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | Yes | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It helpfully discloses a data-availability boundary (the auditor's reasoning is not in the structured response but in the original text) and mentions it aggregates three DART endpoints and emits warning signals. However, it says nothing about auth/permissions, rate limits, or read-only status, so disclosure is incomplete 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the sibling distinction, then the endpoint/behavior note, then args. The explicit 'Returns:' section is mildly redundant given an output schema exists, but overall the text is tight and each part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with an output schema, the definition covers both parameters fully and explains the behavioral scope. The only gaps are unannotated operational details (safety/limits), which are minor given the output schema and clear param documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: company_name is documented as accepting either a company name or a 6-digit ticker, and lookback_years as a 1–10 range that is clamped to 5 when out of bounds. This adds real semantics (accepted formats and clamping behavior) beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (조회) and a precise set of resources (감사의견·감사인 교체·비감사용역 이력), then explicitly distinguishes itself from the sibling get_audit_opinion_text by noting that tool quotes the auditor's narrative reasoning from the original text. An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly routes the agent: use this for the year-by-year opinion/auditor-change table, and use get_audit_opinion_text when the auditor's written reasoning (opinion basis, going-concern uncertainty, emphasis, key audit matters) is needed. Context for use is explicit, though there is no stated 'when not to use' beyond the sibling routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_opinion_textA
감사보고서 원문에서 감사인이 쓴 문장을 그대로 읽는다.
감사의견·의견근거·계속기업 관련 불확실성·강조사항·핵심감사사항·기타사항을
원문 그대로 인용한다. 연도별 의견과 감사인 교체 이력은
get_audit_opinion_history가 낸다 — 이력·교체는 그쪽, 감사인이 뭐라고
썼는지는 이 도구다.
Args: company_name: 기업명 또는 종목코드 6자리. year: 사업연도 4자리. 빈 값이면 직전 연도. scope: "consolidated"(연결감사보고서) | "separate"(감사보고서).
Returns: 절별 유무 표와 원문 인용. 판정·점수·등급은 붙이지 않는다 — 계속기업 절이 있다는 사실과 그 문단을 보여줄 뿐이다.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| scope | No | consolidated | |
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses an important behavioral trait: no judgment/score/grade is attached, only the fact that a section exists plus the paragraph. It also documents the empty-year default. It omits auth requirements or pagination/truncation behavior, but for a read-and-quote tool the disclosure is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then Args/Returns sections, so it scans well. The sibling-differentiation point is restated twice ('이력·교체는 그쪽… 이 도구' paraphrases the preceding sentence), a mild redundancy that keeps it below a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still clarifies the return shape (per-section presence table + verbatim quotes) and, crucially, what is NOT returned (no judgment/score/grade). Combined with the fully documented inputs, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description documents all three parameters: company_name (name or 6-digit code), year (4-digit fiscal year, empty = prior year), and scope with its two valid values ('consolidated' | 'separate'). It even supplies enum-like values the schema itself lacks, fully compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('원문에서 그대로 읽는다' / '원문 그대로 인용한다') and a precise resource (the auditor's own sentences across opinion, basis, going-concern, KAM, etc.). It explicitly draws the boundary with sibling get_audit_opinion_history ('이력·교체는 그쪽, 감사인이 뭐라고 썼는지는 이 도구'), so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative tool and the exact condition that selects it (year-by-year opinions and auditor-change history go to get_audit_opinion_history; verbatim wording goes here). Also states the default behavior when year is empty ('직전 연도'), removing a common ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_infoB
기업 개요를 조회한다 (대표자, 업종, 설립일, 상장 구분 등).
Args: company_name: 기업명 (예: "삼성전자") 또는 종목코드 6자리 (예: "005930")
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It states the tool retrieves an overview but discloses no behavioral traits such as side effects, authentication needs, rate limits, or error handling. The minimal disclosure is inadequate for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence stating purpose and a short Args section. It is front-loaded and efficient, though the structure could be improved (e.g., separate English translation).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema alleviates the need to describe return values. However, with no annotations and 22 sibling tools, the description lacks contextual guidance on when to choose this tool, making it only moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema lacks any description for company_name. The description adds crucial meaning by specifying that it accepts either a company name or a 6-digit stock code, with an example. This significantly aids correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb '조회한다' (retrieve) and resource '기업 개요' (company overview), listing example fields (representative, industry, etc.). This clearly distinguishes it from sibling tools like get_financial_summary or get_shareholder_info, which focus on different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only explains the input format (company name or stock code) but does not provide guidance on when to use this tool versus its many siblings. No explicit when-to-use, when-not-to-use, or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disclosure_documentA
DART 공시 접수번호로 공시 원문 전체를 조회한다.
한 번의 호출로 원문 내용과 수록 파일 목록을 반환한다. 긴 문서는 max_chars로 제한하며, 잘린 경우 안내 메시지가 표시된다. 더 긴 문서나 특정 섹션을 읽으려면 list_disclosure_sections / view_disclosure 를 사용한다.
Args: rcept_no: DART 접수번호 14자리 (예: "20240315000123") max_chars: 최대 반환 글자수 (기본 8000, 최대 20000)
| Name | Required | Description | Default |
|---|---|---|---|
| rcept_no | Yes | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses that the tool returns the full document text and a list of attached files, and that it truncates long documents with a notice. It does not mention any potential side effects or authentication requirements, but for a read-only retrieval tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, a list of behaviors, and parameter details. It is somewhat lengthy but each sentence adds value. The front-loaded format aids quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (so return values are documented elsewhere) and the tool has only two parameters, the description is complete. It covers all essential aspects: what the tool does, input format, truncation behavior, and alternatives for longer documents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions for parameters (0% coverage), so the description must add meaning. It explains rcept_no as a 14-digit DART receipt number with an example, and max_chars with default and maximum values. This fully compensates for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the full disclosure document by receipt number (DART 접수번호로 공시 원문 전체를 조회). It distinguishes itself from sibling tools list_disclosure_sections and view_disclosure by explicitly mentioning them as alternatives for longer documents or specific sections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool (when you have the receipt number and want the full text) and when to use alternatives (for longer documents, use list_disclosure_sections/view_disclosure). It also mentions the max_chars limitation and the resulting truncation notice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_executive_compensationB
임원 보수 현황을 조회합니다 (불공정거래 탐지 참고 자료).
이사·감사 전체 보수·개인별 보수·미등기임원 보수·이사감사 개인별· 주총 승인 한도 5개 섹션을 반환합니다.
Args: company_name: 기업명 또는 종목코드 year: 사업연도 (기본값: 직전 연도) report_type: annual(사업) | half(반기) | q1(1분기) | q3(3분기)
Returns: 임원 보수 4섹션 텍스트
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| report_type | No | annual | |
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It does describe output sections and parameter defaults, but it contradicts itself: the first paragraph says '5개 섹션을 반환합니다' while the Returns section says '임원 보수 4섹션 텍스트'. This makes the actual return behavior unreliable, and it does not state read-only semantics, data source, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably short and organized with Args/Returns sections. However, it is not fully polished: the Returns line is redundant with the first paragraph, and the 5-section vs 4-section discrepancy creates confusion. The structure is acceptable but not tightly edited.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read-style tool, the description is mostly complete: it covers all parameters, defaults, allowed report types, and output content. Yet the contradictory section count and the absence of guidance on when to choose this tool over siblings such as track_insider_trading leave gaps. The presence of an output schema reduces the need to explain return values, but the description's own return statement is inconsistent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by explaining all three parameters: company_name accepts company name or stock code, year is the business year with a previous-year default, and report_type is enumerated as annual/half/q1/q3. This is substantial added meaning beyond the bare schema. Minor ambiguity remains around the exact year format and the mismatch between the schema's empty-string default and the described previous-year default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action with a clear resource: '임원 보수 현황을 조회합니다' (query executive compensation status) and adds investigative context as reference material for unfair-trade detection. It is distinguishable from siblings by the resource, but it does not explicitly contrast it with overlapping tools like track_insider_trading.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '(불공정거래 탐지 참고 자료)' implies the tool is intended for unfair-trade detection investigations, giving some context for when to call it. However, it does not provide explicit when-to-use/when-not-to-use conditions or name sibling alternatives, so selection guidance is mostly left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financial_statements_fullA
재무제표의 전체 계정을 원문 순서·원문 계정명 그대로 낸다.
get_financial_summary는 주요 계정만 낸다 — 훑을 때는 그쪽이 낫다.
매출원가·판매비와관리비·금융수익·금융원가·기타이익·기타손실·지분법손익
처럼 그 요약에 없는 줄이 필요할 때 이 도구를 쓴다.
Args: company_name: 기업명 또는 종목코드 6자리. year: 사업연도 4자리. 빈 값이면 직전 연도. report_type: "annual" | "half" | "q1" | "q3". fs_div: "CFS"(연결) | "OFS"(별도). CFS가 비면 OFS로 한 번 더 시도하고 어느 쪽을 썼는지 밝힌다. statement: 빈 값이면 재무상태표·손익·현금흐름표. "BS" | "IS" | "CIS" | "CF" | "SCE" 중 하나로 좁힐 수 있다. ⚠ **"IS"는 손익계산서와 포괄손익계산서를 둘 다 고른다 — 포괄손익계산서 하나만 내는 회사가 있어 글자대로 받으면 0행이 된다.
Returns: 재무제표별 표(계정명 · 당기 · 전기 · 전전기). 계정 순서와 계정명은 원문 그대로이며 판정·점수·등급은 붙이지 않는다.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| fs_div | No | CFS | |
| statement | No | ||
| report_type | No | annual | |
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the fs_div fallback (if CFS is empty it retries OFS and reveals which was used) and the 'IS' quirk that selects both IS and CIS, yielding 0 rows for CIS-only companies. It omits auth/permission and rate-limit behavior, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded (the core behavior is stated first, then the sibling comparison, then Args and Returns headings). Given five parameters and two behavioral caveats, the length is justified, though the Args block is dense enough to be slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex five-parameter tool with no annotations, the description covers purpose, alternative routing, parameter meaning, fallback behavior, and output shape (per-statement tables, original account names/order, no grades). An output schema exists, yet the extra return context still adds value rather than repeating structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it documents all five parameters: company_name accepts name or 6-digit ticker, year defaults to the prior year, report_type enumerates annual/half/q1/q3, fs_div enumerates CFS/OFS plus fallback, and statement enumerates BS/IS/CIS/CF/SCE with the IS caveat.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource with scope: returns ALL accounts of the financial statements in original order and original names. It explicitly differentiates from the sibling get_financial_summary ('returns only key accounts'), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (get_financial_summary) and the exact condition that selects this tool: when you need lines absent from the summary, listing concrete examples (COGS, SG&A, financial income/costs, other gains/losses, equity-method P/L). It also says the summary side is better for skimming, giving both when-to-use and when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financial_summaryA
기업의 주요 재무제표를 조회한다 (매출, 영업이익, 순이익, 자산, 부채).
훑어볼 때 쓴다 — 이 API(fnlttSinglAcnt)는 주요 계정만 준다(실측 CSA 코스믹
2025에서 계정명 14종). 매출원가·판매비와관리비·금융수익·금융원가·기타이익·
기타손실·지분법손익처럼 **여기 없는 줄이 필요하면
get_financial_statements_full**이 전체 계정을 원문 순서 그대로 낸다.
Args: company_name: 기업명 (예: "삼성전자") 또는 종목코드 6자리 year: 사업연도 4자리 (예: "2024"). 미입력 시 직전 연도 report_type: 보고서 유형 — "annual"(사업보고서), "half"(반기), "q1"(1분기), "q3"(3분기)
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| report_type | No | annual | |
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It mentions that the API returns only key accounts (14 types) and specifies the source API, which is useful context, but it does not disclose rate limits, authentication requirements, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose, then usage guidance, then parameter definitions. It is efficient and avoids waste, though the bilingual format may be slightly verbose for some audiences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values. It covers the key accounts available, the distinction from the full-statements tool, and all three parameters. The lack of annotations is mitigated by the description's explicit scope note, but it could still say more about data freshness or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines the three parameters well: company_name (name or 6-digit code), year (4-digit year, default last year), and report_type (annual, half, q1, q3). However, it does not add syntax details beyond what might be inferred, and the enum-like values are not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (retrieve a company's key financial statements) and lists the exact accounts covered. It partially differentiates from the sibling get_financial_statements_full, but the primary purpose could be sharper about summary vs. detail distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use this tool ('훑어볼 때 쓴다') and names the alternative (get_financial_statements_full) with the condition that selects it (full account list needed). It does not state when-not to use this tool beyond that, so it falls 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.
get_major_decisionA
DS005 주요사항보고서 12종 결정 공시(양수도·합병·분할·교환)를 구조화 필드로 조회한다. related_party_hollowing·delisting_evasion 패턴의 경로 추적에 사용.
Args: rcept_no: 14자리 접수번호 decision_type: 결정 유형 (미지정 시 지원 타입 안내). business_acq | business_div | tangible_acq | tangible_div | stock_acq | stock_div | bond_acq | bond_div | merger | demerger | demerger_merger | stock_exchange corp_code: DART 기업 코드 8자리. 권장 — DART API가 rcept_no 단독 호출을 거부하는 엔드포인트가 있어 정확한 조회를 위해 corp_code 전달을 권장한다. 미지정 시 rcept_no 단독 폴백을 시도하나 일부 결정 유형은 빈 결과가 반환될 수 있다.
| Name | Required | Description | Default |
|---|---|---|---|
| rcept_no | Yes | ||
| corp_code | No | ||
| decision_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses fallback behavior and potential failure modes (empty results) when corp_code is omitted. It also implies read-only operation. However, it does not explicitly state safety or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise but includes a mix of Korean and English, and the parameter explanations are embedded inline, making it slightly verbose. The main purpose is front-loaded, but the structure could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values need not be explained. The description covers purpose, specific use cases, parameter details, and failure modes. It lacks general context about the data source (DART) but is otherwise complete for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It provides detailed explanations for all three parameters, including format (14자리, 8자리), a list of enum values for decision_type, and behavioral notes about corpc_code recommendation and fallback. This thoroughly adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves 12 types of major decision disclosures as structured fields, and mentions specific use cases like related party hollowing. However, it does not explicitly differentiate from sibling tools, though the structured field aspect implies distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific use case (tracking patterns) but lacks explicit guidance on when not to use this tool versus alternatives. No exclusions or comparisons with sibling tools are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mezzanine_termsA
CB·BW·EB 발행결정 한 건의 발행 조건을 표로 낸다.
전환가액·리픽싱 하한·잠재 희석·이자율·청구기간·자금용도를 공시 원문
구조화 응답에서 그대로 읽는다. 회사 전체를 훑는
track_capital_structure·analyze_company_risk와 달리 접수번호 하나만
본다 — 취재에서는 이쪽이 더 자주 필요하다.
Args: rcept_no: DART 접수번호 14자리(발행결정 공시). corp_code: DART 기업코드 8자리. 권장 — DS005 계열은 DART 스펙상 corp_code가 사실상 필수다. 비우면 접수번호로 역해석한다.
Returns: 발행 조건 표. 맨 위에 잠재 희석률과 리픽싱 하한을 둔다. ⚠ EB는 서식에 리픽싱 항목 자체가 없다 — 「조항 없음」과 구분해 적는다. 판정·점수·등급은 붙이지 않는다.
| Name | Required | Description | Default |
|---|---|---|---|
| rcept_no | Yes | ||
| corp_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses that values are read directly from the structured disclosure response, that EB forms have no repricing item at all (distinguished from 'no provision'), and that no judgment/score/grade is attached. It does not explicitly state read-only behavior or error handling, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded with the purpose, then cleanly sectioned into Args and Returns, with bolding on the key scope signal. It runs a little long, but every line (field list, edge-case warning, param caveats) contributes to correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read/extraction tool with an output schema, the description supplies everything an agent needs: the scope, the extracted fields, the required vs recommended params, and the EB edge case. No output-schema explanation is owed, and the corp_code caveat closes the practical gap in the sparse input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and does: rcept_no is defined as a 14-digit DART receipt number for an issuance-decision disclosure, and corp_code as an 8-digit code that is 'effectively required' for DS005 series and reverse-resolved from the receipt number when empty. This adds substantial meaning beyond the bare schema field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: outputs a terms table for a single CB/BW/EB issuance decision, then enumerates exactly which fields (conversion price, repricing floor, dilution, interest rate, claim period, fund usage) it extracts. It explicitly distinguishes itself from track_capital_structure and analyze_company_risk by scope: one receipt number versus whole-company scanning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternatives (track_capital_structure, analyze_company_risk) and the condition that selects this tool over them ('looks at just one receipt number' and 'more often needed in reporting'). The one-receipt scope is the decisive routing signal, so the agent can pick correctly without opening sibling schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unlisted_financialsA
비상장 외부감사대상 법인의 재무제표·주석을 감사보고서 원문에서 읽는다.
OpenDART 재무제표 API는 정기보고서 제출 법인 위주라 비상장사는 자료가
없다. 감사보고서는 공시되므로 그 원문에서 재무제표와 주석을 꺼낸다.
상장사라면 get_financial_summary가 구조화 데이터를 주므로 그쪽이 낫다.
Args: company_name: 기업명. 동명 법인이 있으면 후보를 보여 주고 되묻는다 (되물을 때 안내하는 corp_code 8자리를 그대로 넣어도 된다). year: 사업연도(예: "2025"). 빈 값이면 가장 최근 감사보고서. ⚠ 공시 제목의 괄호 연도이며 접수일이 아니다 — 2025 사업연도 보고서는 2026년에 접수된다. scope: "consolidated"(연결감사보고서) | "separate"(감사보고서). section: "fs"(재무제표) | "notes"(주석 목차) | "all".
Returns: 감사보고서 출처(접수번호·제출 회계법인·법인구분)와 요청 구간. 주석 참조번호 열은 원문에 있으면 그대로 남긴다 — 숫자에서 주석으로 건너뛰는 통로다. 판정·점수·등급은 붙이지 않는다.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| scope | No | consolidated | |
| section | No | fs | |
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that data comes from audit report originals, that note reference numbers are preserved to allow number-to-note navigation, and that no judgment/score/rating is attached. It omits auth/permission needs and rate limits, but the read-only nature and output behavior are 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the tool's purpose and the sibling routing note before the Args/Returns blocks; each paragraph earns its place. The Args section is somewhat verbose but the detail is functional rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, yet the Returns block still clarifies source provenance and note-reference preservation. Combined with full parameter and usage coverage, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description fully compensates: company_name documents the same-name disambiguation flow and corp_code fallback, year documents format plus the fiscal-year-vs-filing-date pitfall, and scope/section enumerate and gloss all their allowed values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reads/extracts) and resource (financial statements and notes from audit report originals) scoped to non-listed audited corporations. It explicitly distinguishes itself from the sibling get_financial_summary by the listed/non-listed dimension, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it (non-listed companies have no data in the OpenDART periodic-report API) and when not to (listed companies should use get_financial_summary for structured data). It even explains the underlying reason, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_disclosures_by_stockA
종목코드로 최근 공시의 접수번호(rcept_no) 목록을 조회한다.
반환된 접수번호는 get_disclosure_document, view_disclosure, check_disclosure_risk 등에 바로 사용할 수 있다.
Args: stock_code: 종목코드 6자리 (예: "086520") lookback_years: 조회 기간(년). 기본 1년, 1~5년 범위.
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | No | ||
| from_date | No | ||
| stock_code | Yes | ||
| lookback_days | No | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 the main behavioral outcome (returns a list of rcept_no) and notes downstream compatability. However, it does not mention sorting, result limits, exact date-boundary behavior, or potential side effects—though '조회한다' implies a read operation. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core purpose stated first and an Args section that is easy to scan. Every sentence adds value, and there is no redundant explanation of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no annotations, and 0% schema description coverage, the description is incomplete because it documents only two of them. The presence of an output schema mitigates the return-value gap, but the undocumented date-related parameters leave a material hole in the tool contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does well for stock_code (6-digit example) and lookback_years (default 1 year, range 1-5), but it ignores three schema parameters: to_date, from_date, and lookback_days. These may be important for date filtering, and their absence leaves the tool hard to use correctly for exact-range queries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it lists disclosure receipt numbers (rcept_no) for a stock code. This distinguishes it from siblings like get_disclosure_document (fetches a single document) and search_market_disclosures (searches broadly), and the integration note reinforces its role as a discovery/index step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context: use this tool when you need a stock-code-driven list of recent disclosure receipt numbers, which can then be passed to downstream tools such as get_disclosure_document, view_disclosure, or check_disclosure_risk. It does not explicitly state when not to use it or name alternatives, but the intended workflow is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_disclosure_sectionsA
DART 공시 원문의 목차(섹션 구조)를 조회한다.
view_disclosure 호출 전에 이 도구로 섹션 ID와 분량을 먼저 확인하면 좋다.
Args: rcept_no: DART 접수번호 14자리 (예: "20240315000123")
| Name | Required | Description | Default |
|---|---|---|---|
| rcept_no | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates a read-like operation retrieving section structure, but does not explicitly state safety, idempotency, or potential side effects. For a simple list tool, this is adequate but not exemplary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences plus a parameter description, well-structured. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single required parameter and presence of an output schema, the description is fairly complete. It explains what the tool does and how to use it in conjunction with view_disclosure, though it could mention the output schema's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining the rcept_no format (14-digit DART receipt number) with an example, adding meaning beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries the table of contents (section structure) of DART disclosure documents, effectively distinguishing it from the sibling tool view_disclosure by advising to call this first to check section IDs and volume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool before view_disclosure to check section IDs and volume, providing a clear use case. However, it does not mention when not to use it or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_report_revisionsA
한 사업연도의 정기보고서 판본을 늘어놓는다 (원본 + 정정본).
같은 보고서가 여러 번 접수된다. 재무 숫자를 기사에 옮길 때 원본을 봤는지 최종 정정본을 봤는지가 갈리는데, 지금까지 그걸 볼 수단이 없었다.
⚠ 어느 판본이 옳다고 판정하지 않는다. 존재하는 판본을 사실대로 늘어놓고 이 도구·이 서버가 어느 것을 기본으로 쓰는지 규칙만 밝힌다. 정정본이 오히려 최종 확정 정보를 담는 경우가 있어 「정정 = 오류」로 읽히는 말을 쓰지 않는다.
Args: company_name: 기업명 또는 종목코드 6자리. year: 사업연도 4자리. 빈 값이면 직전 연도. report_type: "annual"(사업보고서) | "half"(반기) | "q1" · "q3"(분기).
Returns: 접수일 순 판본 목록과, 그중 DART 재무 API가 실제로 내주는 판본 표시.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| report_type | No | annual | |
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose meaningful traits: it refuses to judge which version is correct, states it reveals the tool/server's default version rule, and returns items in filing-date order. It omits auth/permission and rate-limit context, but for a read-style enumeration those are minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then labeled Args/Returns sections; the ⚠ warning paragraph is somewhat long but earns its place by preventing misreading of 'amendment' as 'error'. Efficient overall, minor verbosity in the rationale sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all three parameters despite zero schema coverage, explains the non-judgment/default-rule behavior, and the existing output schema covers return values. A small gap remains around what the returned 'version mark' precisely means, but nothing essential to invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does fully: company_name accepts a name or 6-digit stock code, year is a 4-digit fiscal year defaulting to the prior year when empty, and report_type enumerates annual/half/q1/q3. This adds meaning the bare schema entirely lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — enumerating the revisions/versions (원본 + 정정본) of a fiscal year's periodic report — which is a distinct activity from the sibling list/search/analyze tools. An agent can immediately tell this is a version-enumeration tool rather than a content reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: it exists because the same report is filed multiple times and you need to know whether figures came from the original or the final amendment. No explicit when-not or named alternative is given, 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.
lookup_known_actorA
인물명으로 공개기록 레지스트리를 조회한다 (사실 표기 — 판정 아님).
출처가 명확한 공개기록(DART 임원현황·CB/유상증자 인수 등)에 그 인물이 어느 상장사에 등장했는지를 사실로만 반환한다. 위험 판정·점수·등급은 부여하지 않으며, 동명이인 가능성과 원본 확인 필요를 함께 고지한다.
Args: name: 조회할 인물명
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses scope: returns only facts, no risk scores, and sources (DART, etc.). Notes need for original verification. Could mention rate limits or auth, but appropriate for a read-only lookup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then caveats, then argument. Some redundancy in emphasizing no risk judgment twice, but overall efficient. Could be slightly more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one param and output schema exists. Covers what it does, what it doesn't do, and caveats. Missing maybe whether it supports partial names, but output schema likely covers return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only parameter is 'name'. Description restates it as '조회할 인물명' without adding format, encoding, or types. With 0% schema coverage, it should provide more (e.g., how to handle multiple names, language).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it queries a public record registry by person name for factual company appearances, explicitly distinguishing from risk judgment tools. The phrase '사실 표기 — 판정 아님' sets it apart from siblings like analyze_company_risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (factual registry lookup) and when not (if risk judgment needed). Mentions caveats of same-name possibility and need to verify original source, guiding proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_watchlistA
감시 대상 인물↔회사군 워치리스트를 관리한다 (list / show / add / remove).
DART는 인물명 역검색이 불가능해 회사 목록을 직접 입력해야 한다. 자주 보는 인물의 연관 회사군을 저장해두면 find_actor_overlap(watchlist=인물명)으로 바로 재조회할 수 있다. 회사군은 사용자가 직접 채운다(예: find_actor_overlap의 임원 겸직 결과를 add).
Args: action: "list" | "show" | "add" | "remove" person: 인물명 (show/add/remove에 필요) companies: 회사명 목록 (add에 필요, 기존과 합집합 병합) note: 메모 (add 시 선택)
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| action | Yes | ||
| person | No | ||
| companies | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, description discloses key behaviors: 'add' performs a union merge (합집합 병합) with existing companies. It also notes that companies are manually populated. This adds significant transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is structured with an initial purpose statement, background context, and an Args section. It is slightly verbose but each sentence adds value, and it front-loads the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 params, one required, output schema exists), the description provides sufficient context including action semantics and parameter dependencies. It covers the essential aspects for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description fully explains each parameter: action enum values, person required for show/add/remove, companies needed for add with merge behavior, and note as optional. This compensates entirely for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool manages a watchlist of person-company groups with specific actions (list/show/add/remove). It distinguishes itself from sibling tools like find_actor_overlap by being a management tool versus an analysis tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains when to use: to save frequently watched person's associated companies for quick re-query via find_actor_overlap, due to DART's lack of reverse lookup. It provides clear context but does not explicitly exclude alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_financial_anomalyA
재무제표 4개 지표(매출채권·재고자산·현금흐름·자본잠식)를 전년 대비로 비교해 분식·부실 초기 조짐을 탐지합니다. 발생액 비율(사실 표기)과 연결/별도 당기순이익 비교(별도>연결 역전 시 종속회사 합산 손실 플래그)를 함께 표기합니다.
Args: company_name: 기업명 또는 종목코드(6자리). year: 사업연도(예: "2024"). 빈 값이면 직전 연도. report_type: "annual"(사업보고서) | "half"(반기) | "q1" | "q3".
Returns: 지표별 당기/전기/Δ 표 + 이상 징후별 쉬운 설명 텍스트.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| report_type | No | annual | |
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It explains the calculations (four indicators plus accrual ratio and comparison) and flags specific conditions (reverse net income). However, it does not explicitly state it is a read-only scan with no side effects, which would be ideal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a brief purpose paragraph followed by a clear Args section. Every sentence adds value, with no repetition or unnecessary text. Front-loaded with the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description provides a high-level overview of returns (indicators and explanations) without needing to detail the schema. All parameters are documented, and the tool's behavior is well explained. Could mention that output schema gives detailed structure, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by detailing each parameter: company_name (name or code), year (fiscal year, blank=previous), report_type (annual/half/q1/q3). This adds significant meaning beyond the schema's type and default values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: scanning financial statements for anomalies by comparing four key indicators year-over-year and detecting early signs of fraud or distress. It lists specific metrics and additional comparisons, distinguishing it from siblings like 'compare_financials' which likely does general comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly guide when to use this tool versus alternatives. While the purpose is clear, there is no mention of specific contexts (e.g., 'use for early warning') or exclusions. The sibling list is provided but the description itself lacks usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_market_disclosuresA
시장 전체 공시에서 preset에 해당하는 위험 신호를 일괄 스캔한다.
기업명을 지정하지 않고 전체 상장사 공시를 조회하므로, 특정 위험 신호가 시장에 얼마나 확산되어 있는지 조기경보로 활용할 수 있다.
사용법:
"최근 7일 동안 CB/BW 발행 공시 전수": search_market_disclosures("cb_issue", 7)
"최근 30일 자사주 취득 결정": search_market_disclosures("treasury", 30)
"최근 14일 감자 공시": search_market_disclosures("reverse_split", 14)
Args: preset: 신호 프리셋 — cb_issue / treasury / reverse_split / 3pca / shareholder_change / exec_change / audit_issue / asset_transfer / going_concern / delisting / embezzle / inquiry / fund_outflow / all_risk days: 조회 기간 (기본 7일, 최대 90일). from_date/to_date를 주면 무시된다. max_results: 최대 반환 건수 (기본 50, 최대 200) from_date: 조회 시작일(선택). "2024-01-01"·"20240101" 형식. to_date: 조회 종료일(선택). 미지정 시 오늘. confirm_long: 창이 길어 오래 걸리는 조회를 실제로 실행할지. 미지정 상태로 긴 창을 요청하면 예상 소요와 함께 안내만 반환한다.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| preset | Yes | ||
| to_date | No | ||
| from_date | No | ||
| max_results | No | ||
| confirm_long | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It covers non-obvious behavior such as confirm_long: an unconfirmed long-window request returns only guidance with estimated cost instead of executing. It also documents that days is ignored when from_date/to_date is provided and caps days at 90. It does not describe output contents or rate limits, but the output schema covers the return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into a one-line purpose, a rationale sentence, three usage examples, and a compact Args list. Each section earns its place; the long preset enum is necessary and the date and confirmation details are behaviorally important. There is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is self-contained for invocation: required preset, optional time windows, result caps, date formats, and the confirmation contract are all covered. Since an output schema exists, return-value detail is not needed here. The market-wide scope also resolves the primary ambiguity among sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates. It enumerates all preset values, defaults and caps for days and max_results, the accepted date formats for from_date/to_date, and the interaction between days and explicit dates. This is more parameter guidance than most structured schemas provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: market-wide disclosures are scanned in batch for risk signals matching a preset. It also distinguishes itself from company-specific siblings by explicitly stating that it queries all listed companies without a company name. As a market-level early-warning scan, its purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context and concrete examples: '최근 7일 동안 CB/BW 발행 공시 전수' and the analogy of an early warning for how widely a risk signal has spread. It notes the contrast with company-specific queries, but it does not explicitly name sibling alternatives or state when-not-to-use, 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.
search_notes_in_reportA
공시 한 건의 주석 본문을 낱말로 찾아 앞뒤 문맥과 함께 보여준다.
⚠ 이것은 보고서 한 건 안에서만 도는 검색이다. 「전 상장사에서 이런 주석이 있는 회사를 찾아줘」는 이 도구로 안 된다 — 그러려면 전 회사 주석을 미리 훑어 둔 색인 DB가 있어야 한다. 회사를 먼저 고른 뒤 그 회사의 접수번호로 부르는 순서다.
Args:
rcept_no: DART 접수번호 14자리. 비상장 법인은
get_unlisted_financials가 알려주는 감사보고서 접수번호를 쓰고,
상장사는 list_disclosures_by_stock으로 고른다.
terms: 찾을 낱말 목록. 띄어쓰기는 무시하고 찾으므로
「영업권손상차손」 하나만 넣어도 원문의 「영업권 손상차손」이
걸린다(실측: 「매입채무및기타채무」가 8곳 → 15곳). 원문 표기가
검색어와 다르면 결과에 그 표기를 함께 보여 준다.
각 원소 안의 세로줄(|)은 OR이라 뜻이 같은 다른 표현을
묶을 때 쓴다 — ["판매후리스|세일앤리스백"].
세로줄은 낱말 구분자이고 정규식이 아니다(괄호·별표가 든
회계 용어를 그대로 찾는다).
mode: "all"(모든 원소가 함께 있는 주석만) | "any"(하나라도).
context_chars: 적중 앞뒤로 함께 낼 글자 수(기본 600).
Returns: 적중한 주석의 번호·제목과 발췌. 판정·점수·등급은 붙이지 않는다.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | all | |
| terms | Yes | ||
| rcept_no | Yes | ||
| context_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does well: it discloses the single-report scoping limit and that results carry no verdict/score/grade. It still omits error behavior, truncation/pagination, and rate limits, so it falls short of a full 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the critical scoping warning and then the workflow, with per-parameter detail in a labeled Args block. It is long, but nearly every sentence adds operative information; the empirical aside ('8곳 → 15곳') is the only mildly expendable clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, 0%-schema-coverage search tool with no annotations, the description supplies the scope, the workflow, every parameter's semantics, and the nature of the output (hit note number/title/excerpt, no scoring). 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for all four params: rcept_no format (14-digit DART number) plus how to obtain it per firm type, terms (whitespace-insensitive matching, the '|' OR operator, and that it is not a regex), mode's all/any semantics, and context_chars default of 600.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: find note text by keyword within ONE disclosure report. It explicitly contrasts itself with a cross-company index search, so an agent can distinguish it from the many sibling discovery tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not ('전 상장사에서 이런 주석이 있는 회사를 찾아줘'는 안 된다) and the required ordering (select a company first, then call with its rcept_no). It names concrete alternative entry points — get_unlisted_financials for unlisted firms and list_disclosures_by_stock for listed ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_capital_structureA
자본 이벤트(증자·감자·자사주·CB/BW/EB/RCPS 등)를 시간순으로 집계해 '자본 주무르기' 리듬을 탐지합니다.
Args: company_name: 기업명 또는 종목코드(6자리). lookback_years: 1~5(밖이면 3으로 강제).
Returns: 이벤트 총수·12개월 집중도·연도별 집계·시계열·플래그 텍스트.
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | Yes | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description should fully disclose behavior. It explains that it aggregates events and returns totals, concentration, yearly data, time series, and flags. However, it does not mention whether it modifies data, permissions needed, or rate limits. The output description provides some transparency but is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear purpose statement, followed by bullet-pointed Args and Returns. It is front-loaded and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, parameters, and return values, which is sufficient for a tool with 2 parameters and an existing output schema. However, an example of output or more detail on the 'rhythm detection' could enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an Args section explaining both parameters: company_name (company name or 6-digit stock code) and lookback_years (1-5, defaults to 3). This adds significant meaning beyond the schema, which had 0% description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool aggregates capital events (증자·감자·자사주·CB/BW/EB/RCPS 등) chronologically and detects capital manipulation rhythm. It uses specific verbs and resource, distinguishing it from sibling tools like 'analyze_company_risk' or 'build_event_timeline'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It lacks guidance on prerequisites, context, or scenarios where this tool is preferred over others, such as 'track_debt_balance' or 'track_insider_trading'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_debt_balanceA
미상환 채무증권 5종 잔액을 조회합니다.
회사채·단기사채·기업어음·신종자본증권·조건부자본증권 잔액과 1년 이내 만기 비중을 집계해 한글 서술로 반환합니다.
Args: company_name: 기업명 또는 종목코드(6자리). year: 사업연도(YYYY). 비우면 직전 연도.
Returns: 종류별 잔액 표 + 만기 1년 이내 비중 텍스트.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| company_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It communicates return format but does not disclose side effects (e.g., is it read-only?), authentication needs, or rate limits. The description is minimal beyond the function's results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and front-loaded with purpose. The Args/Returns section is somewhat redundant with schema but adds value. Minor improvement could remove duplication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, simple parameters (2, one optional), and existence of output schema, description adequately covers purpose, parameter formats, and return structure. Could mention output schema's structure briefly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero schema coverage, yet description provides clear meaning: company_name accepts either name or 6-digit code, year is optional YYYY format. This adds essential context far beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool queries balances of 5 specific debt security types and aggregates maturity weight, using Korean narrative. Distinct from siblings like 'track_capital_structure' which focuses on equity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for debt balance tracking, but no explicit when-to-use or comparison with siblings. The description does not guide the agent on when to choose this over alternatives like 'get_financial_summary'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fund_usageB
공모/사모 자금 사용내역(계획 vs 실제)을 조회해 조달자금 유용· 목적외 사용 신호를 탐지한다. zombie_ma·fake_new_biz 패턴의 핵심 증거.
Args: company_name: 기업명 또는 6자리 종목코드 lookback_years: 조회 연도 수 (1~5, 기본 3)
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | Yes | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions detecting signals but does not describe the return format, whether it is read-only, or any side effects. The output schema exists but is not summarized, leaving the agent uninformed about response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear sentences plus an Args block. Front-loaded with purpose, no redundant words. Efficient for the information conveyed, though could be slightly more structured (e.g., separating purpose from args).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists but is not described, the description is adequate for simple parameters. However, it lacks information on what the returned signals look like, pagination, or error handling. For a pattern-detection tool, more detail on the output would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. The description's Args section adds meaning: company_name accepts a name or 6-digit stock code, lookback_years range 1-5 with default 3. This compensates for the schema's lack of detail, though additional constraints (e.g., format of stock code) could be added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries fund usage (plan vs actual) to detect misuse signals, specifically for zombie_ma/fake_new_biz patterns. It distinguishes from sibling tools by mentioning these specific fraud patterns, though could be more explicit about when to use over alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs siblings like check_disclosure_risk or find_risk_precedents. The description implies diagnostic use for fund misuse but lacks prerequisites, when-not-to-use, or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_insider_tradingB
최대주주·5% 대량보유자의 지분 변동 시계열을 분석합니다.
보유 비율(Δ) 변화로 매수·매도 클러스터를 탐지합니다.
Args: company_name: 기업명 또는 종목코드 lookback_years: 조회 연수 (기본값 2년, 최대 5년)
Returns: 보고자별 지분 변동 테이블 + 클러스터 알림
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | Yes | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It does not state whether the tool is read-only, requires authentication, or has side effects. The return is mentioned but not the behavioral traits (e.g., no mention of rate limits or data freshness).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two main parts and bullet-style Args. It is front-loaded with the core purpose. Slight room for improvement in structural clarity (e.g., separating return description).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not fully shown), the description need not detail returns extensively, but it does mention 'stakeholder table + cluster alerts'. For a tool with two parameters and no annotations, this is adequate but could cover more behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must clarify parameters. It explains company_name as 'company name or stock code' and lookback_years with default and max, adding meaning beyond the schema. However, it could specify input format for company_name (e.g., exact ticker or Korean name).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes time series of major shareholder stake changes and detects buy/sell clusters. It is specific about the resource (insider trading) and action (track), distinguishing it from sibling tools like get_shareholder_info or track_capital_structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or when not to use it. The description assumes the agent knows to use it for insider trading analysis but offers no comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_turnover_trendA
매출채권·재고자산·매입채무·운전자본·총자산 회전율을 다년(기말잔액 기준)으로 추적하고, 분자·분모(매출·매출원가·매출채권 등)의 전년 대비 변화와 현금전환 주기(CCC)를 사실로 표기합니다. 임계값·판정 없음(v0.8.5 원칙).
Args: company_name: 기업명 또는 종목코드(6자리). lookback_years: 1~5(밖이면 3으로 강제).
Returns: 연도별 회전율 표 + 분자·분모 내역 + 관찰된 사실(단조 추세·부호 변화· 분자분모 괴리) + CCC 텍스트.
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | Yes | ||
| lookback_years | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and does disclose genuine traits: a facts-only policy with no thresholds/judgments (v0.8.5), the period-end balance basis, and the exact output components including observed facts (monotonic trends, sign changes, numerator-denominator divergence). However, it stays silent on failure modes for invalid company names, data staleness/coverage, and any operational constraints, so it is helpful but partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured — a front-loaded core purpose sentence followed by dedicated Args and Returns sections — and every section earns its place. Minor redundancy exists: the first paragraph already mentions CCC and fact reporting that the Returns section repeats, and the cryptic '(v0.8.5 원칙)' parenthetical could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter analysis tool with an output schema present, it is largely complete: metrics, time basis, no-judgment policy, parameter formats, and return components are all covered. The remaining gaps are integration guidance (how it relates to siblings like compare_financials or track_debt_balance) and data-availability caveats, neither of which is critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description fully compensates: it defines company_name as either a company name or a 6-digit stock code, and documents lookback_years' valid range (1–5) and its clamping behavior (forced to 3 when out of range). This adds real semantic meaning beyond the bare schema titles and default; only minor gaps like duplicate-name resolution remain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('tracks') and a precise resource — five distinct turnover ratios (receivables, inventory, payables, working capital, total assets) over multiple years on a period-end balance basis — plus the companion numerator/denominator deltas and CCC. This metric list differentiates it from sibling trackers like track_debt_balance and track_capital_structure, though it never explicitly names a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the detailed metric list — an agent can infer this is the tool for turnover and cash-conversion-cycle analysis — but there is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. Among siblings like compare_financials and get_financial_summary, the selection rationale is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_disclosureA
DART 공시 원문을 조회한다. 섹션 지정 또는 페이지 단위로 전체 원문을 읽을 수 있다.
사용법:
list_disclosure_sections(rcept_no) → 목차/섹션 ID 확인
view_disclosure(rcept_no, section_id="f0s2") → 특정 섹션 읽기
view_disclosure(rcept_no, page=2) → 다음 페이지로 순차 읽기
Args: rcept_no: DART 접수번호 14자리 (예: "20240315000123") section_id: 섹션 ID (list_disclosure_sections 결과 참조, 비워두면 전체 문서) page: 페이지 번호 (기본 1) page_size: 페이지당 글자 수 (기본 4000, 범위 1000~8000)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| rcept_no | Yes | ||
| page_size | No | ||
| section_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits like idempotency, side effects, or required permissions. As a read tool, it's likely safe, but the description does not confirm this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is informative but could be more concise. It includes a usage section and parameter list, but the structure is somewhat verbose. Not tightly organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all parameters and usage workflow. Since output schema exists, return values need not be described. Minor gaps: no error handling or prerequisites beyond list_disclosure_sections.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description explains all parameters in detail: rcept_no format, section_id source, page default, page_size range. Adds essential meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool views DART disclosure original text and explains section/page reading. However, it doesn't explicitly differentiate from sibling get_disclosure_document, leaving minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a step-by-step usage pattern showing how to combine with list_disclosure_sections, and explains when to use section_id vs. page. Lacks explicit when-not-to-use or alternatives.
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.
7 tool updates
v1.26.3- Changed
compare_financials3 fields changed- added
Input schema / properties / accountsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Accounts" +} - added
Input schema / properties / report_typeAdded value: +{ + "default": "annual", + "title": "Report Type", + "type": "string" +} - added
Input schema / properties / year_toAdded value: +{ + "default": "", + "title": "Year To", + "type": "string" +}
- Added
get_audit_opinion_text - Added
get_financial_statements_full - Added
get_mezzanine_terms - Added
get_unlisted_financials - Added
list_report_revisions - Added
search_notes_in_report
5 tool updates
v1.21.25- Changed
analyze_company_risk2 fields changed- added
Input schema / properties / from_dateAdded value: +{ + "default": "", + "title": "From Date", + "type": "string" +} - added
Input schema / properties / to_dateAdded value: +{ + "default": "", + "title": "To Date", + "type": "string" +}
- Changed
build_event_timeline2 fields changed- added
Input schema / properties / from_dateAdded value: +{ + "default": "", + "title": "From Date", + "type": "string" +} - added
Input schema / properties / to_dateAdded value: +{ + "default": "", + "title": "To Date", + "type": "string" +}
- Changed
list_disclosures_by_stock2 fields changed- added
Input schema / properties / from_dateAdded value: +{ + "default": "", + "title": "From Date", + "type": "string" +} - added
Input schema / properties / to_dateAdded value: +{ + "default": "", + "title": "To Date", + "type": "string" +}
- Changed
search_market_disclosures3 fields changed- added
Input schema / properties / confirm_longAdded value: +{ + "default": false, + "title": "Confirm Long", + "type": "boolean" +} - added
Input schema / properties / from_dateAdded value: +{ + "default": "", + "title": "From Date", + "type": "string" +} - added
Input schema / properties / to_dateAdded value: +{ + "default": "", + "title": "To Date", + "type": "string" +}
- Added
track_turnover_trend
2 tool updates
v1.10.3- Added
analyze_company_risk - Added
check_disclosure_risk
3 tool updates
v1.6.0- Removed
analyze_company_risk - Removed
check_disclosure_risk - Added
get_affiliate_investments
7 tool updates
v1.4.0- Changed
analyze_company_risk4 fields changed- added
Input schema / properties / lookback_days / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / lookback_days / defaultPrevious value: -90New value: +null - removed
Input schema / properties / lookback_days / typeRemoved value: -"integer" - added
Input schema / properties / lookback_yearsAdded value: +{ + "default": 1, + "title": "Lookback Years", + "type": "integer" +}
- Changed
build_event_timeline4 fields changed- added
Input schema / properties / lookback_days / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / lookback_days / defaultPrevious value: -365New value: +null - removed
Input schema / properties / lookback_days / typeRemoved value: -"integer" - added
Input schema / properties / lookback_yearsAdded value: +{ + "default": 1, + "title": "Lookback Years", + "type": "integer" +}
- Changed
check_disclosure_anomaly4 fields changed- added
Input schema / properties / lookback_days / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / lookback_days / defaultPrevious value: -365New value: +null - removed
Input schema / properties / lookback_days / typeRemoved value: -"integer" - added
Input schema / properties / lookback_yearsAdded value: +{ + "default": 1, + "title": "Lookback Years", + "type": "integer" +}
- Changed
find_actor_overlap7 fields changed- added
Input schema / properties / company_names / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / company_names / defaultAdded value: +null - removed
Input schema / properties / company_names / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / company_names / typeRemoved value: -"array" - added
Input schema / properties / lookback_yearsAdded value: +{ + "default": 1, + "title": "Lookback Years", + "type": "integer" +} - added
Input schema / properties / watchlistAdded value: +{ + "default": "", + "title": "Watchlist", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "company_names" -]
- Changed
list_disclosures_by_stock4 fields changed- added
Input schema / properties / lookback_days / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / lookback_days / defaultPrevious value: -90New value: +null - removed
Input schema / properties / lookback_days / typeRemoved value: -"integer" - added
Input schema / properties / lookback_yearsAdded value: +{ + "default": 1, + "title": "Lookback Years", + "type": "integer" +}
- Added
lookup_known_actor - Added
manage_watchlist
23 tool updates
v1.0.3- First observed
analyze_company_risk - First observed
build_event_timeline - First observed
check_disclosure_anomaly - First observed
check_disclosure_risk - First observed
compare_financials - First observed
find_actor_overlap - First observed
find_risk_precedents - First observed
get_audit_opinion_history - First observed
get_company_info - First observed
get_disclosure_document - First observed
get_executive_compensation - First observed
get_financial_summary - First observed
get_major_decision - First observed
get_shareholder_info - First observed
list_disclosure_sections - First observed
list_disclosures_by_stock - First observed
scan_financial_anomaly - First observed
search_market_disclosures - First observed
track_capital_structure - First observed
track_debt_balance - First observed
track_fund_usage - First observed
track_insider_trading - First observed
view_disclosure
TDQS
Scored across 33 tools
The toolset covers a wide range of DART-related analyses; many tools target distinct resources (disclosures, financials, actors, capital events), but several pairs like get_audit_opinion_history vs get_audit_opinion_text, or get_financial_summary vs get_financial_statements_full are borderline and require careful reading of descriptions to distinguish. There is also potential confusion between analyze_company_risk, check_disclosure_anomaly, build_event_timeline, and find_risk_precedents, though descriptions clarify the differences.
Most tools follow a verb_noun or noun_verb pattern (e.g., find_actor_overlap, track_capital_structure, get_financial_summary), but some use only nouns (manage_watchlist is an action-noun mix, list_disclosures_by_stock is noun_verb). There are also inconsistencies like search_notes_in_report vs search_market_disclosures. The naming is generally readable but not fully systematic.
With 33 tools, this server is on the heavy side and contains many overlapping or niche functions that could be consolidated or grouped. For a risk analysis toolkit, this volume increases selection complexity and cognitive load.
The toolset covers a broad spectrum of DART-based risk analysis: financials, disclosures, actors, capital events, audit opinions, market scanning. However, some potential gaps exist: no direct tool for searching actors by name (explicitly noted as impossible), and the watchlist management is limited. Still, it provides comprehensive coverage for its domain.
Maintenance
Related MCP Connectors
Powerful OpenDART API-based Korean corporate disclosure tools for accounting professionals
Search company disclosures and financial statements from the Korean market. Retrieve stock profile…
Full-text search over FSS/FSC accounting supervision documents for Korean accounting professionals
Korean fact-verification tools for AI agents: business registration, address, DART, apt prices, laws
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides natural language access to South Korean corporate disclosure data, financial statements, and shareholder information through the DART Open API. It enables users to query 83 different tools for real-time reporting and regulatory filings from Korean listed companies.833MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to analyze Korean financial disclosures (DART) with insider trading signals, accounting risk scores, Buffett-style quality checklists, and automatic conversion of HWP/PDF attachments to markdown.15189 npm3MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered analysis of Korean stock market data and corporate disclosures using official DART and KRX APIs.149 npmISC
- AlicenseNot gradedqualityCmaintenanceEnables investors and analysts to query Korean listed companies' financial health, accounting risks, and disclosure events using DART filings, accessible via natural language through Claude.3Apache 2.0