Connection check
verified live · 20h ago
contract-compass
Korean public procurement law: rule-engine rulings, statutes search, live court precedents
Tools
11
GitHub stars
—
Installs / wk
—
Licence
MIT
Transport
streamable-http
Last checked
20h ago
Tools & capabilities
11 toolsRead from the running server on 20h ago.
check_price_adjustment
read-only
org_type*check_date*contract_date*is_constructionurgent_exceptionadjustment_rate_pct
+6
물가변동 계약금액 조정(에스컬레이션) 요건 판정 + 산식 적용 — 이행단계 Phase 3. "자재값이 올랐는데 계약금액을 올려받을 수 있나", "90일 지났나", "단품 조정 되나"에 쓰라. **이 도구는 조정률을 산정하지 못한다.** 품목조정률·지수조정률은 산출내역서와 지수·단가 원천(한국은행… 물가변동 계약금액 조정(에스컬레이션) 요건 판정 + 산식 적용 — 이행단계 Phase 3. "자재값이 올랐는데 계약금액을 올려받을 수 있나", "90일 지났나", "단품 조정 되나"에 쓰라. **이 도구는 조정률을 산정하지 못한다.** 품목조정률·지수조정률은 산출내역서와 지수·단가 원천(한국은행 생산자물가지수 등)으로 계산하는 값인데 이 서버는 그 데이터를 갖고 있지 않다 — 그러니 `adjustment_rate_pct`는 **사용자·발주기관이 산정한 값**을 받아 쓰고, 안 주면 요건 ②를 `met: null`로 두고 판정을 보류한다. 없는 값을 지어내지 마라. 판정하는 것(결정론): ①기간 요건(계약체결일 또는 직전 조정기준일부터 90일 이상) ②등락률 3% 문턱 ③**단품 조정 문턱 — 국가·공기업 15%, 지방 10%(2024 개정으로 갈렸다)** ④조정 방식 결정 규칙(계약서에 지수조정률 명시가 없으면 품목조정률) ⑤조정금액 = 물가변동적용대가 × 조정률, 선금 공제 = 위 값 × 선금급률. 응답의 verdict: requirements_met / **single_item_only**(총액 조정은 미충족이나 단품 조정은 충족 — **그 자재에 한하여** 조정된다. 계약금액 전체가 아니다) / requirements_not_met / exception_path(천재지변·원자재 급등 예외 검토 대상 — 인정 주체는 발주기관) / undetermined(조정률 미제공). **두 트랙은 독립이다**(2026-08-29 수리). 단품 조정은 영 제64조⑥ "제1항 각 호에도 불구하고"라 3% 문턱과 무관하게 성립하므로, 등락률이 3% 미만이어도 verdict가 single_item_only일 수 있다 — 그때 "조정 불가"라고 답하면 오답이다. 반대로 제5항 예외가 푸는 것은 **조정제한기간(90일)뿐**이고 3% 문턱은 그대로다. Args: org_type: "national"|"local"|"public_corp" — **추측 금지**(단품 문턱이 다르다) contract_date: 계약체결일 "YYYY-MM-DD". 장기계속계약은 **제1차계약 체결일** check_date: 조정 검토·청구 시점 "YYYY-MM-DD" last_adjustment_date: 직전 조정기준일(있으면 기간 기산점이 이쪽으로 바뀐다) adjustment_rate_pct: 산정된 품목·지수 조정률(%). 감액도 그대로(음수) 넣어라 method_specified_in_contract: 계약서에 지수조정률이 명시됐으면 "index", 품목이면 "item". 모르면 생략 — 기본값(품목조정률)으로 안내하되 그 사실을 응답에 밝힌다 urgent_exception: 천재지변·원자재 급등으로 90일 이내 조정을 검토하는가 single_item_rate_pct: 단품 조정 검토 시 해당 자재 가격증감률(%) single_item_share_over_5permille: 그 자재가 재료비·노무비·경비 합계액의 1천분의 5를 초과하는가(산출내역서로 확인 — 우리가 계산하지 못한다) is_construction: 공사계약인가(단품 조정은 공사 전용 제도) adjustment_base_amount: 물가변동적용대가(원) — 조정기준일 **이후** 이행분의 대가 advance_payment_ratio: 선금급률(비율, 30%면 0.3)
decide_contract_method
read-only
org_typeproject_nameservice_typecontract_type*estimated_price*is_youth_startup
+10
계약방법 결정론 판정 — 룰엔진이 적용 가능한 계약방법 후보와 법령 근거를 반환. Args: contract_type: "construction"(공사) | "service"(용역) | "product"(물품) estimated_price: 추정가격(원) org_type… 계약방법 결정론 판정 — 룰엔진이 적용 가능한 계약방법 후보와 법령 근거를 반환. Args: contract_type: "construction"(공사) | "service"(용역) | "product"(물품) estimated_price: 추정가격(원) org_type: "national"(국가기관) | "local"(지자체) | "public_corp"(공기업·준정부, 기본) service_type: 용역일 때 "technical"|"academic"|"facility"|"it_service"|"other" construction_specialty: 공사일 때 "general"(종합)|"electrical"|"ict"|"fire_safety" 등 is_sme_competition_product: 중소기업자간 경쟁제품 여부 negotiation_reason: 수의 사유 "urgent"|"rebid_failure"|"technical_difficulty"| "patent_new_tech"|"specific_person"|"small_repeat"|"other_justified" is_women_enterprise: 여성기업 여부 — 지자체 물품·용역 2천만원 초과 1억원 이하 수의계약(시행령 제25조제1항제5호바목) 판정에 필요. 사용자가 "여성기업", "장애인기업", "사회적기업"이라고 말하면 **반드시 해당 플래그를 세워라** — 빠뜨리면 수의계약 후보가 통째로 빠지고 경쟁입찰만 제시된다. is_disabled_enterprise: 장애인기업 여부 (위와 같은 목) is_social_enterprise: 사회적기업·사회적협동조합·자활기업·마을기업 여부 (위와 같은 목). 이 유형은 행정안전부 고시 취약계층 고용비율 충족이 추가 요건이다. is_youth_startup: 청년창업기업 여부 — 물품·용역 2천만원 초과 5천만원 이하 수의계약(지방 제5호 다목 / 국가 시행령 제26조①5호가목7, 중소기업창업 지원법 제2조제11호) is_small_enterprise: 상대방이 소기업·소상공인인지 여부 — 2천만원 초과 1억원 이하 수의계약(국가 시행령 제26조①5호가목3 / 지방 시행령 제25조①5호라목) 판정에 필요. **주의: 국가·공기업 2천만원 초과~1억원 이하는 무조건 소액수의가 아니다** — 소기업·소상공인/특수 지식·기술(academic)/여성· 장애인·사회적기업/청년창업(5천만 이하) 요건 충족 시에만 수의 가능하므로, 해당하면 플래그를 세워라. 미충족이면 경쟁입찰이 원칙이다. follow_up_answers: **후속질문 답변** — 이 도구를 한 번 부르면 `follow_up_questions`가 함께 온다(제한경쟁·공동도급 등 판정을 바꾸는 조건). 사용자에게 물어 답을 얻었으면 같은 인자에 이것만 더해 **다시 부르면 `final_recommendation`(최종 계약방법)이 온다.** 형식은 `{질문id: true/false 또는 값}` (예: `{"regional_restriction": true, "joint_contract": true}`). 세션 id를 들고 다닐 필요가 없다 — 서버가 같은 호출 안에서 1단계·2단계를 이어 판정한다. 답을 모르면 넣지 마라(추측 금지). selected_rule_id: 후보 중 사용자가 고른 룰 id(예: "SVC_004"). 후보에 없으면 무시되고 그 사실이 `final_recommendation.selection_ignored_reason`에 적힌다. selected_alternative_kind: `practice_alternatives`에서 사용자가 고른 실무 옵션의 kind.
delay_exemption_guide
read-only
groundcontract_kind*
지체일수에서 **빼는(불산입) 사유** 지도 — estimate_delay_penalty가 정하지 않는 부분. "이 지연은 우리 책임이 아닌데 지체상금을 물어야 하나", "동절기 공사중지 기간도 지체일수인가", "관급자재가 늦게 와서 늦어졌다" 같은 질문에 쓰라. **이 도구는 해당 여부를 판정하… 지체일수에서 **빼는(불산입) 사유** 지도 — estimate_delay_penalty가 정하지 않는 부분. "이 지연은 우리 책임이 아닌데 지체상금을 물어야 하나", "동절기 공사중지 기간도 지체일수인가", "관급자재가 늦게 와서 늦어졌다" 같은 질문에 쓰라. **이 도구는 해당 여부를 판정하지 않는다.** 일반조건 문언 자체가 "계약담당공무원이 인정할 때"를 요건으로 두므로 판단은 발주기관 몫이다. 도구가 주는 것은 셋이다 — ①예규에 있는 사유 목록과 원문 인용 ②각 사유가 인정되려면 **확정돼야 할 사실** (must_establish — 사용자와 하나씩 확인하라) ③기재부·행안부 회신 선례. 쓰는 순서: 이 도구로 사유를 좁힌다 → must_establish를 사용자와 확인한다 → 불산입 일수가 정해지면 estimate_delay_penalty의 excluded_days에 넣어 다시 계산한다. (sw_requirement_change는 해당 일수의 **1/2**만 넣는다 — 예규가 절반만 빼준다.) **ground 목록은 계약유형과 무관한 전체 열거다** — 어떤 사유는 일반조건 계열(공사/물품/ 용역)뿐 아니라 계약유형까지 좁혀야 한다(예: sw_requirement_change는 같은 조건 제49조의 소프트웨어사업 전용이라 용역 계열이어도 운송·보관 계약에는 해당할 수 없다). 해당하지 않는 조합은 `ground_not_applicable`로 거부하고 가능한 사유를 알려준다. 목록 조회에서 이렇게 빠진 사유는 `grounds_excluded_by_contract_kind`에 사유와 함께 실린다 — 조용히 사라지지 않는다. 주의: `quote_truncated: true`인 항목은 우리가 회수한 조문 인용이 중간에서 끊긴 것이다 — 그대로 인용하지 말고 search_references로 전문을 확인하라. 끊긴 문장을 이어서 지어내면 그것이 이 서버가 막으려는 오답이다. Args: contract_kind: estimate_delay_penalty와 같은 값. 일반조건 계열(공사/물품/용역)로 매핑되며, 실제로 계약서에 편입된 일반조건이 진실원임을 응답이 경고한다 ground: 특정 사유 하나만 상세히 볼 때. 생략하면 그 계약유형의 전체 목록
estimate_delay_penalty
read-only
org_type*delay_days*contract_kind*excluded_dayscontract_amount*design_build_approved
+1
지체상금(국가·공기업)·지연배상금(지방) 산정 — 법정 요율·기준금액·30% 한도를 결정론 적용. **국가와 지방은 요율이 다르다**(물품 0.75/1000 ↔ 0.8/1000, 용역 1.25/1000 ↔ 1.3/1000) — org_type을 반드시 사용자에게 확인해서 넣어라. 법정 용어도 다르다(국가=… 지체상금(국가·공기업)·지연배상금(지방) 산정 — 법정 요율·기준금액·30% 한도를 결정론 적용. **국가와 지방은 요율이 다르다**(물품 0.75/1000 ↔ 0.8/1000, 용역 1.25/1000 ↔ 1.3/1000) — org_type을 반드시 사용자에게 확인해서 넣어라. 법정 용어도 다르다(국가=지체상금, 지방=지연배상금). **이 도구는 지체일수를 정하지 않는다.** 준공검사 소요기간·검사 불합격 재검사 기간· 발주기관 귀책 일수 같은 것은 사실 판단이다 — delay_days/excluded_days는 사용자가 선언한 값으로 계산에 그대로 쓰이고, 응답의 counted_days.disclaimer가 이 사실을 밝힌다. 면책 사유 해당 여부가 쟁점이면 search_references로 예규·감사원 실무가이드를 찾아라. 응답 필드: term/counterpart_term 기관유형에 따른 법정 용어(+반대편 용어) rate 적용 요율·근거 조문(호까지). inferred=true면 법문이 아니라 우리 해석 base_amount 계약금액 − 인수분 산출 내역 counted_days 선언 지체일수 − 선언 면책일수 amount_raw / cap / amount 한도 적용 전 금액 / 30% 한도 / 최종(한도 적용 후) warnings 미선언 항목·한도 적용·용어 비대칭 등 실토 legal_basis 근거 조문 — get_law_article로 원문 확인 가능 Args: contract_kind: 요율 호와 1:1. "construction"(공사) | "product_manufacture"(물품 제조·구매) | "product_repair"(물품 수리·가공·대여) | "service"(용역·기타) | "military_food"(군용 음·식료품) | "transport_storage"(운송·보관·양곡가공) org_type: "national"(국가기관) | "local"(지자체) | "public_corp"(공기업·준정부). **추측 금지** — 요율이 달라 틀린 금액이 된다 contract_amount: 계약금액(원). **장기계속계약이면 총액이 아니라 연차별 계약금액** delay_days: 지체일수(총 지체일수 — 면책일수를 포함해서 넣고, 면책분은 아래에 따로) excluded_days: 계약상대자 책임 없는 사유 일수(모르면 0으로 두되 응답 경고를 전달하라) accepted_portion_amount: 검사를 거쳐 인수한 기성·기납 부분 금액(원) design_build_approved: 설계·제조 일괄 + 발주기관 승인이 필요한 물품인지(요율 예외)
get_case
read-only
kind*case_id*
판례/해석례 본문 조회 — 판시사항·판결요지·참조조문(판례) 또는 질의요지·회답·이유(해석례). 응답의 `source_url`은 국가법령정보센터 원문 주소다 — 판례·해석례를 인용할 때는 **이 링크를 함께 제시하라**(감사·보고서에서 근거를 되짚을 수 있어야 한다). **`error:"case_… 판례/해석례 본문 조회 — 판시사항·판결요지·참조조문(판례) 또는 질의요지·회답·이유(해석례). 응답의 `source_url`은 국가법령정보센터 원문 주소다 — 판례·해석례를 인용할 때는 **이 링크를 함께 제시하라**(감사·보고서에서 근거를 되짚을 수 있어야 한다). **`error:"case_body_unavailable"`이면 `source_url`은 null이고 `existence_verified`는 false다**(2026-09-04). 이건 "본문만 없다"가 아니다 — 우리는 ①본문 미제공(하급심· 국세청 등 타기관 제공)과 ②그런 일련번호가 없음을 **구분하지 못한다**(본문 API 응답이 같다). 그러니 **링크를 만들어 채우지 마라**: law.go.kr 뷰어는 없는 번호에도 200과 빈 페이지를 주므로 열린다는 것이 존재의 증거가 아니다. 이 case_id가 search_cases 결과에서 온 것이면 그 결과의 사건명·사건번호·source_url만 인용하고, 아니면 아무것도 인용하지 말고 search_cases로 다시 찾아라. Args: kind: "prec" | "expc" (search_cases 결과의 kind) case_id: search_cases 결과의 case_id
get_law_article
read-only
ref*
법령 조문 원문 전체 조회. **코퍼스가 둘이다(2026-08-29)** — 공공계약(국가·지방계약법 계열)과 세법(소득세법· 법인세법·부가가치세법·조세특례제한법·지방세법 등). 축은 법령명으로 자동으로 정해지니 부르는 쪽은 신경 쓸 것이 없다("소득세법 제55조"도 "국가계약법 시행령 제26조"와… 법령 조문 원문 전체 조회. **코퍼스가 둘이다(2026-08-29)** — 공공계약(국가·지방계약법 계열)과 세법(소득세법· 법인세법·부가가치세법·조세특례제한법·지방세법 등). 축은 법령명으로 자동으로 정해지니 부르는 쪽은 신경 쓸 것이 없다("소득세법 제55조"도 "국가계약법 시행령 제26조"와 똑같이 넣으면 된다). 다만 **답할 때는 어느 법의 조문인지 밝혀라** — 세법 조문을 공공계약 근거로 인용하는 것은 우리가 막을 수 없다. 응답의 `notes`가 비어 있지 않으면 **법률 자체의 미정비 상호인용**이 탐지된 것이다(예: 제5항이 '제2항 각 호'를 인용하나 제2항에 각 호가 없음). 원문은 law.go.kr 현행 그대로이며 우리가 고치지 않는다 — 그 조문을 근거로 답할 때는 notes의 내용을 사용자에게 함께 알리고 단정을 피하라. 응답에 `assumption`이 있으면 **법령명을 우리가 추정해 채운 것**이다(예: "시행령 제26조" → 국가계약법 시행령). 지방계약 질문이었다면 틀린 법을 보고 있는 것이니 assumption.hint대로 법령명을 붙여 다시 부르고, 어느 법령 기준인지 사용자에게 밝혀라. **`implementing_note`(및 `implementing_articles`)가 있으면 이 조문의 위임을 받은 하위 조문이 이 서버 안에 있다.** 조문 본문에 사유·요건·수치가 안 보이는 것은 없어서가 아니라 아래로 넘겼기 때문이다 — 거기 적힌 ref를 그대로 get_law_article에 넣어 읽고 답하라(추가 검색 불필요). 하위 조문의 `cites`는 그 조문이 스스로 밝힌 근거 인용이다. **`delegation_note`가 있으면 이 조문은 값을 직접 정하지 않는다.** 배점·요율·금액 같은 수치가 조문에 안 보이는 것은 없어서가 아니라 하위 규범(시행령·시행규칙·예규· 고시)에 넘겨졌기 때문이다 — `delegations[]`의 `how`가 시키는 대로 그 규범을 먼저 읽고 답하라. `in_corpus`가 false면 이 서버 범위 밖이니 **"규정이 없다"고 말하지 말고** law.go.kr로 안내하라. 조문만 읽고 수치를 단정하는 것이 이 필드가 막으려는 실패다. **별표(표)도 같은 도구로 읽는다**(2026-08-23). search_law가 별표 히트로 준 law_ref ("건설기술 진흥법 시행령 [별표 8]")를 그대로 넣으면 표 전문이 온다 — 이때 응답의 `kind`가 "table"이고, `related_article`이 있으면 그 표의 근거 조문이다(표만 인용하고 근거 조문을 빼면 읽는 쪽이 법적 근거를 되짚을 수 없다). **계약예규·세부기준의 조문도 같은 도구로 읽는다**(2026-09-04). search_references가 준 `source`+`section`을 이어 붙여 넣으면 된다("(계약예규) 용역계약일반조건 제18조"). 이때 응답의 `kind`는 "admin_rule"이다 — **법률·시행령이 아니라 행정규칙(예규)**이니 인용할 때 그 신분을 밝혀라. 법령명·정식명 어느 쪽으로 불러도 같은 조문이 온다 ("국가를 당사자로 하는 계약에 관한 법률 시행령 제26조" = "국가계약법 시행령 제26조"). 404(`article_not_found`)에서 `law_in_corpus`가 true면 **그 규범은 우리가 갖고 있고 그 조문번호만 없다**는 뜻이다 — 규범 자체가 없다고 말하지 마라. false면 범위 밖이며, `corpus_laws`(법령)와 `corpus_admin_rules`(예규·세부기준)가 우리 범위 전부다. Args: ref: 정확한 조문 참조 (예: "국가계약법 시행령 제26조") 또는 별표 참조 (예: "국가계약법 시행규칙 [별표 2]") 또는 예규 조문 참조 (예: "(계약예규) 용역계약일반조건 제18조")
get_law_article_asof
read-only
ref*date*
**특정 시점에 시행 중이던** 조문 원문 조회 (law.go.kr 연혁 라이브). get_law_article은 항상 현행이다. 과거 사건에 현행 조문을 적용하면 조용히 틀린 답이 된다 — 계약 체결·입찰공고·처분 시점이 과거이면 **반드시 이 도구를 쓰라**: - "2023년에 체결한 계약인… **특정 시점에 시행 중이던** 조문 원문 조회 (law.go.kr 연혁 라이브). get_law_article은 항상 현행이다. 과거 사건에 현행 조문을 적용하면 조용히 틀린 답이 된다 — 계약 체결·입찰공고·처분 시점이 과거이면 **반드시 이 도구를 쓰라**: - "2023년에 체결한 계약인데 지체상금률이 맞나" - "재작년 부정당업자 제재가 당시 기준으로 적법했나" - 감사·분쟁·소송 대응(적용법령은 행위시법이 원칙) 응답 필드: effective_date 그 시점에 시행 중이던 판의 시행일자 is_current 그 판이 지금도 현행인가 (False면 이후 개정됨) prev/next_effective_date 직전·직후 개정 시행일 — 경계 판단용 notes 미정비 상호인용 경고 (get_law_article과 동일) as_of_in_future 기준일이 미래여서 그 시점을 확정할 수 없음 (True면 아래 note를 읽어라) as_of_note 그 경우 무엇을 대신 돌려줬는지 — 미래 시점 적용법령을 단정하지 마라 covered 우리 연혁 목록이 그 시점을 실제로 덮었는가 (False면 coverage_note를 읽어라) coverage_start/coverage_end 우리가 본 연혁의 시행일 범위 versions_complete 연혁 목록을 끝까지 읽었는가 (False면 그 아래에 못 본 판이 있다) **덮지 못하는 기준일에는 근사판을 주지 않는다.** 기준일이 그 법령의 최초 시행일보다 앞서면 `error: "asof_not_covered"` + `covered: false` + coverage_start/end가 온다 — 그때의 적용법령을 지어내지 말고, 우리 연혁이 어디서부터인지를 사용자에게 그대로 전하라. **미래 날짜는 답할 수 없는 질문이다.** 아직 공포되지 않은 개정은 이 연혁에 없으므로 그 시점에 무엇이 시행 중일지 우리는 모른다. date가 미래면 오늘 기준 판을 주면서 `as_of_in_future=true`로 그 사실을 밝힌다 — 그 응답을 그 시점의 적용법령으로 쓰지 마라. Args: ref: 조문 참조 (예: "국가계약법 제27조", "국가계약법 시행령 제26조") date: 기준일 "YYYY-MM-DD" 또는 "YYYYMMDD" (예: 계약 체결일)
report_issue
message*category*expectedrelated_toolrelated_query
오류·개선 제보, 그리고 **원문 질문 기록**(category="question_log"). **제보**: 사용자가 "틀렸다"고 지적하면 **먼저 이 도구로 제보한 뒤** 정정 답을 제시하라. 도구 결과가 조문·수치·판례와 명백히 불일치할 때도 제보하라. 추측으로 부르지 말 것. 서버가 직전 도구… 오류·개선 제보, 그리고 **원문 질문 기록**(category="question_log"). **제보**: 사용자가 "틀렸다"고 지적하면 **먼저 이 도구로 제보한 뒤** 정정 답을 제시하라. 도구 결과가 조문·수치·판례와 명백히 불일치할 때도 제보하라. 추측으로 부르지 말 것. 서버가 직전 도구 호출 기록을 자동 첨부하므로 도구명·인자를 기억으로 적을 필요 없다. **원문 질문 기록**(`category="question_log"`): 이 서버는 네가 이미 도구 호출로 번역한 뒤를 본다 — **사용자가 실제로 무엇을 물었는지 볼 수 없다.** "관공서 물품 살 때 수의계약 얼마까지 되나요?"가 `search_law(query="수의계약")`로 도착하면, 질문에 있던 '관공서'· '물품 구매'라는 맥락은 우리에게 영영 안 남는다. 그 원문이 질문은행·평가셋·로드맵의 유일한 원천이다. **응답이 `hint`로 기록을 요청하면 그때 남겨라** — 0건·범위 밖·부분 답변이 그런 자리다. 네가 스스로 "잘 답했다"고 느낀 경우까지 남길 필요는 없다. `message`에 원문을 넣되 **개인 식별 조합은 일반형으로 바꿔서** 넣는다(기관명·사건번호·금액 조합 등). Args: category: "wrong_citation"(오인용) | "outdated_law"(개정 미반영) | "wrong_ruling"(룰엔진 오판정) | "tool_error"(도구 오류) | "feature_request"(기능 요청) | "question_log"(원문 질문 기록) | "other" message: 무엇이 어떻게 잘못됐는지 구체적으로. **question_log이면 사용자의 원문 질문** related_tool: 문제가 난 도구명 (예: "search_references") related_query: 문제를 재현하는 질의·입력 expected: 올바르다고 생각하는 값·조문 (알고 있다면)
search_cases
read-only
kindquery*top_k
판례·법령해석례 검색 — law.go.kr 실시간 조회(항상 현행). LLM 미사용. 분쟁·처분취소·해석 다툼("~해도 되나", "~취소될 수 있나")에 조문만으로 부족할 때 쓰라. 본문은 get_case(kind, case_id)로 이어서 조회. **응답은 무엇으로 몇 건을 봤는지까지 말한다**… 판례·법령해석례 검색 — 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`가 밝힌 범위를 함께 말하고 "판례가 없다"고 단정하지 마라. **응답에 `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건이면 '이 사다리로는 못 찾았다'로 전하라. Args: query: 핵심 명사 위주 검색어 (예: "부정당업자 제한", "유찰 수의계약"). 자연어 한 문장도 받는다 — 사건명으로 0건이면 핵심어·본문 범위로 자동 재시도한다(최대 2회). top_k: 종류당 반환 건수 (기본 5, 최대 10) kind: "prec"(법원 판례) | "expc"(법제처 법령해석례) | "all"(둘 다, 기본)
search_law
read-only
query*top_kcorpus
법령 조문 검색 — 키워드 또는 조문번호로 조문 스니펫 반환(상위 top_k건). **코퍼스가 둘이고 한 응답은 한 쪽에서만 온다(2026-08-29).** 공공계약(국가·지방계약법 계열 38개 법령)과 **세법**(소득세법·법인세법·부가가치세법·조세특례제한법·지방세법 등 64개 법령)이다. 축은… 법령 조문 검색 — 키워드 또는 조문번호로 조문 스니펫 반환(상위 top_k건). **코퍼스가 둘이고 한 응답은 한 쪽에서만 온다(2026-08-29).** 공공계약(국가·지방계약법 계열 38개 법령)과 **세법**(소득세법·법인세법·부가가치세법·조세특례제한법·지방세법 등 64개 법령)이다. 축은 자동으로 정해진다 — 질의가 세법 법령을 이름으로 부르면 세법 코퍼스로 가고, 그 밖에는 공공계약 코퍼스에서 찾다가 **거기서 못 찾을 때만** 세법 코퍼스를 본다. `corpus="tax"`/`"contract"`로 강제할 수도 있다. 응답의 `corpus`가 **어느 코퍼스를 봤는지**다 — 세법 결과를 공공계약 근거로, 공공계약 결과를 세법 근거로 인용하지 마라. `note_corpus`가 있으면 왜 그 축이었는지다. 전문이 필요하면 get_law_article(ref)로 이어서 조회. hit에 note가 있으면 삭제·폐지된 조문이다 — 판단 근거로 인용하지 마라. **hit의 `implementing_articles`가 있으면 다음 호출이 이미 정해진 것이다.** 그 조문은 "대통령령으로 정하는 바에 따라"라고만 하고 구체적 사유·요건·수치는 거기 적힌 하위 조문에 있다(예: 국가계약법 제7조 → 시행령 제26조 수의계약에 의할 수 있는 경우). **다른 도구로 다시 검색하지 말고** 그 참조를 그대로 get_law_article에 넣어라. hit의 `delegated`가 true인데 `implementing_articles`가 없으면 하위 조문이 조문 단위로 특정되지 않은 것이다 — get_law_article로 전문을 열어 `delegations`를 보고 가라. hit의 `article`이 "[별표 N]"이면 **표**다(2026-08-20 색인). 표 전문은 그 히트의 `law_ref`를 그대로 get_law_article에 넣어 읽는다(조문과 같은 경로다). `related_article`이 있으면 그 표의 근거 조문이니 함께 밝혀라 — 제재 기간·요율 같은 값의 실제 출처가 여기다(근거 조문이 둘 이상이면 `related_articles`에 전부 온다). 별표 제목에 "(제N조 관련)" 표기가 없는 표는 이 필드가 **없다** — 그때는 표 자체를 근거로 인용하라. error가 "no_corpus_match"면 질의한 법령이 이 코퍼스 밖이다 — **그런 규정이 없다는 뜻이 아니므로** 그렇게 답하지 말고 corpus_laws로 범위를 밝힌 뒤 law.go.kr을 안내하라. **범위 공시를 먼저 읽어라(2026-08-29).** `total_found`는 코퍼스에서 맞은 **총수**이고 `count`는 네가 지금 받은 건수다. 둘이 다르면 `note`/`note_coverage`가 왜 잘렸는지 말해 준다 — 그때 "관련 조문은 N건뿐"이라고 답하면 거짓이다. `truncated:true`면 백엔드 반환 상한(`backend_cap`)에 걸린 것이고, `complete:false`면 total_found조차 **하한**이다. `total_found_is_lower_bound:true`면 `total_found`는 **"최소 N건 이상"**이라는 뜻이다 — 우리가 스캔 상한(`scan_limit`)에서 세기를 멈췄으므로 그 숫자를 정확한 총수로 인용하지 마라. 더 필요하면 top_k를 올리거나(최대 20) 법령명·조문번호로 질의를 좁혀 다시 불러라. `search_scope`/`searched`는 어느 가지로 찾았는지다(article·keyword·token·semantic). `degraded:"semantic_unavailable"`이면 의미(임베딩) 검색이 장애로 못 돌아 **키워드 매치만**으로 답한 것이다 — 이때의 0건은 부재의 근거가 아니다. 사용자에게 그 사실을 밝히고 핵심어를 바꿔 재검색하라. Args: query: "수의계약", "시행령 제26조", "제21조", "소득세법 제55조" 등 top_k: 반환 건수 (기본 8, 최대 20) corpus: 코퍼스 강제 지정 — "contract"(공공계약) | "tax"(세법). 생략하면 자동.
search_references
read-only
query*top_k