Skip to main content
Glama

물가변동 조정 판정

check_price_adjustment
Read-onlyIdempotent

물가변동 계약금액 조정(에스컬레이션) 요건 판정 + 산식 적용 — 이행단계 Phase 3.

"자재값이 올랐는데 계약금액을 올려받을 수 있나", "90일 지났나", "단품 조정 되나"에 쓰라.

**이 도구는 조정률을 산정하지 못한다.** 품목조정률·지수조정률은 산출내역서와 지수·단가
원천(한국은행 생산자물가지수 등)으로 계산하는 값인데 이 서버는 그 데이터를 갖고 있지
않다 — 그러니 `adjustment_rate_pct`는 **사용자·발주기관이 산정한 값**을 받아 쓰고,
안 주면 요건 ②를 `met: null`로 두고 판정을 보류한다. 없는 값을 지어내지 마라.

판정하는 것(결정론): ①기간 요건(계약체결일 또는 직전 조정기준일부터 90일 이상)
②등락률 3% 문턱 ③**단품 조정 문턱 — 국가·공기업 15%, 지방 10%(2025-07-08 개정 지방계약법 시행령으로 갈렸다)**
④조정 방식 결정 규칙(계약서에 지수조정률 명시가 없으면 품목조정률)
⑤조정금액 = 물가변동적용대가 × 조정률, 선금 공제 = 위 값 × 선금급률.
⑥**verdict가 single_item_only면 computed는 단품 산식이다**(computed.track="single_item"):
조정금액 = **해당 자재의** 물가변동적용대가 × 그 자재 등락률(영 제64조⑥ + 집행기준
제70조의3① 품목조정률 준용). `single_item_base_amount`가 없으면 adjustment_amount는
**null**이고 why_null이 사유다 — 계약 전체에 조정률을 곱한 값은 내지 않는다(받을 수
있는 금액이 아니다). 등락폭 특칙·일반관리비·이윤은 반영하지 않았다(computed.not_applied).

응답의 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% 문턱은 그대로다 — 국가 기준(계약예규
「정부 입찰·계약 집행기준」 제70조의4①)은 원자재 급등 예외에 조정률 5%(물품구매 10%)
이상, 또는 3%(물품구매 6%) 이상+이행 곤란의 객관적 사유를 요구한다.

Args:
    org_type: "national"|"local"|"public_corp" — **추측 금지**(단품 문턱이 다르다)
    contract_date: 계약체결일 "YYYY-MM-DD". 장기계속계약은 **제1차계약 체결일**
    check_date: 조정 검토·청구 시점 "YYYY-MM-DD"
    last_adjustment_date: 직전 조정기준일(있으면 기간 기산점이 이쪽으로 바뀐다).
        contract_date 이상·check_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). 0·생략은 선금 없음으로 본다. 음수나
        1 초과(퍼센트 착오 등)는 기준금액 유무와 무관하게 invalid_advance_ratio로 거절한다. 금액 입력의 짝(adjustment_base_amount·
        adjustment_rate_pct)이 없어 계산을 못 하면 `computed_skipped`에 받은 값과 빠진 입력을
        적는다 — 그때 선금 공제는 반영되지 않았다
    single_item_base_amount: 단품 조정 대상 **그 자재의** 물가변동적용대가(원) — 조정기준일
        이후 이행분의 그 자재 계약단가 × 잔여수량(산출내역서). 계약 전체 대가가 아니다

Input Schema

NameRequiredDescriptionDefault
org_typeYes
check_dateYes
contract_dateYes
is_constructionNo
urgent_exceptionNo
include_footnotesNotrue면 계산값 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다. 기본은 행마다 한 줄 요지
adjustment_rate_pctNo
last_adjustment_dateNo
single_item_rate_pctNo
advance_payment_ratioNo
adjustment_base_amountNo
single_item_base_amountNo
method_specified_in_contractNo
single_item_share_over_5permilleNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / include_footnotes
      Added value: +{
      +  "default": false,
      +  "description": "true면 계산값 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다. 기본은 행마다 한 줄 요지",
      +  "title": "Include Footnotes",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / single_item_base_amount
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Single Item Base Amount"
      +}
  2. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnly/idempotent/non-destructive, and the description goes far beyond them: it enumerates the deterministic checks (90-day period, 3% threshold, 15%/10% single-item thresholds, method selection, advance-payment deduction), lists all five verdict values, and explains that the two tracks are independent so a sub-3% rate can still yield single_item_only. It also discloses what is deliberately null and which items are excluded (not_applied), which is exactly the behavioral context annotations cannot supply.

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?

Front-loaded with the one-line purpose and the critical non-capability before the detail, and it uses bolding to route the eye. It is nonetheless long and repeats threshold/exclusion caveats in multiple places, so a small amount of text does not earn its place.

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 14-parameter tool with no output schema, the definition still describes the response surface (verdict enum, computed.track, why_null, computed_skipped, footnotes) and warns about the two-track independence and unfilled exceptions. Nothing an agent needs to call this correctly or interpret the result 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 only 7%, so the description must carry the load, and it does: the Args block documents every parameter's meaning, format ('YYYY-MM-DD'), edge rules (last_adjustment_date must fall between contract_date and check_date; negative rates allowed for reductions; advance_payment_ratio rejects <0 or >1 as invalid_advance_ratio), and the semantic distinction between adjustment_base_amount and single_item_base_amount. This is meaning well beyond the bare schema titles.

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 verb and resource ('물가변동 계약금액 조정 요건 판정 + 산식 적용') and immediately bounds the scope by declaring what it cannot do ('이 도구는 조정률을 산정하지 못한다'). The example user questions ('90일 지났나', '단품 조정 되나') make it unmistakable versus the law-search and delay-penalty 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?

Gives concrete trigger phrasings for when to call it and a strong negative rule ('없는 값을 지어내지 마라', pass the user-computed rate instead). It does not name sibling alternatives (e.g. get_law_article for the underlying statute text), so routing to alternatives is left implicit rather than resolved.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.