Skip to main content
Glama

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

detect_undisclosed_transactions

Finds transactions disclosed in J004 that have no matching J001 disclosure, flagging them as potential undisclosed transactions.

Instructions

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Input Schema

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.3.0

TDQS

A4.4/5.0
Behavior5/5

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

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

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

Conciseness2/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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