Skip to main content
Glama

Server Details

Korean public procurement law: rule-engine rulings, statutes search, live court precedents

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
sallim-app/contract-compass
GitHub Stars
0
Server Listing
Contract Compass

Available Tools

11 tools
check_price_adjustment물가변동 조정 판정A
Read-onlyIdempotent
Inspect

물가변동 계약금액 조정(에스컬레이션) 요건 판정 + 산식 적용 — 이행단계 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)
ParametersJSON Schema
NameRequiredDescriptionDefault
org_typeYes
check_dateYes
contract_dateYes
is_constructionNo
urgent_exceptionNo
adjustment_rate_pctNo
last_adjustment_dateNo
single_item_rate_pctNo
advance_payment_ratioNo
adjustment_base_amountNo
method_specified_in_contractNo
single_item_share_over_5permilleNo

TDQS

A4.7/5.0
Behavior5/5

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

Even though annotations already mark the tool as read-only and idempotent, the description adds substantial behavioral context: it cannot compute the rate itself, it uses user-supplied `adjustment_rate_pct`, it returns distinct verdicts including `single_item_only`, `exception_path`, and `undetermined`, and it explicitly instructs the agent not to invent missing values. This goes well beyond the structured annotations.

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

Conciseness4/5

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

The description is long, but the tool is genuinely complex with 12 parameters and multiple legal branches. It is well front-loaded: purpose and the central 'cannot compute rate' limitation appear before verdicts and parameters. A few points are restated across the verdict list and the Args section, so it could be slightly tighter.

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?

With no output schema, the description compensates by enumerating all possible verdicts and their precise meanings, including the critical `single_item_only` nuance and the exception-path semantics. It covers the omission behavior, the two independent tracks, and the relationship between the 90-day exception and the 3% threshold, leaving little for an agent to infer incorrectly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full parameter-documentation burden. It explains every parameter's meaning, format, default, and pitfalls, including that `advance_payment_ratio` is a ratio (0.3 for 30%), `adjustment_rate_pct` may be negative for decreases, and `single_item_share_over_5permille` is a check the server cannot itself calculate.

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

Purpose5/5

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

The description names a specific action and object: '물가변동 계약금액 조정(에스컬레이션) 요건 판정 + 산식 적용', and gives concrete sample questions ('자재값이 올랐는데...', '90일 지났나', '단품 조정 되나'). It also clearly states what the tool cannot do (compute the adjustment rate), which distinguishes it from the surrounding legal-search and contract-decision siblings.

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 when-to-use signals and tells the agent not to fabricate missing rate data, leaving the requirement as 'met: null' instead. It also warns about the single-item track being independent of the 3% threshold. However, it does not explicitly name a sibling alternative for cases where the tool is not appropriate, so it stops just 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.

decide_contract_method계약방법 판정A
Read-onlyIdempotent
Inspect

계약방법 결정론 판정 — 룰엔진이 적용 가능한 계약방법 후보와 법령 근거를 반환.

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
org_typeNopublic_corp
project_nameNoMCP 조회
service_typeNo
contract_typeYes
estimated_priceYes
is_youth_startupNo
selected_rule_idNo
follow_up_answersNo
negotiation_reasonNo
is_small_enterpriseNo
is_women_enterpriseNo
is_social_enterpriseNo
construction_specialtyNo
is_disabled_enterpriseNo
selected_alternative_kindNo
is_sme_competition_productNo

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/idempotent annotations, the description discloses the two-stage decision flow, the behavior of selected_rule_id when invalid (selection_ignored_reason), and the critical consequence of omitting enterprise flags (negotiation candidates disappear). This is rich behavioral context that annotations alone do not provide.

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

Conciseness5/5

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

The description is long but appropriately so for a 16-parameter legal rule engine. It is front-loaded with the core purpose, then systematically walks through each argument with necessary legal context and warnings. No sentence is wasted; the length is justified by the complexity.

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?

With no output schema, the description explains the return concepts: candidates, legal basis, follow_up_questions, final_recommendation, and selection_ignored_reason. It also covers the two-stage invocation model and the conditional logic for enterprise flags. For a tool of this complexity, the description is remarkably complete.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden—and it delivers. Every meaningful parameter is explained with allowed values, legal references, conditional relevance, and warnings (e.g., is_small_enterprise, is_women_enterprise, follow_up_answers). This far exceeds the bare schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: '계약방법 결정론 판정 — 룰엔진이 적용 가능한 계약방법 후보와 법령 근거를 반환' (rule engine returns applicable contract method candidates and legal basis). This clearly distinguishes it from sibling tools like search_law or estimate_delay_penalty, which address different legal/calculation 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 provides clear workflow guidance: call once to get follow_up_questions, ask the user, then call again with follow_up_answers to receive final_recommendation. It also warns against guessing answers. However, it does not explicitly state when not to use this tool or name alternative tools, so it stops short of a 5.

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

delay_exemption_guide지체일수 불산입 사유A
Read-onlyIdempotent
Inspect

지체일수에서 빼는(불산입) 사유 지도 — 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: 특정 사유 하나만 상세히 볼 때. 생략하면 그 계약유형의 전체 목록
ParametersJSON Schema
NameRequiredDescriptionDefault
groundNo
contract_kindYes

TDQS

A5/5.0
Behavior5/5

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

Despite rich annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint), the description adds substantial behavioral context: the tool never adjudicates (judgment is the owner's), it rejects non-applicable combinations via ground_not_applicable and lists excluded grounds via grounds_excluded_by_contract_kind so they 'don't disappear silently,' and it warns against fabricating continuations of truncated citations. The openWorldHint is consistent with the full-enumeration-plus-exclusion behavior described. 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.

Conciseness5/5

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

Long but dense — every paragraph carries distinct value appropriate to a domain-specific legal guide. Purpose is front-loaded, followed by the critical 'does not determine' disclaimer, then numbered deliverables, then the integration workflow, contract-kind narrowing, and the truncated-quote safety warning. Bold markers, numbered items, and parenthetical specifics keep it scannable; nothing is redundant.

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

Completeness5/5

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

For a complex tool with no output schema, the description is remarkably complete: it covers purpose, the three output categories, usage order and sibling integration, partial-exclusion rule (sw_requirement_change 1/2), contract-type narrowing and grounds_excluded_by_contract_kind behavior, and the quote_truncated safety advisory. The response field names it mentions (ground_not_applicable, grounds_excluded_by_contract_kind, quote_truncated) give the agent enough to interpret returns despite no formal output schema.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry full weight — and does. contract_kind is explained as 'same value as estimate_delay_penalty,' mapped to the general-conditions series, with a warning that the incorporated conditions are the source of truth. ground is explained as optional, for viewing one reason in detail, with default full-list behavior. The body additionally clarifies subtle enum semantics (e.g., sw_requirement_change applies only to software contracts and contributes 1/2 of days), fully compensating for the schema's lack of descriptions.

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

Purpose5/5

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

States a specific purpose: a guide to reasons for excluding (불산입) delay days, explicitly positioned as 'the part estimate_delay_penalty does not determine.' Names the three concrete deliverables (regulation reason list with citations, must_establish facts to verify, and ministry precedents) and distinguishes itself from the sibling estimate_delay_penalty. The opening use-case questions ('이 지연은 우리 책임이 아닌데...') make the intent unmistakable.

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

Usage Guidelines5/5

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

Extremely explicit: provides a step-by-step usage order (narrow reasons → verify must_establish with user → feed excluded_days into estimate_delay_penalty), gives the exact question types this tool answers, and names the alternative (search_references) for quote_truncated cases. Also states what the tool does NOT do — determine applicability, which belongs to the contracting officer — preventing misuse.

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

estimate_delay_penalty지체상금 산정A
Read-onlyIdempotent
Inspect

지체상금(국가·공기업)·지연배상금(지방) 산정 — 법정 요율·기준금액·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: 설계·제조 일괄 + 발주기관 승인이 필요한 물품인지(요율 예외)
ParametersJSON Schema
NameRequiredDescriptionDefault
org_typeYes
delay_daysYes
contract_kindYes
excluded_daysNo
contract_amountYes
design_build_approvedNo
accepted_portion_amountNo

TDQS

A5/5.0
Behavior5/5

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

Annotations indicate read-only, idempotent, non-destructive behavior, and the description adds substantial behavioral context: it applies legal rates deterministically, does not decide factual delay days, reflects user-declared values, emits a counted_days.disclaimer, and exposes warnings about undeclared inputs. No contradiction with annotations exists.

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

Conciseness5/5

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

Although long, the description is tightly structured with clear sections: headline purpose, critical rate differences, non-responsibilities, response fields, and parameter semantics. Every block adds essential information for a complex legal calculation tool, and the most important warnings are bolded and 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?

Given the tool's complexity, 7 parameters, no output schema, and no nested schema information, the description is exceptionally complete. It explains all inputs, key calculation behavior, response fields, legal basis lookup via get_law_article, limitation disclaimers, and when to route to another tool.

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

Parameters5/5

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 with detailed Korean-language semantics for every parameter. It explains enum values in context, warns against guessing org_type, clarifies that contract_amount should be the annual amount for long-term contracts, and explains the relationship between delay_days and excluded_days.

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 and resource: '지체상금(국가·공기업)·지연배상금(지방) 산정' making it clear this tool calculates statutory delay penalties. It further specifies scope by naming the legal rates, base amount, and 30% cap, and distinguishes itself from siblings by explicitly stating it does not determine delay days.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: confirm org_type with the user before invoking, use declared delay/excluded day values rather than adjudicating excuses, and use search_references when exemption eligibility is the real issue. It clearly states what this tool does NOT do, which is strong alternative guidance.

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

get_case판례·해석례 본문A
Read-onlyIdempotent
Inspect

판례/해석례 본문 조회 — 판시사항·판결요지·참조조문(판례) 또는 질의요지·회답·이유(해석례).

응답의 `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
ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
case_idYes

TDQS

A4.9/5.0
Behavior5/5

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

Discloses the error behavior in detail: error:"case_body_unavailable" means source_url is null and existence_verified is false, and that the tool cannot distinguish a missing body from a nonexistent ID. It also explains that law.go.kr returns 200 for nonexistent IDs, so an open link is not proof of existence.

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

Conciseness5/5

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

Front-loaded with the purpose, then organized into clear paragraphs covering source_url, error behavior, and fallback rules. Every sentence earns its place, especially the warning about not fabricating links.

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?

With no output schema, the description covers what the response contains, the meaning of key fields, the error case, and the correct action when the body is unavailable. The tool's complexity is high, and the description addresses the main pitfalls an agent would face.

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

Parameters4/5

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

Schema coverage is 0%, so the Args section carries the burden. It explains that kind must be 'prec' or 'expc' from search_cases results and that case_id comes from search_cases. It could expand the abbreviations or give an example, but it adds the critical provenance semantics.

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

Purpose5/5

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

States the exact operation ('판례/해석례 본문 조회') and enumerates the content types returned for each case kind. The title and first line make it easy to distinguish from siblings like search_cases or get_law_article.

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

Usage Guidelines5/5

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

Provides concrete guidance: use case_id from search_cases results, cite only the search_cases fields when the body is unavailable, and fall back to search_cases when the ID is not from that source. It also tells the agent when not to fabricate source_url links.

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

get_law_article법령 조문 원문A
Read-onlyIdempotent
Inspect

법령 조문 원문 전체 조회.

**코퍼스가 둘이다(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조")
ParametersJSON Schema
NameRequiredDescriptionDefault
refYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, and the description adds substantial context beyond them: the two-corpus auto-routing behavior, the meanings of notes (unmaintained cross-references), assumption (inferred law name), implementing_note, delegation_note, kind ('table'/'admin_rule'), related_article, 404 semantics with law_in_corpus, and the statement that text is returned unmodified from law.go.kr. No contradiction with annotations; '우리가 고치지 않는다' aligns with readOnlyHint=true.

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

Conciseness4/5

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

The description is long, but it is front-loaded with the core purpose and each bolded section addresses a real failure mode (wrong-law citation, unmaintained cross-refs, delegated values, table vs. article, admin-rule identity, 404 misinterpretation). Minor deduction for changelog-style date stamps ('2026-08-29', '2026-08-23', '2026-09-04') that add noise for an agent and could be dropped without losing meaning.

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

Completeness4/5

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

With no output schema, the description must convey return semantics, and it does so thoroughly: notes, assumption, implementing_note/delegation_note, kind, related_article, law_in_corpus, and the corpus inventory lists. For a single-param tool with a complex response domain this is nearly complete. The gap is the unaddressed get_law_article_asof sibling and the absence of any guidance about very long table truncation, but those are minor against the coverage provided.

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

Parameters5/5

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

Schema coverage is 0% — the only param 'ref' has no schema description — so the description carries the full burden and fully compensates. The Args section gives three concrete formats (statute article, table/별표 reference, administrative rule reference), notes both full and abbreviated law names are accepted ('국가를 당사자로 하는...' = '국가계약법'), and explains the corpus is auto-selected by law name so the caller need not disambiguate.

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

Purpose4/5

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

The opening line '법령 조문 원문 전체 조회' is a specific verb+resource statement (retrieve full original text of law provisions), and the description distinguishes this read tool from search_law/search_references by explaining they feed references INTO this tool. However, the closest sibling get_law_article_asof is never mentioned, so the differentiation is incomplete.

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

Usage Guidelines5/5

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

Exceptionally explicit guidance: when search_law returns a table ref or search_references returns source+section, feed them here; when assumption.hint indicates a wrong law, re-call with the law name attached; when implementing_note is present, read its refs with this same tool and '추가 검색 불필요'; when delegation_note has in_corpus=false, route the user to law.go.kr instead of claiming the regulation doesn't exist. Alternatives, re-call conditions, and explicit 'do not' instructions are all present.

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

get_law_article_asof특정 시점 시행 조문A
Read-onlyIdempotent
Inspect

특정 시점에 시행 중이던 조문 원문 조회 (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" (예: 계약 체결일)
ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
dateYes

TDQS

A5/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, the description discloses many non-obvious behaviors: uncovered early dates return asof_not_covered with coverage metadata rather than a approximate version, future dates return today's text with as_of_in_future true, and the agent must not invent applicable law for uncovered ranges. This is exactly the kind of behavioral context that prevents misuse.

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

Conciseness5/5

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

Though long, the description is well-structured with bold headers, bullets, and front-loaded purpose. Every section earns its place: usage warning, response fields, error behavior, and argument examples, and since there is no output schema, the response-field list is necessary.

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?

The description is exceptionally complete for a tool with no output schema: it covers purpose, sibling distinction, required argument semantics, response fields, coverage limits, error conditions, and future-date behavior. A agent has enough to call the tool correctly and interpret results without guessing.

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

Parameters5/5

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

The input schema provides zero description for ref and date, so the description carries the full burden. It defines ref as an article reference with concrete examples and date as a 기준일 in YYYY-MM-DD or YYYYMMDD format with a contract-date example, and the prose further clarifies date edge cases like future dates.

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 specific verb and resource: querying the original text of an article that was in force at a given time, backed by law.go.kr's history service. It also immediately distinguishes itself from get_law_article, which is always current, so an agent can tell the two apart without inspecting schemas.

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

Usage Guidelines5/5

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

The description explicitly says get_law_article is always current and that applying it to past events silently gives wrong answers, and instructs to forcibly use this tool whenever the relevant event is in the past. It supplies concrete examples and even warns that future dates cannot be answered, telling the agent to not treat the returned text as applicable law.

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

report_issue오류 제보·질문 기록AInspect

오류·개선 제보, 그리고 원문 질문 기록(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: 올바르다고 생각하는 값·조문 (알고 있다면)
ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes
categoryYes
expectedNo
related_toolNo
related_queryNo

TDQS

A4.9/5.0
Behavior5/5

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

With annotations all false and providing little safety context, the description carries the full burden and does so well. It discloses that the server auto-attaches prior tool-call history, that the server cannot see the user's original question after translation, and that personal identifying combinations must be generalized.

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

Conciseness4/5

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

The description is long but well-structured with bolded key terms and clear sections. Every paragraph adds necessary operational detail, though the question_log explanation is somewhat verbose. It is front-loaded with the core purpose and remains readable.

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

Completeness5/5

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

Given the tool's complexity, zero output schema, and minimal annotations, the description is remarkably complete. It covers purpose, triggers, exclusions, privacy handling, server behavior, and parameter semantics, leaving no major operational gap.

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

Parameters5/5

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 explains category values, message content requirements, related_tool with an example, related_query as a reproducing query, and expected as the believed-correct value or provision. This fully covers all five parameters.

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

Purpose5/5

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

The description clearly identifies the tool as a reporting/logging mechanism for errors, improvements, and original question logs. It distinguishes itself from sibling legal-research tools by using specific verbs like '제보' and '기록' with explicit categories.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: report before correcting when the user says something is wrong, report on clear mismatches with legal text, and log question_log only when the response hint requests it. It also states when NOT to use it ('네가 스스로 잘 답했다고 느낀 경우까지 남길 필요는 없다').

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

search_cases판례·해석례 검색A
Read-onlyIdempotent
Inspect

판례·법령해석례 검색 — 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"(둘 다, 기본)
ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoall
queryYes
top_kNo

TDQS

A4.9/5.0
Behavior5/5

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

annotations(readOnlyHint, openWorldHint, idempotentHint)가 안전성 프로파일을 이미 담았고, 설명은 그 위에 실제 동작 특성을 대폭 추가한다: '0건은... 이 범위에서 못 찾았다이다'는 open-world 의미론과 정합하는 해석 규칙, '넓혀서 다시 찾았으면 retried가 true', axis.gated_kinds/out_of_axis의 필터링 동작, '예규는 담지 않는다/판례는 담는다'는 코퍼스 구성까지 공개한다. 최대 2회 자동 재시도 동작도 포함된다. annotations와 모순 없음.

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

Conciseness4/5

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

분량은 상당하지만 목적→사용 조건→get_case 연결→응답 의미론→코퍼스 경계 순으로 전면 적재(front-load)된 구조다. 각 문단이 서로 다른 운영상 함정(0건 해석, axis 경계, yegyu/prec 반대)을 짚어 중복이 없다. 다만 중간중간 날짜 표기(2026-08-29, 2026-09-02)와 '두 종류의 경계가 서로 반대' 경고 등은 문장 수를 늘리는 비용이 있다.

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?

출력 스키마가 없는 복잡한 도구임에도 응답 필드(search_scope, searched, retried, axis, case_type, data_source)의 의미와 해석 방법, 0건의 오해 가능성, 예규 부재 시 사용자 안내 문구까지 설명한다. 에이전트가 도구를 선택하고 호출하고 결과를 사용자에게 정확히 전달하는 데 필요한 정보가 빠짐없이 담겨 있다.

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

Parameters5/5

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

Schema coverage가 0%이므로 설명이 전적으로 보완해야 하는데, 세 파라미터 모두 풍부하게 보완한다: query에 '핵심 명사 위주' 패턴과 실제 예시 2개 및 자연어 수용·자동 재시도 조건, top_k에 '종류당 반환 건수'와 schema에 없는 최대 10 제한, kind에 각 enum 값('prec'=법원 판례, 'expc'=법제처 법령해석례)의 의미를 부여한다. schema가 제공하지 못한 모든 의미를 설명이 채운다.

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

Purpose5/5

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

첫 문장 '판례·법령해석례 검색 — law.go.kr 실시간 조회(항상 현행)'이 구체적 동사+자원+소스를 명시한다. '본문은 get_case(kind, case_id)로 이어서 조회'라고 후속 도구를 명명해 형제 도구와의 역할 분담도 드러난다. '조문만으로 부족할 때'라는 표현은 search_law와의 차이까지 간접적으로 구분한다.

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

Usage Guidelines5/5

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

'분쟁·처분취소·해석 다툼...에 조문만으로 부족할 때 쓰라'는 사용 조건을 명시하고, get_case를 본문 조회용 대안으로 이름까지 들어 지정한다. 예규 부재 시 '국세법령정보시스템으로 안내하라'는 대체 경로 안내까지 포함한다. 쓰지 말아야 할 상황(예규 찾기)과 그때의 대안이 모두 열거되어 있다.

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

search_law법령 조문 검색A
Read-onlyIdempotent
Inspect

법령 조문 검색 — 키워드 또는 조문번호로 조문 스니펫 반환(상위 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"(세법). 생략하면 자동.
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_kNo
corpusNo

TDQS

A4.9/5.0
Behavior5/5

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

The description goes far beyond the readOnly/openWorld/idempotent annotations: it discloses dual-corpus fallback behavior, truncated vs lower-bound total semantics, semantic-search degradation, deleted/repealed provision notes, delegated articles lacking implementing_articles, and table-index behavior. It also warns against citing tax results as public-contract grounds. No contradiction with annotations; openWorldHint aligns with the statement that zero results are not evidence of absence.

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

Conciseness4/5

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

Long but well-structured: a one-line summary, bolded critical warnings, and a final Args block. Every sentence carries operational or safety guidance, and the most important corpus and citation constraints are front-loaded. The density is high enough that parsing requires effort, but the structure mitigates the length.

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?

With no output schema, the description documents the critical response fields (corpus, total_found, count, truncated, complete, total_found_is_lower_bound, search_scope, searched, degraded, hit-level notes, implementing_articles, delegated, related_articles, law_ref) and error cases. It also covers follow-up actions and citation constraints, making it complete for correct invocation and interpretation. The only minor ambiguity is the undefined `corpus_laws`, but it does not undermine the overall completeness.

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

Parameters5/5

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. The Args block gives concrete query examples ('수의계약', '시행령 제26조', '소득세법 제55조'), top_k default 8/max 20, and corpus legal values 'contract'|'tax' with auto-selection behavior. This adds meaning the schema cannot convey.

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

Purpose5/5

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

The first line states a specific action and resource: keyword/provision-number search returning provision snippets with top_k. The '조문' (provision) focus clearly separates it from sibling case/reference searches, and the follow-up to get_law_article for full text is explicitly named. No ambiguity about what this tool does.

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

Usage Guidelines5/5

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

The description explicitly routes usage: full text needed → get_law_article(ref); implementing_articles present → pass that reference directly to get_law_article and do not search another tool; no_corpus_match → clarify scope and point to law.go.kr. It also gives conditions for forcing corpus and for raising top_k. This is explicit when/when-not/alternatives guidance.

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

search_references예규·세부기준 통합 검색A
Read-onlyIdempotent
Inspect

공공계약 코퍼스 통합 검색 — 법령+계약예규+조달청·행안부 세부기준+실무가이드. LLM 미사용.

search_law가 법령 조문 전용인 것과 달리 예규·적격심사 세부기준·실무가이드까지
검색한다. 낙찰하한율·적격심사 배점·실무 절차 등 법령 본문 밖 질문에 사용하라.
AI 생성 없이 검색 근거 원문만 반환한다(백엔드 LLM 예산 미차감).

**세법은 이 도구가 못 본다(2026-08-29 정직 공시).** 세법 조문은 별도 코퍼스
(`tax_articles` 64개 법령)에 있고 여기 붙어 있는 채널(BM25·doc2query·rerank)은
공공계약 코퍼스 것이다. 소득세법·법인세법·부가가치세법류 질문은 **search_law**
(자동으로 세법 축으로 간다) 또는 get_law_article로 가라 — 여기서 0건이 나온 것을
"세법에 그런 규정이 없다"로 옮기지 마라.

히트의 `matched_section`이 있으면 그 자리를 만든 것은 **그 항**이고 실려온 본문은
조 전체다 — 근거를 인용할 때 그 항을 밝혀라. 최상위 히트의 `query_expanded`가 있으면
사용자가 타이핑한 말에 용어집 별칭을 덧붙인 질의로 검색·재정렬한 것이다(실무 어휘를
법령 어휘로 잇는 다리 — 원문은 보존).

**응답에 `off_topic: true`가 있으면 이 질의는 우리 코퍼스 주제 밖으로 측정됐다**
(2026-09-03). 히트가 남아 있어도 그것은 낱말이 겹쳐 회수된 것일 뿐 근거가 아닐 수
있다 — `off_topic_distance`가 최근접 주제 거리이고 `note_off_topic`이 대역을 말한다.
**이때 "관련 규정이 없다"고 옮기지 마라**(우리가 안 담고 있을 뿐이다). excerpt를
직접 읽어 실제로 질문에 답하는지 확인하고, 범위 밖이면 사용자에게 그 사실을 밝힌 뒤
사용자의 원문 질문을 report_issue(category='question_log')로 남겨라.

Args:
    query: 자연어 검색어 (예: "적격심사 낙찰하한율 50억 미만")
    top_k: 반환 건수 (기본 6, 최대 12)
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_kNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already carry the safe read-only/idempotent/open-world profile, but the description adds substantial context beyond them: no-LLM behavior with 'LLM 예산 미차감', the dated tax-corpus blind spot ('2026-08-29 정직 공시'), matched_section meaning the section matched is the '항' while text is the whole '조', query_expanded glossary-alias behavior, and the off_topic flag semantics. It also reinforces openWorldHint with explicit '0건이 나온 것을 세법에 그런 규정이 없다로 옮기지 마라' warnings.

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

Conciseness4/5

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

The description is long, but organizational devices — bold lead-ins, date stamps, paragraph-per-caveat structure — keep it scannable and the purpose is front-loaded in the first line. Each section carries distinct operational information; the off_topic paragraph is slightly verbose and the anti-negative-inference warnings repeat a similar pattern across the tax and off-topic sections, keeping it just shy of a 5.

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?

Despite no output schema, the description pre-explains every non-obvious response field an agent will encounter (matched_section, query_expanded, off_topic, off_topic_distance, note_off_topic) and prescribes the fallback action (report_issue with category='question_log'). For a 2-input, multi-caveat search tool, nothing needed to invoke it correctly or interpret its results is missing.

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

Parameters5/5

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 fully does. query is defined as natural language with a concrete example ('적격심사 낙찰하한율 50억 미만'), and top_k gains a maximum constraint of 12 that the schema does not state (schema only shows default 6). Both parameters receive meaning beyond the raw schema.

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

Purpose5/5

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

The opening line names a specific verb and resource ('공공계약 코퍼스 통합 검색 — 법령+계약예규+조달청·행안부 세부기준+실무가이드'), and sibling differentiation is explicit: 'search_law가 법령 조문 전용인 것과 달리 예규·적격심사 세부기준·실무가이드까지 검색한다.' An agent can distinguish this from search_law without inspecting schemas.

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

Usage Guidelines5/5

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

Explicit when-to-use guidance is given ('낙찰하한율·적격심사 배점·실무 절차 등 법령 본문 밖 질문에 사용하라'), and when-not-to-use routing names alternatives: tax questions go to 'search_law... 또는 get_law_article로 가라'. It also tells the agent what NOT to conclude from 0 hits or off_topic results, which is unusually complete usage guidance.

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. Dates show when Glama detected each change.

  1. 1 tool update
    • Changedsearch_law1 field changed
      • addedInput schema / properties / corpus
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Corpus"
        +}

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: deterministic rule engines for contract method, price adjustment, and delay penalties; separate search tools for statutes, cases, and administrative references; and get_law_article_asof provides a unique temporal capability. Even the three search tools are cleanly differentiated by corpus and result type.

Naming Consistency4/5

The vast majority follow a verb_noun snake_case pattern (check_, decide_, estimate_, get_, report_, search_). delay_exemption_guide breaks the verb-first convention, but the naming style is consistent and readable.

Tool Count5/5

With 11 tools, the server is well-scoped for Korean public contract law advisory. The set balances three rule engines, five reference/lookup tools, one temporal variant, one reporting tool, and no redundant additions.

Completeness4/5

The tool set covers core contract lifecycle determinations—method selection, price escalation, delay penalties, and exemption grounds—and provides comprehensive legal research including historical law versions. Some lifecycle areas like termination or bidder sanctions lack dedicated rule engines, but they are accessible through the search and law-article tools.