판례·해석례 검색
search_cases판례·법령해석례 검색 — law.go.kr 실시간 조회(항상 현행). LLM 미사용.
분쟁·처분취소·해석 다툼("~해도 되나", "~취소될 수 있나")에 조문만으로 부족할 때
쓰라. 본문은 get_case(kind, case_id)로 이어서 조회.
**응답은 무엇으로 몇 건을 봤는지까지 말한다**(2026-08-29). `search_scope`가
"title"이면 사건명·안건명만, "body"면 본문까지 본 것이다. `searched`에 시도한
질의·범위·law.go.kr 총계(`total_cnt`)가 시도 순서대로 실리고, 넓혀서 다시 찾았으면
`retried`가 true다. **0건은 "그런 판례가 없다"가 아니라 "이 범위에서 못 찾았다"이다**
— 사용자에게 옮길 때 `searched`가 밝힌 범위를 함께 말하고 "판례가 없다"고 단정하지 마라.
**`body_scope_caveat`가 있으면** 본문검색으로 넓힌 히트다 — law.go.kr 본문검색은 형태소
OR이고 **최신순**이라 질의와 무관한 사건이 섞인다(`relevance_verified:false`). 사건명을
보고 관련 없으면 인용하지 말고, 인용 전에 get_case로 확인하라.
**`landmark_cases`가 있으면** 질의가 대표 판례를 큐레이션해 둔 쟁점에 걸린 것이다(1.74.0) —
사건명 검색(hits)이 닿지 못하는 대표 판례를 사건번호로 law.go.kr에서 방금 확인해 따로 싣는다.
`issue`는 판결요지 발췌이니 인용 전 get_case로 원문을 확인하고, 판결끼리 갈리면 함께 밝혀라.
**질의가 사건번호 하나뿐이면**(예: "2005다22688", "대법원 2005다22688 판결") 사건명 검색이
아니라 law.go.kr 사건번호 조회로 찾는다(1.78.6) — `case_no_lookup.found`가 true면 hits가 그
번호의 판결이고 `search_scope`는 "case_no"다. false면 사건번호 조회로는 못 찾았다는 뜻이고
(없다는 뜻이 아니다) 아래 hits는 사건명 검색 결과라 그 판결이 아닐 수 있다.
**응답에 `axis`가 있으면 축·원장의 경계가 걸린 것이다**(2026-09-02). 세법 축
질의인데 사건명·안건명 그대로는 못 찾아 **넓혀 찾은** 종류가 있을 때만 실리고,
`axis.gated_kinds`가 그 종류를 말한다. `axis.out_of_axis`는 넓히다 **다른 축의
사건이 섞여 우리가 뺀 것**이다 — 세법 근거로 인용하지 마라(판례는 판정 근거인
`case_type`·`data_source`가 항목마다 붙는다).
**두 종류의 경계가 서로 반대라는 것을 혼동하지 마라.**
· `axis.yegyu_in_corpus: false` — 세무 실무가 말하는 '예규'(국세청 서면질의 회신,
txsi)를 이 서버가 **아예 담지 않는다**(법제처 expc와 원장이 다르다). "예규가
없다"고 옮기지 말고 국세법령정보시스템으로 안내하라.
· `axis.prec_in_corpus: true` — **판례는 담고 있다**. 여기서 뺀 것은 원장이 비어서가
아니라 사다리가 넓히다 민사·형사 사건을 끌어온 것뿐이니, "세법 판례가 없다"로
옮기면 틀린 말이다. 남은 판례가 0건이면 '이 사다리로는 못 찾았다'로 전하라.
**응답에 `off_topic_warning`이 있으면 낱말만 같고 쟁점이 다를 수 있다**(2026-09-10).
**세법 질의로 판정되지 않았는데**(`axis_verdict.axis`: `contract`=공공계약 축이 더 가깝다 ·
`not_tax`=세법 축 문턱 밖일 뿐 공공계약과 견주지는 않았다) 받은 회수분이 **전부 세법 원장
소산**(국세·지방세법령정보시스템, 사건종류 '세무')일 때 붙는다 — 예: '유찰'은 공공계약에서
입찰 불성립이지만 세법에서는 공매 절차다. **빼지 않고 남긴 것**이니(빼면 0건이 되어
'판례가 없다'는 거짓이 된다) 공공계약 근거로 인용하기 전에 get_case로 본문·참조조문을
읽어 쟁점이 같은지 확인하고, 다르면 사용자에게 "공공계약 판례는 이 범위에서 못 찾았다"고
밝혀라. `evidence`가 판정 근거다.
**본 것만큼만 말한다**(2026-09-11): '전부 세법'은 받은 `judged_on`건의 판정이다 —
`unseen_cnt`>0(`truncated: true`)이면 law.go.kr 총 `ledger_total`건 중 나머지는 안 봤으니
"원장에 그것뿐"이나 "이 질의의 판례는 전부 세법"이라 옮기지 마라(`unseen_cnt: 0`일 때만
이 범위에서 본 것이 전부다, null이면 총계를 모른다). **축을 못 쟀으면**(임베딩 장애 등)
경고 대신 `axis_unjudged`가 같은 모양으로 붙는다 — 주제이탈도 세법 정답도 단정하지 않은
것이니, 사용자 질문의 쟁점이 어느 쪽인지 네가 판단해 인용 여부를 정하라.
**넓혀 찾은 종류가 있는데 축을 못 쟀으면**(2026-11-04) `axis_unjudged.kind`가
`axis_gate_unmeasured`다 — 아무것도 빼지 않았고, 세법 축 신호가 없는 넓힌 히트가
`unverified`에 있으며 그 히트에 `relevance_flags: axis_unjudged_broadened`가 붙는다.
세법 질문이면 그 사건을 세법 근거로 인용하지 마라. 임베딩 장애로 못 잰 것이면 응답에
`retrieval_degraded: "dense_unavailable"`가 붙는다(잠시 뒤 다시 부르면 판정될 수 있다).
세법 개념어가 든 질의는 장애 중에도 정상 때와 같이 판정한다(`axis.axis_measured: false`).
**응답에 `relevance_floor`가 있으면 관련성이 확인되지 않은 히트가 있다**(2026-10-20).
1차·넓힌 히트 모두 판정한다. `unmatched` = 사건명에 질의어가 하나도 없는 히트,
`off_axis` = 세법 축 질의가 아닌데 섞여 온 세법 원장 소산(국세·지방세법령정보시스템) 히트다.
`weak_match` = 질의에 세 글자 이상 핵심어가 있는데 사건명에 맞은 것은 두 글자 낱말뿐인 히트다
('물가변동 조정'의 '조정대상지역지정처분' — 낱말이 다른 합성어 안에 우연히 들었다).
해당 히트에는 `relevance_flags`(`no_query_term_in_title`·`only_short_term_in_title`·
`tax_ledger_on_non_tax_query`)가
붙는다 — 그 사건을 근거로 바로 인용하지 말고 get_case로 쟁점을 확인하라.
`verdict: "no_query_term_in_titles"`면 히트 **전부**가 질의어를 하나도 안 담은 것이다 —
"관련 판례 N건"으로 옮기지 말고 '이 범위에서 못 찾았다'로 전하라(없다고 단정하지 말 것).
Args:
query: 핵심 명사 위주 검색어 (예: "부정당업자 제한", "유찰 수의계약").
**2자 이상 100자 이하**(공백 제외 2자 미만이면 `query_too_short` 오류 —
한 글자 질의는 받지 않는다. 넘치면 `query_too_long`). 자연어 한 문장도
받는다 — 사건명으로 0건이면 핵심어·본문 범위로 자동 재시도한다(최대 2회).
top_k: 종류당 반환 건수 (기본 5, **허용 1~10**). 범위 밖 값은 오류가 아니라
**가장 가까운 허용값으로 보정**된다(0·음수→1, 10 초과→10). 보정했으면
응답의 `top_k_applied`에 요청값·적용값·이유를 실어 공시하므로, 건수가
요청과 다르면 그 필드를 읽어라.
kind: "prec"(법원 판례) | "expc"(법제처 법령해석례) | "all"(둘 다, 기본)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | all | |
| query | Yes | ||
| top_k | No |