Skip to main content
Glama

Server Details

Korean real-estate tax engine: computes acquisition, property, comprehensive holding, capital gains, gift and inheritance tax, citing the statute article behind every result. Regression-tested against 991 court and tribunal rulings. No sign-in required.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 43 tools

Disambiguation4/5

Each tool maps to a narrow statutory role (e.g. judge_155_special vs judge_temporary_two_homes vs judge_156_3_special, count_transfer_homes vs count_heavy_homes), and descriptions explicitly state the boundaries (tax item, article, purpose separation between 판정 and 계산). The main risk is the cluster of three §156의3 tools and the 155-family (judge_155_special, judge_156_3_special, judge_156_3_from_portfolio, judge_temporary_two_homes), which an agent could occasionally pick wrongly, though the docs give guidance on which to call first.

Naming Consistency5/5

All 43 names use snake_case verb_noun with a consistent prefix taxonomy (calc_*, judge_*, count_*, get_/search_*, format_*), so the category of a tool is readable from its name alone. Deviations are trivial (estimate_reconstruction_levy vs calc_*) and still follow the pattern.

Tool Count3/5

43 tools is well beyond the comfortable range and forces the agent to choose among 23 judge_* tools, which is a heavy selection burden even for a domain spanning eight-plus tax types. The surface is genuinely decomposed by statute with little redundancy, so it is defensible, but it sits at the heavy end.

Completeness4/5

The surface covers the full consultation lifecycle — law/ruling lookup, judgment trees (household, home count, exemption, heavy rate), tax computation, and output formatting — with few dead ends. Gaps exist and are openly flagged (금융재산공제, 가업상속공제, 이월과세, 저가양수 증여의제, corporate/land-basis property tax), which agents can route around but not fully resolve.

Available Tools

43 tools
calc_acquisition_taxAcquisition tax (취득세)A
Read-onlyIdempotent
Inspect

Korea acquisition tax (취득세) on real estate plus local education tax and rural special tax, by year and acquisition type.

취득세(+지방교육세+농어촌특별세)를 계산한다. 세율은 year로 상수표에서 읽는다.

rate_special (2026-10-12 추가): 지방세법 §15①(세율의 특례) 해당 호. "" | "환매" | "상속1가구1주택" |
  "상속자경농지" | "적격합병" | "공유물분할" | "건축물이전" | "재산분할" | "형식적취득" | "없음".
  §15①이면 §11 세율에서 중과기준세율(2%)을 뺀 세율(주택유상은 해당 세율×50%)이 취득세율이다 —
  공유물분할(본인 지분 이내) 0.3%, 상속 1가구1주택 0.8%, 재산분할(무상 3.5%) 1.5%.
  acquisition_type="공유물분할"은 §11①5호 자체가 본인 지분 이내 분할이라 §15①4호를 자동 적용한다
  (지분 초과분은 유상·무상 유형으로 따로 계산; 자동 적용을 끄려면 "없음").
  지방교육세는 §151①1호대로 (§11 세율−2%)×20% 그대로, 농특세 취득세분(§5①6호)은 표준세율 2% 치환
  재계산이라 0(주택유상은 2%×50%×10%), 감면분(§2①3호·§5①1호 감면세액×20%)은 건축물이전·재산분할만
  과세(1~4·7호는 §4 8호·영 §4④·10의4 비과세), 전용 85㎡ 이하 주택은 §4 11호 비과세.
  heavy_type과 함께 줄 수 없다(재산분할은 영 §28의6②2호로 무상 중과 제외).

⚠️ 2026-08-30 변경 — year 필수. 종전에는 세 세율을 전부 호출자가 계산해 넘겨야 했고,
특히 부가세 두 개는 '취득세액×비율'이 아니라 **세율을 갈아끼워 다시 산출**하는 구조라
사람이 재현하다 틀리기 쉬웠다(종부세 §4의3에서 실제로 낸 사고와 같은 유형). 이제
산식을 코드가 수행한다 — tax_params.acquisition_* 참조.

acquisition_type: "주택유상"(§11①8호 구간세율 1~3%) / "유상.농지외"(4%) / "유상.농지"(3%)
  / "상속.농지외"(2.8%) / "상속.농지"(2.3%) / "무상"(3.5%) / "무상.비영리사업자"(2.8%)
  / "원시취득"(2.8%) / "공유물분할"(§11①5호 2.3% → 본인 지분 이내라 §15①4호 0.3% 자동, rate_special 참고)
heavy_type: §13의2 중과 유형. "" | "법인" | "2주택조정_또는_3주택비조정"
  | "3주택이상조정_또는_4주택이상비조정". 일시적 2주택은 §13의2①2호 괄호로 제외되므로
  판정 결과가 '중과 아님'이면 빈 문자열을 넘길 것.
exclusive_area: 전용면적(㎡). 85 이하면 농특세 비과세(농특세법 §4 11호).

지방세법 제11조(부동산 취득의 세율)의 표준세율에, 해당하면 제13조의2(법인/다주택
중과)의 가산세율과 제14조(조례에 따른 세율 조정, 100분의 50 범위)를 더해 실효세율을
구성한다. calc_transfer_tax와 같은 이유로 이 함수는 세율표를 하드코딩하지 않는다 —
조정대상지역 지정 현황, 다주택 판정 기준(일시적 2주택 등 중과 배제 사유 포함)이
수시로 바뀌므로, 매번 search_law("지방세법")로 시행 중인 조문을 확인해서 세율을
직접 계산한 뒤 넘길 것. 이 함수는 세율을 판단하지 않고 산식만 적용한다.

지방교육세·농어촌특별세도 취득세 부가세목이라 함께 계산할 수 있게 인자를 뒀지만,
두 세율도 정책적으로 바뀔 수 있어 하드코딩하지 않는다 — 생략하면 0으로 간주해
취득세 본세만 계산한다.

⚠️ 두 부가세율은 '취득세액×비율'이 아니라 과세표준 대비 실효율로 넘겨야 하며,
산식이 서로 다르다 (2026-08-17 법문 확인 — 지방세법 §151①1호, 농특세법 §5①6호):
  · 지방교육세: 일반 부동산 = (표준세율−2%)×20% (4%면 0.4%) /
    주택 유상(§11①8호 1~3%) = 취득세율×50%×20% (0.1~0.3%) /
    다주택·법인 중과(§13의2, 8·12%) = (4%−2%)×20% = 0.4% 고정 (세율 뛰어도 불변)
  · 농어촌특별세: 표준세율을 2%로 치환해 §13의2 중과 가산 구조를 유지한 채
    재계산한 취득세액×10% → 일반 0.2% / 8% 중과 0.6% / 12% 중과 1.0%.
    전용 85㎡ 이하 서민주택은 비과세(농특세법 §4 9·11호, 영 §4⑤). 취득세 감면 시
    감면세액×20%의 감면분 농특세가 별도로 붙는다(§5①1호 — 이 함수 밖에서 계산).

Args:
    acquisition_price: 취득가액/과세표준 (원)
    standard_rate: 지방세법 제11조 표준세율 (0~1)
    heavy_surcharge_rate: 다주택·법인 등 중과기준세율 가산분 (0~1), 해당 없으면 0
    ordinance_adjustment_rate: 지방세법 제14조 조례 가감율 (-0.5~0.5), 해당 없으면 0
    local_education_tax_rate: 지방교육세율 (0~1), 미확인 시 0으로 두고 별도 계산
    rural_special_tax_rate: 농어촌특별세율 (0~1) — 전용면적 85㎡ 이하는 통상 비과세이므로
        과세대상 여부부터 확인 후 넘길 것, 미확인 시 0

Returns:
    계산 과정이 담긴 dict (적용세율, 취득세 본세, 지방교육세, 농어촌특별세, 총납부세액)
ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
heavy_typeNo
rate_specialNo
standard_rateNo
exclusive_areaNo
acquisition_typeNo주택유상
acquisition_priceYes
heavy_surcharge_rateNo
rural_special_tax_rateNo
local_education_tax_rateNo
ordinance_adjustment_rateNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent/no-side-effect profile, and the description adds meaningful behavior: the year-required change with rationale, mutual exclusion of heavy_type and rate_special, the rule that omitted surtaxes are treated as 0, and the shape of the returned dict. It loses a point because the 0-vs-(-1) sentinel semantics in the text conflict ambiguously with the schema defaults of -1.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is very long and repeats itself across English and Korean, weaving in statutory citations, numeric examples, and parenthetical asides that an agent invoking the tool does not need. Much of the §151①/§13의2 detail duplicates what the formulas already encode.

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?

For an 11-parameter, no-output-schema tool this is nearly complete: rate provenance, parameter interactions, default handling, and the return keys are all present, making the missing output schema largely harmless. The residual gaps are the sentinel defaults and an explicit handoff to the judge_* siblings.

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 description coverage is 0% and has 11 parameters, so the description carries the full burden—and it largely does, explaining year, standard_rate, heavy_surcharge_rate, the two surtax rates, ordinance_adjustment_rate, rate_special's legal basis, acquisition_type's rate bands, and exclusive_area's 85㎡ threshold. The unexplained -1 sentinel defaults (e.g. standard_rate=-1) keep it from a 5.

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+resource and scope: acquisition tax (취득세) on real estate plus the two surtaxes, parameterized by year and acquisition type. It is clearly distinct from sibling calculators such as calc_transfer_tax and calc_property_tax, and the bilingual restatement reinforces the purpose.

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?

It gives real workflow guidance: rates must be sourced via search_law("지방세법") rather than assumed, the function only applies the formula and does not judge which rate applies, and heavy_type/rate_special are mutually exclusive. It stops short of explicitly routing the agent to the judge_* determination tools (e.g. judge_acquisition_homes_and_rate) that must run first.

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

calc_attached_land_limitAttached land limitA
Read-onlyIdempotent
Inspect

Maximum land area attached to a home covered by the capital gains exemption, by zone (3x/5x/10x).

주택 부수토지의 1세대1주택 비과세 한도 면적 (소법 §89①3호·영 §154⑦).

비과세 범위 = 건물 정착면적(바닥면적) × 지역별 배율 — 도시지역 수도권 주거·상업·공업 3배 /
수도권 녹지 5배 / 수도권 밖 5배, 비도시지역 10배. 초과분은 비과세에서 빠져 별도 과세되며
비사업용 토지 해당 여부(영 §168의6~14)를 추가 판정해야 한다. urban_zone은
주거상업공업|녹지(도시지역·수도권일 때만 구분). 수용 시엔 사업인정 고시일 전날의
용도지역을 적용한다(2025-11-28 개정).
ParametersJSON Schema
NameRequiredDescriptionDefault
urban_zoneNo주거상업공업
land_area_m2Yes
is_urban_areaNo
is_capital_regionNo
building_footprint_m2Yes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this a pure readOnly, idempotent, non-destructive calculation, so the safety profile is covered. The description adds real domain behavior beyond that: the multiplier formula, that excess land is excluded from the exemption and taxed separately, the required follow-on 비사업용 토지 test, and the acquisition-date rule for expropriated land.

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 English summary sentence is front-loaded and states the core rule before the dense Korean detail. The legal citations and formula are information-dense with little filler, though the Korean block is long enough that structure could be tightened.

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?

For a 5-parameter calculation with annotations covering safety and no output schema, the description supplies the rule, formula, exception handling and a statutory recency note (2025-11-28). It does not indicate what the result contains (e.g., limit area vs. excess area), which is the main remaining gap.

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 description coverage is 0%, so the description carries the full burden and mostly succeeds: urban_zone is defined (주거상업공업|녹지, only distinguished when urban and capital region), and is_urban_area/is_capital_region are explained via the 도시지역 / 수도권 multiplier narrative. building_footprint_m2 is defined as 건물 정착면적(바닥면적), but land_area_m2's role in the comparison is only implicit.

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+resource with scope: the maximum attached land area eligible for the one-home capital gains exemption, computed by regional multiplier. It is clearly distinguishable from sibling calculators like calc_transfer_tax or calc_property_tax, which cover different tax types.

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

Usage Guidelines3/5

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

Implied usage is clear (apply the exemption limit and then threshold land separately), and it notes that excess triggers a separate 비사업용 토지 judgment under 영 §168의6~14. However, it never explicitly routes the agent to or away from a sibling tool, leaving selection to inference.

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

calc_dealer_comparative_taxDealer comparative taxA
Read-onlyIdempotent
Inspect

Comparative taxation for real estate dealers under Income Tax Act art. 64.

소법 §64 부동산매매업자 비교과세 — 사업자 전환으로 중과세율을 피할 수 있는지 계산.

산출세액 = max(①종합소득 산출세액, ②주택등매매차익×§104 양도세율 + (종합소득과세표준 −
주택등매매차익)×§55 기본세율). 대상 자산은 §104①1호(분양권)·8호·10호·§104⑦ = 중과 대상.
housing_trade_profits: [{"라벨", "매매차익", "양도세율"}] — 세율은 호출자가 확정해 넘긴다.
tax_brackets: [{"upto", "rate", "deduction"}] — 기본세율표(하드코딩 금지 원칙).
두 안의 차액이 그대로 의사결정 값이므로 항상 둘 다 반환한다.
ParametersJSON Schema
NameRequiredDescriptionDefault
tax_bracketsYes
housing_trade_profitsYes
comprehensive_tax_baseYes
comprehensive_income_taxYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent/non-destructive safety profile, yet the description adds real behavioral content: the exact max() formula, which asset classes trigger the heavy rate (§104①1·8·10, §104⑦), that the caller must supply already-fixed rates, and that both scenarios are always returned because their difference is the decision value.

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 EN/KR statement of purpose, then the formula and per-parameter notes, then the return behavior. Dense with legal citations and math but each sentence contributes; nothing is padded.

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 steps in by stating that both scenarios are always returned and that their difference is the decision value. Combined with the formula and asset-scope rules, an agent has enough to invoke and interpret it correctly, though it says nothing about the caller's responsibility to fix tax rates beyond a single aside.

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 description must carry the load, and it largely does: it documents the item shape of housing_trade_profits ([{라벨, 매매차익, 양도세율}]) and tax_brackets ([{upto, rate, deduction}]), and conveys the meaning of the two scalar params through the formula (종합소득 산출세액 / 과세표준). Key names are English while described in Korean, a minor mismatch.

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?

States a specific verb and resource: comparative taxation computation for real estate dealers under Income Tax Act §64, with the decision it supports (whether switching to business-status avoids the heavy rate). It is clearly distinguishable from sibling calculators by being the §64 comparative-tax one, though it never names a sibling to differentiate against explicitly.

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

Usage Guidelines3/5

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

One line hints at the decision context ('사업자 전환으로 중과세율을 피할 수 있는지 계산'), which implies when to reach for it. But there is no statement of when-not to use it, no prerequisites, and no routing to the many sibling calc_/judge_ tools for the underlying determinations.

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

calc_gift_taxGift tax (증여세)A
Read-onlyIdempotent
Inspect

Korea gift tax (증여세) on real estate: relationship deductions, marriage/birth deduction, prior gifts, progressive rates.

증여세를 계산한다 (상증세법 §53·§55·§56·§57 — 12차 순회까지 법문 확정 상수 사용).

taxable_value: 증여재산 과세가액(시가 평가·부담부증여 채무 차감 후 — 평가는 별도.
아파트 시가는 유사매매사례 요건(상증규칙 §15③: 같은 단지+면적±5%+공시가±5%)으로 판정).
relationship(증여자 기준): 배우자|직계존속|직계비속|기타친족|타인 — 공제 6억/5천(미성년
2천)/5천/1천/0, 10년 통산이므로 prior_gifts_10yr(같은 증여자그룹 10년 내 기증여 과세가액)를
합산하고 기납부세액(prior_gift_tax_paid)을 공제. marriage_birth_deduction: 혼인·출산 공제
사용액(통합한도 1억, §53의2). generation_skip: 세대생략 할증 30%(미성년+20억 초과는
over_2b_minor_skip=True로 40%, §57 — 대습상속 제외). filing_credit_rate: 신고세액공제
(§69 — 기한 내 신고 3%, 무신고면 0으로).

⚠️미지원(플래그로 안내): 이월과세(§97의2 — 수증자가 10년 내 양도 시 양도세 쪽에서 처리),
저가양수 증여의제(§35), 창업자금·가업승계 특례세율.

penalty(선택, 2026-10-13): 가산세를 함께 계산할 사실 dict — {"증여일": "YYYY-MM-DD"(필수), "신고세액": 기한 내 신고한
납부세액(없으면 무신고), "기한내납부세액", "납부일", "납부고지일", "지정납부기한", "부정행위", "정당한사유",
"감면유형"("수정신고"|"기한후신고"), "신고일", "과소신고사유", "납부지연_제외사유"}. 주면 결과에 '결정기준_납부세액'·
'가산세'·'가산세_내역'·'총부담세액'이 붙는다(국세기본법 §47의2~§48·상증법 §67·§78 노드). 안 주면 종전 출력 그대로.
ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
penaltyNo
relationshipNo직계존속
taxable_valueYes
generation_skipNo
prior_gifts_10yrNo
filing_credit_rateNo
is_minor_recipientNo
over_2b_minor_skipNo
prior_gift_tax_paidNo
marriage_birth_deductionNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low. The description adds genuine behavioral context: supplying `penalty` changes the result to include 결정기준_납부세액/가산세/가산세_내역/총부담세액, and omitting it yields the prior output. It stops short of describing the default (non-penalty) return shape.

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 one-line English summary is front-loaded followed by dense but purposeful Korean detail; every clause carries a statute reference or threshold. It is long and mixes languages, and phrases like the internal '12차 순회까지 법문 확정 상수 사용' note are noise rather than agent-relevant signal.

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?

For an 11-parameter tax engine with no output schema, the description covers nearly all inputs and the conditional return fields well. Remaining gaps are the unconditional output shape and the unexplained `year` parameter, which keeps it just short of 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 largely does: it explains taxable_value (시가 평가, 부담부증여 채무 차감), the relationship enum with its six deduction tiers, generation_skip rate logic, prior_gifts_10yr, prior_gift_tax_paid, marriage_birth_deduction, filing_credit_rate, and the penalty dict's keys. Only `year` is unaddressed and `is_minor_recipient` is merely implied, both minor.

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 states a specific verb and resource (Korea gift tax on real estate) plus the domains it covers: relationship deductions, marriage/birth deduction, prior gifts, progressive rates. This clearly separates it from siblings like calc_inheritance_tax, calc_transfer_tax, and calc_acquisition_tax, which cover other tax types.

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 real when-not guidance by listing unsupported cases (이월과세 §97의2, 저가양수 증여의제 §35, 창업자금·가업승계 특례) and pushes valuation to a separate step (평가 별도). It doesn't explicitly contrast against sibling calculators, so routing is inferred rather than spelled out.

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

calc_inheritance_taxInheritance tax (상속세)A
Read-onlyIdempotent
Inspect

Korea inheritance tax (상속세): basic, spouse and lump-sum deductions, progressive rates (estate basis).

상속세를 계산한다 (상증세법 §18~§26 — 9·11차 순회 법문 확정 상수 사용, 유산세 방식).

taxable_value: 상속세 과세가액(상속재산 + 사전증여 합산 − 공과금·채무·장례비 차감 후).
배우자공제(§19): min(실제 상속받은 금액, 법정지분 한도, 30억)이되 최소 5억 —
spouse_actual_inheritance·spouse_legal_share_cap(법정상속분×과세가액, 모르면 0=미적용)
입력. 배우자 단독상속은 일괄공제 불가(§21 단서) — use_lump_sum_deduction=False로.
cohabit_house_deduction: 동거주택 상속공제(§23의2 — 직계비속 10년 동거, 100%·한도 6억).
generation_skip_portion: 세대생략(손자녀 등) 귀속 비율 0~1 — 그 몫의 산출세액에 30%
(미성년+20억 초과 40%) 할증(§27, 대습상속 제외).

⚠️미지원(플래그): 금융재산공제(§22 — 미순회)·가업/영농상속공제·단기재상속 세액공제(§30)·
상속개시 6개월 내 양도 시 시가 평가 연동. 인적공제 개별 계산 대신 일괄 5억이 기본.

penalty(선택, 2026-10-13): 가산세를 함께 계산할 사실 dict — {"상속개시일": "YYYY-MM-DD"(필수), "신고세액": 기한 내 신고한
납부세액(없으면 무신고), "기한내납부세액", "납부일", "납부고지일", "지정납부기한", "부정행위", "정당한사유",
"감면유형"("수정신고"|"기한후신고"), "신고일", "과소신고사유", "납부지연_제외사유"}. 주면 결과에 '결정기준_납부세액'·
'가산세'·'가산세_내역'·'총부담세액'이 붙는다(국세기본법 §47의2~§48·상증법 §67·§78 노드). 안 주면 종전 출력 그대로.
ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
penaltyNo
taxable_valueYes
other_deductionsNo
filing_credit_rateNo
over_2b_minor_skipNo
spouse_legal_share_capNo
use_lump_sum_deductionNo
cohabit_house_deductionNo
generation_skip_portionNo
spouse_actual_inheritanceNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare this as a safe, read-only, idempotent, non-destructive computation, so the safety profile is covered. The description adds genuinely valuable behavioral context beyond that: the ⚠️미지원 section explicitly lists unsupported features (금융재산공제 §22, 가업/영농상속공제, 단기재상속 세액공제 §30, post-death valuation linkage) and states the default assumption (일괄 5억). This tells the agent exactly where the tool's results stop being reliable.

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

Conciseness3/5

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

The purpose statement is front-loaded and the parameter notes are grouped logically, but the body is dense and mixes Korean and English with symbolic markers, and several clauses are terse enough to require re-reading. Given 0% schema coverage the length is largely justified, but formatting could be tighter and more uniformly scannable.

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

Completeness3/5

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

For an 11-parameter tool with no output schema and no schema descriptions, the description covers the consequential parameters and conditionally reveals the penalty-mode output keys (결정기준_납부세액, 가산세, 가산세_내역, 총부담세액). However, four parameters remain unexplained and the default (non-penalty) output shape is never described, leaving an agent unable to interpret normal results without experimentation.

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 description coverage is 0%, so the description carries the full burden, and it does substantial work: it defines taxable_value (과세가액 derivation), spouse_actual_inheritance / spouse_legal_share_cap (§19 min rule), use_lump_sum_deduction (§21 단서 caveat), cohabit_house_deduction (§23의2 limits), generation_skip_portion (0~1 with 30%/40% surcharge), and gives an exceptionally detailed key-by-key spec for the penalty dict. It still leaves year, other_deductions, filing_credit_rate, and over_2b_minor_skip entirely undocumented, so it does not fully compensate for the coverage gap.

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 sentence names a specific verb+resource ('Korea inheritance tax (상속세)') and enumerates the mechanisms it covers (basic, spouse, lump-sum deductions, progressive rates, estate basis). The 'estate basis (유산세 방식)' qualifier and the Korean-language restatement clearly separate it from sibling tax calculators such as calc_gift_tax and calc_transfer_tax.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance or routing to alternatives among the many tax/judge siblings. The only conditional guidance provided concerns the optional 'penalty' argument ('주면 … 안 주면 종전 출력 그대로'), which is parameter-level behavior, not tool selection. An agent still has to infer whether to use this tool versus calc_gift_tax or the judge_* nodes.

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

calc_jongbu_taxComprehensive holding tax (종부세)A
Read-onlyIdempotent
Inspect

Korea comprehensive real estate holding tax (종합부동산세) on housing: deductions, progressive rates, property-tax credit, age/holding credits, burden cap.

종합부동산세(주택분)를 계산한다. 세율·공제·비율은 year로 상수표에서 읽는다.

⚠️ 2026-08-30 변경 — year 필수. prev_year_official_price를 주면 재산세액공제
(영 §4의3)·당해 재산세액·직전연도 총세액상당액(영 §5②)까지 전부 코드가 계산한다.
종전에는 이 셋을 호출자가 수기로 넘겨야 했고, 실제로 §4의3 분자에서 재산세
공정시장가액비율을 빠뜨리고 §5②1호의 과세표준상한 배제를 놓쳐 세액이 틀렸다.
조문이 코퍼스에 있어도 사람이 산식을 기억으로 재현하면 틀린다 — 그래서 코드로 내렸다.

산식 근거 (종합부동산세법, 2026-08-16 원문 확인 — MST 280417):
  §8①  과세표준 = (인별 공시가격 합산 − 공제금액) × 공정시장가액비율(시행령, 60~100%)
        공제금액은 호출자가 판정해 넘긴다: 1세대1주택자 12억 / 일반 9억 / 중과세율 법인 0
        ⚠️ 1세대1주택자 여부는 §8④ 간주 4유형(부속토지만·일시적2주택·상속주택·지방저가)
        포함 — 세대 판정 트리의 출력을 쓰고, 간주 유형은 9/16~9/30 신청 요건이 있다
  §9①  누진세율 — 2주택 이하 / 3주택 이상 표가 다르므로(12억 초과분부터 분기)
        주택수 판정 후 맞는 표를 tax_brackets로 전달. 법인은 §9② 비례세율(단일 구간으로 전달)
  §9③  재산세액 공제 — 동일 과세표준분 이중과세 조정. 안분 산식은 영 §4의3①이며,
        prev_year_official_price를 주면 코드가 계산한다(수기 전달도 되나 비권장).
        ⚠️ 분자는 (종부세 과세표준 × **재산세** 공정시장가액비율) × 재산세 표준세율이다 —
        공정비율을 빠뜨리고 종부세 과세표준에 재산세율을 바로 곱하면 공제가 2배 넘게 과대계산된다
  §9⑤~⑨ 1세대1주택자 세액공제 = 산출세액 × min(연령공제율 + 보유공제율, 80%)
        연령(§9⑥): 60세 20%·65세 30%·70세 40% / 보유(§9⑧): 5년 20%·10년 40%·15년 50%
        ⚠️ §9⑦⑨ 특례분(부속토지·대체취득·상속·지방저가) 안분 제외는 미지원 —
        해당 케이스는 공제가 과대계산되므로 결과에 플래그를 띄운다
  §10  세부담상한 — 해당연도 총세액상당액(재산세+종부세)이 직전연도 총세액상당액의
        150%를 초과하면 초과분은 없는 것으로 본다. 따라서 종부세 상한 =
        직전연도 총세액상당액 × 비율 − 해당연도 재산세액.
        prev_year_official_price를 주면 아래 둘을 코드가 산출한다(권장):
          · 해당연도 재산세액 — 영 §5① 1호. §110③ 과세표준상한을 **적용한 후**의 세액
          · 직전연도 총세액상당액 — 영 §5②. 직전연도에 소유하지 않았어도 소유한 것으로
            보아 직전연도 법령으로 재계산한 의제값이며(신규취득 첫해에도 상한이 작동하는
            이유), 재산세액상당액은 §110③·§111③·§112① 2호를 **배제하고** 산출한다.
            ⚠️ 종부세액상당액은 §5②2호 괄호에 따라 **직전연도 과세기준일 현재 연령·
            보유기간으로 §9⑤ 세액공제를 적용한 뒤**의 금액이다(2026-09-24 수정 —
            종전에는 이 공제를 빼먹어 직전 총세액이 과대했고, 상한이 느슨해져 당해
            종부세가 최대 34.7% 과대 산출됐다). 근거는 시행규칙 별지 제35호서식 부표
            ⑫ = 산출세액 − ⑩ 공제할 재산세액 − ⑪ 1세대1주택자 세액공제액.
            다만 같은 서식 작성방법 8 가목의 공시가격 안분비율(§8④ 간주 1주택)은 미지원.
        ⚠️ 당해연도는 과표상한 적용 후, 직전연도는 과표상한 배제 — 방향이 반대다.
        직접 넘기려면 previous_year_total_tax·burden_cap_ratio·current_year_property_tax를
        함께 주되, 위 배제 규정을 지켰는지 확인할 것(결과에 경고가 붙는다).
농어촌특별세는 종부세 납부세액의 비율(농특세법 확인, 통상 20%)로 계산 — 미확인 시 0.

Returns:
    계산 단계별 dict (검증 가능하도록)
ParametersJSON Schema
NameRequiredDescriptionDefault
ageNo
yearYes
one_homeNo
credit_capNo
home_countNo
tax_bracketsNo
holding_yearsNo
age_credit_rateNo
basic_deductionNo
burden_cap_ratioNo
fair_market_ratioNo
holding_credit_rateNo
property_tax_creditNo
total_official_priceYes
rural_special_tax_rateNo
previous_year_total_taxNo
prev_year_official_priceNo
current_year_property_taxNo

TDQS

A4.1/5.0
Behavior5/5

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

Annotations (readOnly, idempotent, non-destructive, closed-world) are consistent with a pure calculator, and the description adds far more: unsupported §9⑦⑨ special-case apportionment raises a flag and overstates credit, the burden-cap direction differs between current year (cap applied) and prior year (cap excluded), rural special tax defaults to 0 when unverified, and manual passes produce warnings. This is unusually rich disclosure of failure modes and side conditions.

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 purpose and the critical input guidance are front-loaded, but the body is an unusually long statutory citation dump with inline formulas that belong in documentation. While many warnings are substantively useful, the block is dense, repetitive, and hard to scan, so an agent must wade through legal text to extract the operational instructions.

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 and 18 parameters, the description does explain the domain well: what triggers internal computation, what is flagged when unsupported, and roughly what is returned (a step-by-step dict for verification). It still does not map every parameter, but for a tool of this complexity it conveys enough to call it correctly and interpret results.

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

Parameters3/5

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

Schema description coverage is 0% across 18 parameters, so the description must carry the full burden. It explains year, prev_year_official_price, tax_brackets (per home-count table), and that the caller determines basic_deduction, but leaves several parameters unaddressed, notably the -1 sentinel defaults for age_credit_rate, holding_credit_rate, property_tax_credit, and rural_special_tax_rate, plus credit_cap, fair_market_ratio, and burden_cap_ratio. It compensates meaningfully but not completely.

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 two sentences give a specific verb+resource (compute Korea comprehensive real estate holding tax on housing) plus the exact scope it covers (deductions, progressive rates, property-tax credit, age/holding credits, burden cap). It is clearly distinguishable from siblings like calc_property_tax, calc_acquisition_tax, and calc_transfer_tax, which target other tax types.

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?

It states when specific inputs matter: year is mandatory (rates/deductions read from constant tables), prev_year_official_price is recommended because it makes the code compute §4의3 credit, current-year property tax, and prior-year total tax, and it warns when manual passing is acceptable but error-prone. It also says the §8④ deemed-one-home determination comes from the household-determination tree output. However, no sibling tools are named as alternatives, so routing is implied rather than explicit.

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

calc_property_taxProperty tax (재산세)A
Read-onlyIdempotent
Inspect

Korea property tax (재산세) on housing: fair-market ratio, base cap, one-household special rate, urban area levy, education tax.

재산세(주택분 중심)를 계산한다. 세율·비율은 year로 상수표에서 읽는다.

⚠️ 2026-08-30 변경 — year가 필수가 됐고, 세율표·공정시장가액비율·도시지역분·
지방교육세율은 data/tax_params.json(1층)에서 자동으로 읽는다. 그 연도가 검증되지
않았으면 ParamNotVerified로 계산을 거부한다. 종전에는 호출자가 전부 넘겨야 했고
빠뜨리면 조용히 틀렸다 — 실제로 과세표준상한제 누락으로 세액이 틀린 사고가 있었다.
명시 인자를 주면 그것이 우선하되, 결과의 "값 출처"에 표시된다.

산식 근거 (지방세법, 2026-08-16 원문 확인 — MST 282559):
  §110① 과세표준 = 시가표준액(주택은 공시가격) × 공정시장가액비율
         (비율은 시행령 §109 — 매년 5~6월경 개정되므로 하드코딩하지 않는다.
          참고로 2026년 기준 주택 60%, 1세대1주택은 공시가별 43~45%였음)
  §110③ 주택 과세표준상한제(2023 신설) — 직전연도 기반 상한액이 계산돼 있으면
         taxable_base_cap으로 넘기면 min()을 적용한다
  §111① 누진세율 — tax_brackets로 전달. 1세대1주택 9억 이하 특례세율(§111의2)은
         ⚠️ 2026-12-28까지 성립분만 유효한 일몰 조항이므로 적용 전 유효기간 확인
  §111③ 조례 ±50% 가감 — 호출자가 세율표에 반영해서 넘길 것
  §112  도시지역분 = 과세표준 × 0.14%(조례로 최대 0.23%) — urban_area_rate로 전달
  §122  세부담상한 150%는 주택에는 적용하지 않음(과표상한제로 대체) — 토지·건축물을
        이 함수로 계산하는 경우 상한 적용은 호출자 책임

지방교육세는 재산세 본세(도시지역분 제외)에 대한 비율로 계산한다 — 세율은
지방세법 §151 확인 후 전달(미확인 시 0).

Args:
    official_price: 시가표준액/공시가격 (원)
    year: 과세연도(납세의무 성립연도). 상수표 조회 키이며 필수다.
    prev_year_official_price: 직전연도 시가표준액 — 주면 §110③ 과세표준상한액을
        자동 계산한다. 안 주면 상한제가 적용되지 않으니 주택은 사실상 필수.
    one_home: 지방세법 영 §110의2 1세대1주택 여부. 세대(배우자 포함) 기준이며
        판정 결과를 넘길 것 — 인별 1주택과 다르다.
    fair_market_ratio: 공정시장가액비율. 0이면 상수표에서 읽는다.
    tax_brackets: 세율표. None이면 상수표에서 읽는다.
    urban_area_rate: 도시지역분 세율. 음수면 상수표, 0을 명시하면 미적용 지역.
    local_education_tax_rate: 지방교육세율. 음수면 상수표에서 읽는다.
    taxable_base_cap: 과세표준상한액(원). 0이고 prev_year_official_price가 있으면
        자동 계산한다.

Returns:
    계산 단계별 dict (검증 가능하도록) + 값 출처
ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
one_homeNo
tax_bracketsNo
official_priceYes
urban_area_rateNo
taxable_base_capNo
fair_market_ratioNo
local_education_tax_rateNo
prev_year_official_priceNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish a safe, deterministic, idempotent read operation, so the description's job is to add beyond that — and it does: calculation is refused with ParamNotVerified for unverified years, explicit arguments take precedence over the constant table, and the result records a '값 출처' (value provenance). The background anecdote about a prior calculation error is not strictly behavior, but the operational contract is well disclosed.

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 English summary is front-loaded and the Korean argument list is well organized, but the statutory-citation block and the historical incident anecdote add length beyond what an agent strictly needs to invoke the tool correctly. Given nine parameters and five statutory rules, the length is largely earned, so this is not a structural failure.

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?

No output schema exists, but the description states the return shape (per-step dict plus value provenance) and the failure mode (ParamNotVerified). For a nine-parameter tax calculator whose rates live in an external constant table, everything an agent needs to call it correctly — required year, upstream table lookup, precedence of explicit args, cap handling — is present.

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?

With 0% schema description coverage, the description carries the full burden and covers all nine parameters, including the non-obvious sentinel semantics (fair_market_ratio=0 and negative rates read from the constant table; urban_area_rate=0 explicitly means 'not applied'; taxable_base_cap=0 with prev_year_official_price triggers auto-computation). It also clarifies that one_home is judged at household level, not per individual.

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 names a specific verb and resource (Korea property tax on housing) and enumerates the components computed: fair-market ratio, base cap, one-household special rate, urban area levy, education tax. The sibling list is a set of distinct tax calculators, and the mention of housing-specific rules (재산세 주택분) plus the §122 note about land/buildings makes the scope distinguishable.

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?

Usage context is clear: it is the housing property-tax calculation, and the parameter notes tell the agent that prev_year_official_price is '사실상 필수' for housing and that the cap rule does not apply to housing (§122). It also implicitly excludes land/buildings by pushing cap responsibility to the caller. No sibling is named as an explicit alternative, so this falls 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.

calc_rental_income_taxSeparate rental income taxA
Read-onlyIdempotent
Inspect

Compute the 14% separate tax on residential rental income up to 20 million won, with registered-landlord deductions.

분리과세 주택임대소득 세액 계산 (소법 §64의2①② · 영 §122의2⑦).

필요경비 50%(등록임대주택 60%), 추가공제 200만원(등록 400만원)은 **분리과세 주택임대소득을 제외한
종합소득금액이 2천만원 이하일 때만** 적용된다 — other_comprehensive_income 미입력 시 공제 없이
계산하고 플래그를 단다. 등록·미등록 혼재는 수입금액 비율로 안분(영 §122의2⑦2·3호).
총수입 2천만원 초과는 분리과세 대상이 아니므로 오류를 반환한다.
ParametersJSON Schema
NameRequiredDescriptionDefault
tax_reductionNo
registered_revenueNo
unregistered_revenueNo
other_comprehensive_incomeNo

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real behavioral detail beyond them: it returns an error above 20M gross revenue, computes without deduction and sets a flag when other_comprehensive_income is omitted, and apportions mixed registered/unregistered cases by revenue ratio.

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 English summary followed by structured Korean rules; each sentence carries real content. The English sentence partially restates the title, and the bilingual format introduces mild redundancy, but nothing is filler.

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?

For a 4-param calculator with no output schema and complete annotation coverage, the description supplies the critical computation rules and error/missing-input behavior. It does not describe the return shape or the tax_reduction parameter, which keeps it just short of fully complete.

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?

With 0% schema description coverage, the description must carry the param burden and largely does: it explains registered_revenue/unregistered_revenue apportionment, the role of other_comprehensive_income in gating deductions, and the deduction/expense rates. tax_reduction is left entirely unexplained, so there is one clear gap.

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?

States a specific verb+resource with scope: computes the 14% separate tax on residential rental income up to 20 million won. It is clear this is the calculation tool, but it never explicitly contrasts itself with the close sibling judge_rental_income_tax (eligibility judgment), leaving the boundary to inference.

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?

Clearly states applicability conditions: deductions apply only when other_comprehensive_income is ≤ 20M, and it returns an error when gross revenue exceeds 20M (out of scope for separate taxation). No alternative tool is named for the eligibility/other-income cases, so it stops short of full 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.

calc_transfer_taxCapital gains tax (양도소득세)A
Read-onlyIdempotent
Inspect

Korea capital gains tax (양도소득세) on real estate: rate, long-term holding deduction, heavy rates, surtax. Returns the statute trail.

양도소득세를 계산한다. 세율·공제는 year로 상수표에서 읽는다.

⚠️ 2026-08-30 변경 — year 필수. 세율표·기본공제·중과 가산세율을
data/tax_params.json(1층)에서 읽고, **단기세율 비교과세(§104① 후단·§104⑦ 후단)를
코드가 수행한다.** 종전에는 "두 번 호출해서 큰 쪽을 채택하라"고 호출자에게 넘겼는데,
그건 사람이 빠뜨리는 자리다. year가 검증 안 된 과거 연도면 계산을 거부하고,
미래 연도는 현행법 기준 추정으로 계산하되 결과에 그렇게 표시한다.

asset_type: "주택"(조합원입주권·분양권 포함해 단기세율이 주택등 기준) / "토지" /
"분양권"(보유기간 무관 하한 60%) / "비사업용토지"(기본세율 +10%p).
heavy_home_count: §104⑦ 중과 주택수(조정대상지역 기준). 2면 +20%p, 3 이상이면 +30%p.
surcharge_rate를 직접 주면 그것이 우선한다.

Args:
    purchase_price: 매수 가격 (원)
    sale_price: 매도 가격 (원)
    holding_years: 보유 기간 (년)
    necessary_expenses: 취득세, 중개보수 등 필요경비 (원)
    tax_brackets: [{"upto": 과세표준 상한(원, 마지막 구간은 None), "rate": 세율(0~1), "deduction": 누진공제액(원)}, ...]
                  최신 소득세법 시행령 별표에서 확인해서 넘길 것 — 하드코딩된 기본값 없음
    long_term_deduction_rate: 장기보유특별공제율 (0~1), 다주택 중과 대상이면 0으로 넘길 것
    basic_deduction: 양도소득 기본공제 (기본 250만원, 연 1회)
    surcharge_rate: 다주택자 중과세율 가산분 (0~1), 해당 없으면 0

소득세법 §95②에 따라 §104⑦ 중과대상 주택은 장특공 자체가 배제된다(미등기와 동급) —
surcharge_rate와 long_term_deduction_rate를 동시에 넘기는 조합은 법문상 존재하지 않으므로
거부한다. 장특공은 보유 3년 이상만 가능(§95②).

이 함수가 지원하지 않는 산식 — 호출자가 사전에 처리할 것:
  · 보유 2년 미만 + 중과: max(단기세율 세액, 중과세율 세액) 비교과세(§104⑦ 후단) —
    두 번 호출해서 큰 쪽을 채택
  · 고가주택(양도가액 12억 초과) 1세대1주택: 과세 양도차익 = 전체차익×(양도가액−12억)/양도가액
    (영 §160) — 안분 후의 값을 기준으로 별도 계산 필요
  · 같은 과세기간 2회 이상 양도 시 합산 비교과세(§104⑤)

Returns:
    계산 과정이 담긴 dict (양도차익, 과세표준, 산출세액 등 단계별로 반환 — 검증 가능하도록)
ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
asset_typeNo주택
sale_priceYes
tax_bracketsNo
holding_yearsYes
purchase_priceYes
surcharge_rateNo
basic_deductionNo
heavy_home_countNo
necessary_expensesYes
long_term_deduction_rateNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it refuses unvalidated past years, flags future years as current-law estimates, rejects the legally impossible surcharge_rate + long_term_deduction_rate combination, and documents the 2026-08-30 behavior change and the data/tax_params.json source.

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-loads the purpose and the required-year change before the per-argument documentation, and nearly every sentence carries operative detail. The dated changelog block and repeated statutory citations add some verbal bulk that a caller does not strictly need to invoke the tool.

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 11 parameters, no output schema, and 0% schema coverage, the description still covers every argument, the rejection rules, the legal cross-checks (§95②, §104⑦), and the shape of the returned dict (step-by-step so results are verifiable). Nothing needed to call it correctly 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 coverage is 0% (bare titles only), so the description must carry the load and it does: it defines units (원, 0~1, 년), the tax_brackets object shape with 'upto'/None-final-segment, defaults (250만원 basic deduction, 0 default surcharge), and enum-like asset_type semantics including 분양권's 60% floor and 비사업용토지's +10%p.

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?

Opens with a specific verb+resource: Korea capital gains tax on real estate, enumerating the computed components (rate, long-term holding deduction, heavy rates, surtax) and the return ('the statute trail'). This is clearly separable from siblings such as calc_acquisition_tax, calc_gift_tax, and calc_inheritance_tax on the resource axis.

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?

Gives explicit when-to-use conditions (asset_type cases, heavy_home_count multipliers, surcharge_rate precedence) and an explicit when-not section enumerating three formulas the function does not support (sub-2-year holding with heavy rates, high-value single-home apportionment, multi-transfer aggregation) plus handled by the caller workarounds.

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

count_heavy_homesHome count for heavy ratesA
Read-onlyIdempotent
Inspect

Count homes for heavy capital gains rates, excluding low-value provincial homes and other statutory exclusions.

양도세 중과판정 주택수 산정 (영 §167의3~11 불산입 자동 적용 — 지방 3억 이하·§167의3①12호).

items 원소: {"종류": 주택|조합원입주권|분양권, "기준시가": 원(입주권=종전주택가·분양권=공급가),
"지방소재": bool, "인구감소등_12호": bool, "정비구역": bool,
"전용면적"·"취득가액"·"취득일"·"준공일"·"아파트": 소형 신축주택(영 §167의3①12호 가목,
2024-01-10~2027-12-31 취득·준공 + 전용 60㎡ + 수도권 6억/지방 3억 + 아파트 제외) 판정용,
"라벨": str}.

heavy_tier로 계열을 지정한다 — **같은 주택이라도 계열에 따라 세는 수가 달라진다.**
2(2주택 중과, 영 §167의10)면 기준시가 1억 이하(정비구역 제외) 불산입이 추가되고,
3(3주택 이상, 영 §167의3)에는 그 완화가 없다.
반환 주택수를 judge_transfer_reliefs의 heavy_home_count로 연결. 비과세용 주택수와 별개.
ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
heavy_tierNo

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds domain-specific behavior beyond annotations: statutory exclusions are applied automatically ('불산입 자동 적용'), and the counted number varies by heavy_tier even for the same house. It does not describe return type or performance characteristics, but this is a meaningful addition over 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 dense and long, but it is front-loaded with the English purpose sentence followed by Korean statutory details. Almost every clause adds substantive domain information required to invoke the tool correctly, though the English summary and Korean opening are slightly redundant. Overall it is appropriately sized for a complex tax-counting tool.

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 indicates that the tool returns a home count and connects it to judge_transfer_reliefs's heavy_home_count field, which is enough to understand the return's purpose. It thoroughly covers the input domain and automatic exclusions, but it does not specify the exact return type or boundary cases (e.g., empty items), leaving a minor gap for a tool of this complexity.

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 the full parameter burden, and it does. It defines the item object fields with meanings, units, and value domains (e.g., 종류 values, 기준시가 basis differences for 입주권 vs 분양권), explains the small-new-house judgment fields, and describes heavy_tier values 2 and 3 with their different counting rules. This richly compensates for the empty schema 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?

The description states a specific verb and resource (count homes for heavy capital gains rates) and scopes it by exclusions. It distinguishes itself from the non-taxable home count by explicitly saying '비과세용 주택수와 별개' and links the result to judge_transfer_reliefs's heavy_home_count. An agent can identify this as the heavy-rate home-counting tool without opening other schemas.

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?

It clearly frames the tool's use for heavy capital gains rates and explicitly excludes non-taxable home counting ('비과세용 주택수와 별개'). It also explains how to choose heavy_tier (2 vs 3) based on the applicable statutory series. However, it does not name the alternative tool (e.g., count_transfer_homes) for non-taxable situations, so the alternative routing is implied rather than explicit.

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

count_transfer_homesHome count for exemptionA
Read-onlyIdempotent
Inspect

Count homes for the one-household-one-home capital gains exemption, applying statutory exclusions automatically.

트리② — 1세대1주택 비과세 판정용 주택수 산정 (소법 §88·영 §155 특례 제외 자동 적용).

items 원소: {"종류": 주택|조합원입주권|분양권|오피스텔|다가구주택|겸용주택,
"사실상주거용": bool, "취득일": "YYYY-MM-DD"(분양권 2021 이후만 산입),
"상속특례주택"/"공동상속_소수지분"/"농어촌주택특례"/"등록임대_거주주택특례": bool,
"구획수": int·"일괄양도": bool(다가구), "주택연면적"·"주택외연면적": ㎡(겸용), "라벨": str}.

다가구주택은 구획별로 각각 1주택이 원칙이고, 구획별로 양도하지 않고 하나의 매매단위로
양도할 때만 전체가 1주택이 된다(영 §155⑮) — 일괄양도 여부가 비과세를 가르는 분기다.
겸용주택은 주택 연면적이 주택외보다 크면 전부 주택, 적거나 같으면 주택 부분만 주택이며
(영 §154③) 판정 기준은 공부가 아니라 **양도 당시 사용용도**다. 결과의 겸용주택_전부주택 참조.
중과판정 주택수(영 §167의3~11)와는 별개 — 세목·용도별 주택수 분리 원칙.
ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, so safety is covered; the description adds the notable behavioral trait that statutory exclusions are applied automatically. It further discloses the branching logic (다가구 일괄양도, 겸용주택 면적 기준) that determines the computed result, adding real value beyond the 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 English purpose sentence is front-loaded ahead of the dense Korean specification, so the reader gets the point immediately. The subsequent detail is domain-heavy but each block (item schema, 다가구 rule, 겸용주택 rule, sibling exclusion) maps to a real decision the caller must make.

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?

For a single-parameter read-only tool with no output schema, it covers what the input must contain and the pivotal judgment branches, and it points to the output field (겸용주택_전부주택) the caller should inspect. Return-value detail is unnecessary given there is no output schema, leaving it nearly 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?

With 0% schema coverage and only a generic untyped array (additionalProperties: true), the description carries the full burden and does so richly, enumerating the item fields (종류 with its domain of value types, 사실상주거용, 취득일 with the 분양권 2021 이후만 산입 rule, the various 특례 booleans, 구획수, 주택연면적/주택외연면적). This is meaning the schema entirely lacks.

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 sentence gives a specific verb (count) and resource (homes) scoped to the one-household-one-home capital gains exemption, and the Korean line explicitly says it applies statutory exclusions automatically. It is clearly delineated from the heavy-tax home count covered by a sibling.

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 states the context (1세대1주택 비과세 판정) and explicitly excludes the 중과판정 주택수 (영 §167의3~11) count, which maps to the count_heavy_homes sibling, establishing the 세목·용도별 주택수 분리 원칙. It does not, however, name specific sibling tools or spell out prerequisites for invoking this one.

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

estimate_reconstruction_levyReconstruction levy (재건축부담금)A
Read-onlyIdempotent
Inspect

Estimate the reconstruction excess-profit levy (재건축부담금): exemptions, base, rate bands, reductions.

재건축부담금 추정 (재초환법 §7·8·10·12·14의2·17의2 — 22차 순회).

초과이익 = 종료시점 주택가액 − (개시시점 주택가액 + 정상주택가격상승분 + 개발비용).
normal_rise_rate = max(국토부 고시 정기예금이자율, 시·군·구 평균주택가격상승률) — 외부 고시·
통계이므로 호출 시점 조회값을 넘긴다(캐시 금지). 부과율은 1인당 평균이익 8천만원 이하 면제,
이후 5천만원 폭으로 10~50%(2023-12-26 개정 — 구 수치 3천만/2천만은 오답).
1세대1주택 장기보유 감경 6년 10%~20년 70%, 60세 이상 1주택자는 납부유예 가능.
⚠️판례 0건 영역이고 가액은 감정평가로 확정되므로 **반환값은 전부 추정치**다.
또 재건축부담금은 세금이 아니라 부담금이고 1차 납부의무자는 조합(§6).
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
age_at_endNo
start_dateNo
member_countYes
end_price_totalYes
development_costNo
normal_rise_rateYes
start_price_totalYes
is_one_home_at_endNo
one_home_holding_yearsNo
management_plan_applied_dateNo

TDQS

A4.4/5.0
Behavior5/5

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

With annotations already covering readOnly, idempotent, non-destructive, and closed-world behavior, the description adds substantial context beyond those hints. It warns that all return values are estimates because valuation is determined by appraisal and there are zero judicial precedents in this area, specifies that normal_rise_rate must be fetched externally and not cached, clarifies that this is a levy (부담금) not a tax, and names the primary obligor as the association (조합). This is rich, decision-relevant behavioral information.

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 densely packed and front-loaded with a clear purpose sentence. The bilingual presentation (English summary followed by Korean legal detail) introduces minor redundancy, but almost every sentence contributes formula, rate bands, exemptions, or critical warnings. It is appropriately sized for the complexity of the domain and avoids fluff.

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 high complexity (11 parameters, no output schema, a specialized Korean levy), the description is remarkably complete. It supplies the legal basis, the computational formula, current rate bands with a warning against outdated numbers, reduction rules, and a crucial limitation that return values are all estimates. It also notes the levy's nature and obligor. No output schema exists, but the description adequately sets expectations about the returned data's reliability.

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 description coverage is 0%, so the description must carry all parameter meaning. It explains the core formula (excess profit = end price − (start price + normal rise + development cost)), thereby giving meaning to end_price_total, start_price_total, normal_rise_rate, and development_cost. It also decodes member_count via per-capita average profit, ties one_home_holding_years to the 10–70% long-holding reduction schedule, and links age_at_end to the 60+ payment deferral. However, parameters like management_plan_applied_date and the exact role/format of start_date and end_date are left unexplained, leaving a few gaps.

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 states a specific verb ('Estimate') and resource (the reconstruction excess-profit levy, 재건축부담금), and it enumerates the exact components covered: exemptions, base, rate bands, reductions. This distinguishes it from all sibling tools, which are either different tax calculators or judgment helpers. An agent can immediately tell this tool computes the levy.

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

Usage Guidelines3/5

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

The description implies usage by describing the levy calculation context and legal basis, but it never explicitly states when to call this tool versus alternatives like judge_reconstruction_membership_transfer or the other calc_* tools. It provides no when-not-to-use guidance or alternative selection criteria. The implied context is sufficient for an agent to infer it should be used to estimate this particular levy, but explicit routing guidance is absent.

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

format_consultation_outputConsultation outputA
Read-onlyIdempotent
Inspect

Standard output formatter for a consultation result.

상담 결과 표준 출력 포맷터 (설계 §11 출력규약의 코드화) — 파이프라인의 마지막 단계.

규약을 강제한다: ①단일 숫자 금지 — 쟁점 등급이 D~F(해석·사실판단)면 시나리오 2개 이상
병기 필수(성립/불성립 양쪽 세액) ②차액 = 리드 스코어(하<500만<중<3천만<상<1억<최상) —
차액이 클수록 전문가 상담 기대가치가 커서 매칭 우선순위 ③근거 없는 시나리오 등재 거부
④세무사법 안전선 문구 자동 포함(단정 금지). scenarios 원소: {"라벨", "세액", "전제",
"근거": [판정 함수들의 근거 인용]}. 사용 순서: 트리③→①→②→④ 판정 → calc_* 계산 →
시나리오별 세액을 이 포맷터로.
ParametersJSON Schema
NameRequiredDescriptionDefault
scenariosYes
extra_flagsNo
issue_gradeNo
dividing_issueNo
lead_thresholdNo

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses real behavioral traits: it refuses to register scenarios lacking 근거, auto-injects the 세무사법 safety-line text, and forces multi-scenario output for D–F grades rather than a single number. These are enforcement behaviors an agent would not otherwise know. It omits return/pagination details, but the enforcement profile is well covered.

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

Conciseness3/5

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

The opening sentence is front-loaded and clear, but the body is a dense, bilingual block with circled numerals, parenthetical design-doc references, and compressed tier notation that takes effort to parse. Information density is high with little waste, yet readability suffers.

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

Completeness3/5

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

For a terminal formatter with no output schema and an annotations-covered safety profile, the description supplies the enforcement contract, the scenario element shape, and the call order. It still leaves the shape of the produced output and three of five inputs (extra_flags, issue_grade, dividing_issue) undocumented, so an agent lacks full guidance for non-default invocations.

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

Parameters3/5

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

With 0% schema description coverage, the description must carry the parameters. It partly does: it details the scenarios element shape ({라벨, 세액, 전제, 근거}) and ties 차액=리드 스코어 tiers to the lead_threshold default (500만). But extra_flags, issue_grade, and dividing_issue are never explained, so the burden is only half met.

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 description states a specific role: the standard output formatter for a consultation result and the final pipeline stage that enforces the §11 output protocol. It enumerates concrete formatting rules (no single-number results, forced side-by-side scenarios, auto safety-line text), which makes the purpose concrete. It does not, however, distinguish itself from the sibling format_consultation_report, leaving the agent to infer which formatter applies.

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?

It gives an explicit ordering: run tree ③→①→②→④ judgments, then calc_* computations, then format each scenario's tax amount with this formatter. That tells the agent when in the workflow to call it. It stops short of stating exclusions or naming the alternative sibling formatter for other cases.

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

format_consultation_reportConsultation reportA
Read-onlyIdempotent
Inspect

Format a consultation result as a report: conclusion, grounds mapped to sources, tailored Q&A.

소비자용 상담 리포트 최종 양식 — 1.최종결론 / 2.근거(설명↔출처 1:1) / 3.맞춤 Q&A.

상담의 마지막 단계. 소비자는 결론만 원하므로 결론을 맨 위에, 근거는 설명과 출처를
1:1로 매칭(출처 없는 설명은 리포트 전체 거부), 소유자가 물었던 추가 질문들은 §3에
답변+근거로 정리한다. 쟁점으로 세액이 갈리면 scenarios를 함께 넘겨 결론 아래
병기(단정 금지 규약 유지 — format_consultation_output 재사용). 쟁점·질문 문구에서
해석례 추천검색(search_tax_rulings용 쿼리)을 자동 도출해 '추천검색'으로 반환.
ParametersJSON Schema
NameRequiredDescriptionDefault
owner_qaNo
evidencesYes
scenariosNo
conclusionYes
issue_gradeNo
dividing_issueNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real behavior beyond that: it enforces a validation rule ('출처 없는 설명은 리포트 전체 거부'), preserves a 'no-assertion' convention via format_consultation_output, and discloses that it auto-derives recommended-search queries returned as '추천검색'. These are concrete traits an agent could not infer from the annotations.

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

Conciseness3/5

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

The English opening sentence is a good front-loaded summary, but the Korean block largely restates it while layering multiple parenthetical rules, inflating length without proportional new information. It is readable but not tight.

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?

For a 6-parameter, no-output-schema tool with zero schema description coverage, the description conveys the pipeline role, section layout, the source-mapping validation rule, the scenarios condition, and an extra structured return ('추천검색'). The main gaps are the two undocumented params (issue_grade, dividing_issue), but overall it is sufficient to call the tool correctly.

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

Parameters3/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 parameter meaning; it does so for four of six: conclusion (placed at top), evidences (explanations 1:1 with sources, whole-report rejection), owner_qa (§3 answers with grounds), and scenarios (alternates when the issue splits the tax amount). The remaining issue_grade and dividing_issue are never explained, and the object shapes behind the additionalProperties arrays are undocumented. Partial compensation only.

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?

States a specific verb+resource ('Format a consultation result as a report') and enumerates the output sections (conclusion, grounds mapped to sources, tailored Q&A). It also references the sibling format_consultation_output as a reuse dependency, giving partial differentiation. It stops short of fully contrasting with that sibling's role, so it lands at 4 rather than 5.

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 final step of consultation) clearly fixes when the tool is used, and it gives a conditional ('쟁점으로 세액이 갈리면 scenarios를 함께 넘겨') for passing an optional parameter. There is no explicit when-not or alternate-format selection guidance, but the context is unambiguous.

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

get_law_detailRead a Korean statuteA
Read-onlyIdempotent
Inspect

Fetch the full text of a Korean statute by name or MST id, optionally one article. Needs LAW_OC key.

법령 조문 또는 행정규칙(고시) 원문 전체를 조회한다.

Args:
    doc_id: search_law 결과의 "법령일련번호"(target="law") 또는
            "행정규칙일련번호"(target="admrul") 값
    target: search_law에서 사용한 것과 동일하게 "law" 또는 "admrul" 지정
ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
targetNolaw

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds the auth requirement (LAW_OC key) and the article-level granularity option, which the annotations do not convey. No mention of rate limits or response shape, keeping it at 4.

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 English lead sentence is front-loaded and the Args block is structured, so key facts are easy to find. The Korean restatement duplicates the English meaning, which costs some space for a non-Korean-reading agent, but it is short and not padded.

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?

For a two-parameter read tool with rich annotations and no output schema, the definition supplies what an agent needs: where doc_id comes from, how target must align, and the credential prerequisite. Return-value details are not required given no output schema, so remaining gaps are minor.

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 description carries the burden and it does: doc_id is explained as the serial number from search_law (with the two possible target-specific variants), and target is documented with its two concrete values 'law'/'admrul' even though the schema declares no enum. This materially compensates for the empty schema.

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?

States a specific verb (fetch), resource (full text of a Korean statute), scope (by name or MST id, optionally one article), and names the search_law sibling as the source of doc_id. The only wrinkle is the 'by name' claim, which the schema's single string doc_id does not obviously support, but the tool's job is unambiguous.

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?

Explicitly ties the call to a prerequisite workflow: doc_id must be the 법령일련번호/행정규칙일련번호 returned by search_law, and target must match the target used there. That is clear routing guidance. No explicit when-not-to-use or alternative for other cases, so it falls 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.

get_local_tax_ordinancesLocal tax ordinance lookupA
Read-onlyIdempotent
Inspect

Look up a Korean city/county tax ordinance (rate adjustments, local reliefs). Needs LAW_OC key.

관할 시·도 지방세 조례에서 취득세(또는 keyword) 관련 조문을 실시간 조회한다.

지방세법 §14가 조례로 취득세 세율을 표준세율의 50% 범위에서 가감할 수 있게
허용하므로(탄력세율) 세액 판정 전 관할 조례 확인이 필요하다. 재산세는
§111③(특별한 재정수요·재해 시, 해당 연도 한정)이 같은 구조. 조례는 개정이
잦아 캐시 금지 — 호출 시점 조회 원칙(세율 하드코딩 금지 원칙의 조례 버전).

Args:
    sido: 광역 지자체 전체 명칭 — "서울특별시", "경기도", "부산광역시" 등.
          시군구 단위가 아니라 광역 단위(취득세는 광역단체세).
    keyword: 조문에서 찾을 세목 키워드 (기본 "취득세")

Returns:
    ordinances: 관할 지방세 조례 목록(일련번호는 get_law_detail(target="ordin")에
    바로 사용 가능), matched_articles: keyword·탄력세율 관련 조문 발췌,
    flexible_rate_found: 탄력세율 가감 조문 발견 여부(미발견 시 표준세율 적용
    판단, 단 감면 조례는 별도 검토 필요).
ParametersJSON Schema
NameRequiredDescriptionDefault
sidoYes
keywordNo취득세

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds genuinely new context: the LAW_OC authentication requirement, real-time lookup with an explicit cache prohibition, and the caveat that if no flexible-rate clause is found the standard rate applies but reduction ordinances still need separate review.

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?

Purpose is front-loaded and the Args/Returns blocks are cleanly delineated. The middle paragraph citing §14 and §111③ is longer than strictly needed for tool selection, though it does justify the cache-prohibition rule, and the English/Korean mixing makes scanning slightly uneven.

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 Returns block usefully enumerates the three return fields (ordinances, matched_articles, flexible_rate_found) and explains how to interpret flexible_rate_found. The only gap is error handling for a missing LAW_OC key, which is mentioned as required but not described as a failure mode.

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% and both parameter titles are bare, so the description must carry the load — and it does. It specifies that sido is the full metropolitan-level name ('서울특별시', '경기도'), explicitly rules out 시군구-level values (a real footgun for acquisition tax), and defines keyword's meaning and default ('취득세').

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 ('Look up a Korean city/county tax ordinance') with the exact scope (rate adjustments, local reliefs) and immediately notes the LAW_OC key requirement. It is clearly distinguishable from siblings like get_law_detail and search_law because it targets municipal ordinances (조례) rather than statutes or rulings.

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 explicit timing guidance: '세액 판정 전 관할 조례 확인이 필요하다' (check the jurisdiction ordinance before determining tax amount) and the no-caching rule for frequently amended ordinances. It also routes to the downstream sibling (get_law_detail(target="ordin")), but never states when NOT to use this tool versus search_law/get_law_detail directly.

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

get_relief_catalog_entryRelief catalog entryA
Read-onlyIdempotent
Inspect

Look up one relief catalog entry by statute reference.

감면 카탈로그 한 건 조회 — "지특법 §36의5", "조특97의3" 같은 표기를 받는다.

screen_relief_candidates가 뽑아 준 후보의 원문 요지·감면율·기한을 다시 볼 때 쓴다.
여기 값도 C등급 기계추출이므로 확정 근거로 인용하면 안 된다.
ParametersJSON Schema
NameRequiredDescriptionDefault
articleYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the read-only/idempotent annotations, it discloses a critical trust caveat: values are C등급 기계추출 and must not be cited as confirmed grounds. It also names the returned fields (요지, 감면율, 기한), which matters since there is no output schema.

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 a one-line English purpose, then workflow and data-quality caveat. Four short sentences, each doing work; nothing redundant, though the bilingual restatement is slightly duplicative.

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?

For a single-parameter lookup with no output schema and no enums, the description supplies the missing pieces: input format examples, returned fields, and a data-trust warning. Only the behavior on a missing/invalid article is unaddressed.

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% for the single 'article' parameter, so the description carries the burden and does so by giving concrete accepted notations ('지특법 §36의5', '조특97의3'). It stops short of stating validation rules or failure behavior for unrecognized formats.

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 precise verb and resource ('look up one relief catalog entry by statute reference') and identifies its role relative to the sibling screen_relief_candidates. An agent can distinguish it from search_law, get_law_detail, and the judge_* tools without opening any schema.

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?

Explicitly states the workflow trigger: use it to re-examine the 원문 요지·감면율·기한 of candidates that screen_relief_candidates produced. It names the sibling it follows but gives no explicit 'when not to use' or what to do if the article is not in the catalog.

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

judge_155_specialSpecial one-home cases (art. 155)A
Read-onlyIdempotent
Inspect

Special one-home cases: marriage, caring for parents, inherited home, rural home (Income Tax Decree art. 155).

영 §155 특례 판정 — kind: 혼인(⑤)|동거봉양(④)|상속주택(② 선순위·별도세대)|
거주주택(⑳ 장기임대+거주 2년).

특례기간은 **양도일 기준**으로 갈린다 — 혼인은 2024-11-12 이후 양도분 10년(그 전 5년,
영 34990호 부칙 §2), 동거봉양은 2018-02-13 이후 양도분 10년(그 전 5년). 과거 양도분
상담·경정청구에서는 sale_date를 반드시 넣을 것.
1+1 판정 전에 excluded_homes_*(공동상속 §155③·농어촌 조특법 §99의4 등 특례로 주택수에서
빠지는 주택 수)를 차감한다. 혼인 주택수는 양도일이 아니라 **혼인합가 당시** 기준이고,
임대주택도 주택수에 든다. 2009-02-04 전 합가는 여성 직계존속 55세(parent_is_female).
상속주택은 동거봉양 합가로 동일세대가 된 경우 merged_for_parent_care·held_before_merge로
'합치기 이전부터 보유하던 주택'만 인정된다. §155 특례의 3중첩은 불허.
상속·거주주택은 요건 판정 후 count_transfer_homes 입력 플래그로 연결.
ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
sale_dateNo
event_dateNo
homes_mineNo
first_time_useNo
parent_is_femaleNo
held_before_mergeNo
rental_registeredNo
excluded_homes_mineNo
homes_spouse_or_parentNo
merged_for_parent_careNo
designated_by_agreementNo
parent_max_age_at_mergeNo
residence_years_in_homeNo
is_first_priority_inheritedNo
excluded_homes_spouse_or_parentNo
separate_household_at_inheritanceNo
gifted_within_2y_before_inheritanceNo
general_home_acquired_before_inheritanceNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real behavioral semantics beyond that: the special period is date-dependent (2024-11-12 / 2018-02-13 cutoffs with prior 5-year rules), triple stacking of §155 reliefs is disallowed, and the marriage household count is taken at the merge date rather than the sale date. This is meaningful disclosure the annotations do not carry.

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-loads the plain-English purpose before the Korean detail, and the compact pipe-delimited kind list efficiently conveys the enum values. It is dense but not padded; the main cost is that the mixed-language formatting with bold markers and parenthetical citations is harder to parse than a clean list.

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

Completeness3/5

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

For a 19-parameter judgment tool with only 1 required parameter and no output schema, the definition covers purpose and the key legal rules but leaves large gaps: most boolean/numeric inputs are uninterpreted, and there is no indication of how the verdict is composed or which inputs drive which case branch. Annotations cover the return-safety profile, so the remaining gap is parameter completeness.

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

Parameters3/5

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

Schema coverage is 0% with 19 parameters, so the description carries the burden and partially meets it: it supplies the kind values (⑤혼인, ④동거봉양, ②상속주택, ⑳거주주택), explains sale_date's role, the excluded_homes_* subtraction, and the meaning of parent_is_female for pre-2009-02-04 merges. However the majority of parameters (first_time_use, rental_registered, designated_by_agreement, residence_years_in_home, is_first_priority_inherited, separate_household_at_inheritance, general_home_acquired_before_inheritance, etc.) remain entirely unexplained.

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?

States the resource precisely: art. 155 Income Tax Decree one-home special cases, and enumerates the four case kinds (marriage, parent care, inherited, rural) plus the Korean 판정 verb. An agent can distinguish it from judge_156_3_special or judge_inherited_house_priority by the article number, though it never explicitly contrasts with them.

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 use conditions: sale_date must be supplied for past transfers in 상담/경정청구 cases, excluded_homes_* must be subtracted before a 1+1 judgment, and the tool links into count_transfer_homes input flags. It never states when NOT to use this tool or names a sibling alternative, so it falls 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.

judge_156_3_from_portfolioHome plus pre-sale right (portfolio)A
Read-onlyIdempotent
Inspect

Same as judge_156_3_special, but counts homes from a holdings list.

보유 목록만 넣으면 §156의3 특례를 판정한다 — 주택수를 코드가 센다.

judge_156_3_special을 직접 쓰면 other_homes·excluded_homes를 사람이 채워야 하고,
빠뜨리면 조용히 '1주택+1분양권'으로 가정하고 답한다. **상담에서는 이 툴을 먼저
쓸 것.** count_transfer_homes와 같은 items 규약을 받아 종전주택·분양권·나머지
주택수를 세고, 농어촌주택·상속주택 등 제외 특례를 자동 반영한다.

반환의 '주택수산정'에 무엇을 몇 채로 셌는지와 제외 사유가 들어 있으니, 결론보다
그것을 먼저 확인할 것 — 목록 자체가 틀리면 판정도 틀린다.

Args:
    items: 보유 자산 목록. 각 원소는 count_transfer_homes 규약을 따른다 —
        {"종류": "주택"|"분양권"|"조합원입주권"|"오피스텔", "취득일": "YYYY-MM-DD",
         "라벨": str, "농어촌주택특례": bool, "상속특례주택": bool, ...}.
        **양도할 주택 하나에 "양도대상": True를 표시해야 한다.**
        분양권 취득일은 청약당첨일이 아니라 분양계약일(대법원 2024두54560).
    sale_date: 종전주택 양도일 YYYY-MM-DD
    new_home_completed: 분양권으로 취득하는 주택의 완성일 (③항 판정에 필요)
    moved_in_date: 신축주택으로 세대전원이 이사한 날
    continuous_residence_years: 신축주택 계속거주 기간(년)
    holding_waiver_reason: ""|건설임대5년거주|수용|해외이주2년|취학근무국외|부득이1년거주
    sale_delay_reason: ""|캠코매각의뢰|법원경매신청|공매진행 (규칙 §75① 열거 3가지)
    delay_state_at_3y: 분양권 취득일부터 3년이 되는 날 현재 그 상태였는지
    sold_by_that_method: 실제로 그 방법으로 양도됐는지
    partial_move_reason: ""|취학|근무|질병|학교폭력
ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
sale_dateYes
moved_in_dateNo
delay_state_at_3yNo
sale_delay_reasonNo
new_home_completedNo
partial_move_reasonNo
sold_by_that_methodNo
holding_waiver_reasonNo
continuous_residence_yearsNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real behavioral value: it discloses that exclusions (rural, inherited homes) are auto-applied, describes the returned '주택수산정' field containing counts and exclusion reasons, and instructs the agent to verify that before the conclusion. The failure-mode warning about the sibling tool further disambiguates behavior.

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 sibling distinction, then usage guidance, then args. Every section is load-bearing, though the English and Korean statements of the same sibling relationship are mildly 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 10-parameter legal-judgment tool with no output schema and zero schema documentation, the description covers the argument conventions, the required flag, enum options, auto-applied exclusions, and even the return payload structure. Nothing essential for correct invocation 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 carries the full parameter burden and does so thoroughly: it documents the items element structure, the mandatory '양도대상' flag, the pre-sale acquisition-date rule with a court citation, and enumerates allowed values for holding_waiver_reason, sale_delay_reason, and partial_move_reason — none of which the schema provides.

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 states a precise verb+resource ('judges the §156-3 special case by counting homes from a holdings list') and immediately contrasts it with the sibling judge_156_3_special. An agent can tell the difference between the two without opening either schema.

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?

Explicitly directs 'use this tool first in consultations' and explains why the alternative (judge_156_3_special) is riskier: it requires manual other_homes/excluded_homes and silently assumes '1 home + 1 pre-sale right' if omitted. This names both the recommended tool and the failure mode of the alternative.

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

judge_156_3_specialHome plus pre-sale right caseA
Read-onlyIdempotent
Inspect

Home plus pre-sale right (분양권) one-home special case (Income Tax Decree art. 156-3).

주택+분양권 1세대1주택 특례 판정 (영 §156의3, 규칙 §75·§75의2 — 24차 순회).

입주권은 judge_155_special·§156의2 계열이 맡고, 이 툴은 **분양권** 전용이다.
**판정범위는 ②③항(일시적 1주택+1분양권)뿐이다** — 상속분양권(④⑤)·동거봉양/혼인
조합(⑥)·문화재/이농주택 조합(⑦⑧)은 미구현이며 반환 '판정범위' 필드로 고지된다.
상속·합가·혼인이 얽힌 분양권 상담에는 이 결론을 그대로 쓰지 말 것.
2021-01-01 이후 취득한 분양권부터 주택수에 들어가므로 그 전 취득분은
"특례 불필요"로 돌려준다 — 탈락과 구분해서 읽을 것.

판정 순서: ②항(분양권 취득 후 3년 내 종전주택 양도) → 안 되면 규칙 §75① 부득이한
사유 → 그래도 안 되면 ③항(신축주택 완성 후 실입주).

함정 셋을 코드에 박아 뒀다.
- ②항 후단이 1년 요건을 면제하는 것은 §154① 제1호·제2호**가목**·제3호뿐이다.
  해외이주 출국(제2호나목)·국외 취학근무 출국(다목)은 면제 대상이 아니다.
- ③항의 "완성 후 2년"은 2023-02-28 개정으로 3년이 됐는데, 기준은 시행일이 아니라
  **2023-01-12 이후 양도분**이다(부칙 §8).
- ③항의 "종전주택 취득 1년 경과" 요건은 2022-02-15 이후 **취득한 분양권**부터다
  (부칙 §12). 양도일 기준이 아니다.

Args:
    prior_home_acquired: 종전주택 취득일 YYYY-MM-DD
    bunyang_acquired: 분양권 취득일 YYYY-MM-DD (계약일 아님)
    sale_date: 종전주택 양도일 YYYY-MM-DD
    new_home_completed: 분양권으로 취득하는 주택의 완성일 (③항 판정에 필요)
    moved_in_date: 신축주택으로 세대전원이 이사한 날
    continuous_residence_years: 신축주택 계속거주 기간(년) — 1년 이상이어야 한다
    holding_waiver_reason: ""|건설임대5년거주|수용|해외이주2년|취학근무국외|부득이1년거주
        (judge_exemption_requirements의 waiver_reason과 같은 어휘)
    sale_delay_reason: ""|캠코매각의뢰|법원경매신청|공매진행 (규칙 §75① 열거 3가지)
    delay_state_at_3y: 분양권 취득일부터 3년이 되는 날 현재 그 상태였는지
    sold_by_that_method: 실제로 그 방법(경매·공매 등)으로 양도됐는지
    partial_move_reason: ""|취학|근무|질병|학교폭력 — 세대원 일부가 못 옮긴 사유
    other_homes: 종전주택·분양권 외에 보유한 주택 수. §156의3②은 '1주택+1분양권'
        전제라 제외 특례를 거치지 못한 주택이 남으면 이 항으로는 비과세되지 않는다
    excluded_homes: 그중 주택수 제외 특례로 빠지는 수 — 농어촌주택(조특법 §99의4)·
        인구감소지역주택(§71의2)·준공후미분양(§98의9). 제외 후 1주택이면 적용된다
    bunyang_already_completed: 양도 당시 분양권이 이미 완공돼 주택이 된 경우
ParametersJSON Schema
NameRequiredDescriptionDefault
sale_dateYes
other_homesNo
moved_in_dateNo
excluded_homesNo
bunyang_acquiredYes
delay_state_at_3yNo
sale_delay_reasonNo
new_home_completedNo
partial_move_reasonNo
prior_home_acquiredYes
sold_by_that_methodNo
holding_waiver_reasonNo
bunyang_already_completedNo
continuous_residence_yearsNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already establish the safe read-only, idempotent, closed-world profile, and the description goes well beyond them: it discloses that pre-2021-01-01 분양권 returns '특례 불필요' (which must not be read as 탈락), that part of the statutory range is unimplemented and surfaced through a '판정범위' field, and it pins three amendment-date pitfalls (2023-01-12 양도분, 2022-02-15 취득분). This is behavioral context an agent could not get from 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?

Front-loaded with purpose, then scope, then judgment order, then the trap list, then args — a sensible hierarchy with no filler sentences. It is nonetheless long, and some trap detail (e.g. the specific 부칙 article numbers) is more implementation nuance than an agent needs to select and invoke the tool.

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, 0%-documented, mutation-free judgment tool with no output schema, the description supplies everything needed: scope, call order, per-parameter vocabularies, edge-case behavior, and a hint at the returned 판정범위 field. Nothing an agent needs to call it correctly 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 coverage is 0% (titles only, no enums declared), so the description carries the full load and does so: it documents every one of the 14 arguments with format (YYYY-MM-DD), semantics (분양권 취득일 = 계약일 아님), and enumerated vocabularies for holding_waiver_reason, sale_delay_reason, and partial_move_reason. It also explains how other_homes/excluded_homes interact with the 1주택+1분양권 premise.

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 verdict verb and resource (주택+분양권 1세대1주택 특례 판정) plus the governing provision (§156의3, 규칙 §75·§75의2). It explicitly differentiates itself from siblings: '입주권은 judge_155_special·§156의2 계열이 맡고, 이 툴은 분양권 전용이다'. An agent can route without opening the schema.

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?

Gives explicit scope limits (②③항 only; ④⑤/⑥/⑦⑧ unimplemented and reported via 판정범위), a warning not to reuse the conclusion for 상속·합가·혼인 cases, and an ordered judgment sequence (②항 → 규칙 §75① → ③항). Alternatives and exclusions are named rather than inferred.

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

judge_acquisition_homes_and_rateAcquisition tax home count and rateA
Read-onlyIdempotent
Inspect

Count homes for acquisition tax and decide the rate (1/8/12%), temporary two-home relief, corporate rules.

취득세 주택수 산정 + 일시적 2주택 + 세율·부가세 실효율 판정
(지방세법 §13의2·§151, 영 §28의2~6, 농특세법 §5).

homes: 취득 주택 포함 세대 보유 목록. 각 원소 {"종류": 주택|조합원입주권|주택분양권|
오피스텔|부속토지, "시가표준액": 원, "수도권": bool, "정비구역": bool, "상속개시_5년내": bool,
"혼전분양권_배우자혼전주택": bool, "전용면적": ㎡, "취득당시가액": 원,
"신축최초유상승계일": "YYYY-MM-DD", "라벨": str}.

acquire_date를 반드시 넣을 것 — 비수도권 저가주택 기준이 2025-01-02를 경계로 1억↔2억으로
갈리고(영 35477호 부칙 §2) 일시적 2주택 3년 기산의 시작점이기도 하다.

자동 적용: 저가주택(수도권 1억/비수도권 1억→2억)·오피스텔 1억·1억 이하 부속토지(⑥5호)·
1.10대책 소형 오피스텔(⑥8·9호, 전용 60㎡ + 수도권 6억/지방 3억)·상속 5년·혼인 완충 제외.

일시적 2주택(영 §28의5)은 양도세 §155①과 별개다 — 1년 경과 요건이 없고 3년이며, '처분'은
타인에게 새로운 취득이 발생하거나 멸실되는 것을 말한다. 동일 세대원 이전은 처분이 아니고
(disposal_to_same_household=True), 상속으로 인한 이전은 처분이다. 취득 사유는 예시일 뿐이라
임대목적 취득(new_home_for_rental)도 가능하고 신규주택 전입은 요건이 아니다.

is_gift=True면 유상거래 매트릭스가 아니라 무상취득 트랙으로 간다 — 조정대상지역 +
gift_std_value 3억 이상이면 12%, 1세대1주택자→배우자·직계존비속이면 제외.
분양권 취득 주택은 잔금일이 아니라 권리 취득일 기준으로 목록을 구성할 것(영 §28의4① 후단).
ParametersJSON Schema
NameRequiredDescriptionDefault
homesYes
is_giftNo
acquire_dateNo
gift_std_valueNo
is_corporationNo
in_adjusted_areaYes
exclusive_area_m2No
prev_disposal_dateNo
prev_disposal_kindNo매각
new_home_for_rentalNo
disposal_to_same_householdNo
gift_from_one_home_household_to_familyNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds substantial behavioral context beyond annotations: which exemptions are auto-applied, the boundary date 2025-01-02 changing 1억↔2억, that 임대목적 취득 is allowed, and that gift follow a distinct 무상취득 track. It adds real value, though it omits a statement about the output result's shape (no output schema exists).

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

Conciseness3/5

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

The purpose is front-loaded in the opening line, and legal citations are compact. However the body is dense and bilingual with largely duplicated English/Korean phrasing, and several sentences carry overlapping legal context that could be trimmed without losing invocation-critical 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?

For a 12-param, 0%-coverage, annotation-only, no-output-schema legal computation tool, the description conveys the domain logic, auto-applied rules, and the pivotal acquire_date requirement well. Residual gaps are the undocumented prev_disposal/area parameters and any indication of the returned result, keeping it just under fully complete.

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 description coverage is 0% across 12 params, so the description must compensate, and it largely does: detailed structure of each `homes` element, the criticality and semantics of acquire_date, gift_std_value's 3억 threshold, and the meaning of disposal_to_same_household, new_home_for_rental, and is_gift. It leaves exclusive_area_m2, prev_disposal_date, prev_disposal_kind, and is_corporation largely unexplained, so the compensation is incomplete but strong.

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?

States a specific verb+resource: counts homes for acquisition tax and decides the 1/8/12% rate, plus temporary two-home and corporate rules. It implicitly distinguishes itself from sibling judge_temporary_two_homes and from transfer-tax rules by explicitly noting the acquisition two-home relief is separate from transfer tax §155①. It stops short of naming alternatives outright, so not a 5.

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

Usage Guidelines3/5

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

It gives conditions under which internal rules apply (low-price housing thresholds, gift track, corporate rules) and mandates including acquire_date, which is de facto usage guidance. However, it never says when to prefer this tool over calc_acquisition_tax, judge_temporary_two_homes, or count_heavy_homes, leaving alternative routing to inference.

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

judge_adjusted_area_at_dateAdjusted area on a dateA
Read-onlyIdempotent
Inspect

Was a location an adjusted (regulated) area on a given date, from the designation history.

'취득 당시' 조정대상지역 여부 판정 (트리④ B2 — data/adj_regions_history.json 이력 lookup).

region 예: "서울 마포구"·"성남시 분당구". target_date: 취득일 YYYY-MM-DD(분양권·입주권
승계취득은 사용승인일 기준). 이력은 근거 확보 구간만 수록(2025-10-16 C급·2026-07-01 A급) —
미수록 기간·지역은 '판단불가' 반환(그럴듯한 오답 금지). 결과의 acquired_in_adjusted_area를
judge_exemption_requirements에 연결. 과거분(2017~2025) 백필은 액션백로그 진행 중.
ParametersJSON Schema
NameRequiredDescriptionDefault
regionYes
target_dateYes

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations (readOnly, idempotent, closed-world, non-destructive), it discloses a key behavioral trait: history contains only evidence-secured periods and unrecorded periods/regions return '판단불가' rather than a plausible wrong answer. This indeterminate-return behavior is exactly the kind of context annotations cannot convey; only the exact return shape is unspecified.

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

Conciseness3/5

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

The purpose and parameter guidance are front-loaded and mostly earn their place, but the text is dense and mixes languages while carrying internal-only references (트리④ B2, data/adj_regions_history.json, backfill action backlog) that add noise without helping selection.

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?

For a 2-parameter tool with no output schema, the description covers purpose, parameter formats, an edge-case date rule, data-coverage limits, the indeterminate return value, and downstream linkage. It is nearly complete; only the precise success return structure is left implicit.

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 description must carry parameter meaning, and it largely does: it gives region format examples ('서울 마포구', '성남시 분당구'), target_date format YYYY-MM-DD, and the edge-case rule that 분양권·입주권 승계취득 uses the use-approval date. This substantially compensates for the empty schema, though region naming conventions are not exhaustively defined.

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 first sentence gives a specific verb and resource: determining whether a region was an adjusted (regulated) area on a given date from designation history. It is precise and unique among siblings (no other judge_* tool covers adjusted-area status), but it does not explicitly differentiate itself from related tools like judge_exemption_requirements beyond naming a downstream link.

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?

It clearly frames the use case as judging '취득 당시' (at-time-of-acquisition) adjusted-area status and tells the agent to feed acquired_in_adjusted_area into judge_exemption_requirements. It gives clear context but no explicit when-not conditions or alternatives for other scenarios.

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

judge_business_dealer_statusDealer vs individual sellerA
Read-onlyIdempotent
Inspect

Is the seller a real estate dealer (business income) or an individual (capital gains).

사업자성 스크리닝 — 부동산매매업(사업소득)인지 양도소득인지 (트리⑥, P0 Q0 축).

⚠️소득세법에는 계속성·반복성의 임계값이 없다. 기계 판정 가능한 유일한 수치는
부가가치세법 시행규칙 §2②2호의 **1과세기간(6개월) 중 1회 이상 취득 + 2회 이상 판매**로,
실무가 소득세 판정에 원용하지만 직접 근거는 부가세법이므로 **스크리닝 전용**이다(단정 금지).
구입한 주거용 건물의 재판매는 부동산매매업에 포함된다(영 §122① 단서 괄호) — '주택은 매매업이
아니다'는 오해 지점. 결과가 갈리면 시나리오 2개(양도소득/사업소득) 병기가 출력 규약.
ParametersJSON Schema
NameRequiredDescriptionDefault
sales_in_periodNo
is_self_built_saleNo
is_residential_resaleNo
acquisitions_in_periodNo
has_business_registrationNo
business_purpose_advertisedNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish a safe, read-only, idempotent profile, so the bar is lower. The description adds substantive context beyond them: the sole machine-checkable threshold derives from VAT Act rules and is screening-only rather than determinative, that residential resale counts as dealer activity (correcting a common misconception), and that divergent results emit two scenarios. This is meaningful behavioral guidance not captured by the annotations.

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

Conciseness3/5

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

The English sentence is front-loaded and clean, but the Korean block restates the purpose and then layers dense legal caveats, making the whole somewhat heavy with partial bilingual redundancy. Every clause carries information, yet the structure could be tighter for an agent parsing it.

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

Completeness3/5

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

No output schema exists and the safety profile is covered by annotations, so the description focuses on legal basis and output convention, which is helpful for a complex judgment tool. Still, with six params at 0% schema coverage, the description does not fully document the inputs that drive the judgment, leaving a gap an agent must bridge.

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

Parameters3/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 the burden. It gives semantic grounding to the counting parameters by explaining the 6-month period with 1+ acquisition and 2+ sales, and touches is_residential_resale via the residential-resale rule. But is_self_built_sale, has_business_registration, and business_purpose_advertised are left entirely unexplained in both schema and description.

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 states a precise judgment question with both outcomes named: dealer (business income) vs individual (capital gains). The Korean line reinforces the verb+resource and ties it to a specific decision node (트리⑥, P0 Q0). An agent immediately knows this is a classification/screening tool, distinct from the calc_* tax-computation siblings.

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

Usage Guidelines3/5

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

It labels itself a screening tool (스크리닝 전용, 단정 금지), which implies when it is appropriate, and it prescribes an output convention when results diverge. However, it never names an alternative sibling (e.g., calc_dealer_comparative_tax) or states an explicit when-not-to-use condition. Usage is implied rather than routed.

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

judge_co_inherited_ownerCo-inherited home ownerA
Read-onlyIdempotent
Inspect

Attribute a co-inherited home to one heir under Income Tax Decree art. 155(3).

공동상속주택의 소유자 귀속 판정 (영 §155③).

원칙은 불산입(다른 주택 양도 시 그 거주자의 주택으로 보지 않음)이나 상속지분 최대자는
산입하며, 최대자가 2명 이상이면 ①해당 주택 거주자 → ③최연장자 순(2호는 2008 삭제).
shares 원소: {"상속인", "지분율": 0~1, "해당주택_거주": bool, "나이": int}.
⚠️ 세목별로 결론이 갈린다 — 취득세는 최대지분→거주자→연장자(지방세법 영 §28의4⑤),
종부세는 소액지분(40%↓ 또는 지분공시가 6억·지방 3억↓)이면 기간 무관 제외(영 §4의2②).
ParametersJSON Schema
NameRequiredDescriptionDefault
sharesYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description goes beyond that by disclosing the actual decision algorithm and its tie-breaking order (including the deletion of clause 2 in 2008), which is genuine behavioral context an agent cannot get from the annotation block.

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?

Purpose is front-loaded and the subsequent lines build the rule structure logically. The English and Korean openings partially restate each other, and the cross-tax caveat is buried in a warning symbol at the end, but there is little outright filler for a domain this dense.

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

Completeness3/5

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

There is no output schema, so the description should say what the tool returns — e.g. whether it emits the designated heir, an include/exclude flag, or a tie-break reason — and it does not. The legal logic is thorough, but the caller cannot predict the response shape for a judgment tool.

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% and the single parameter is an opaque array of additionalProperties objects, so the description carries the full burden — and it does: it enumerates the item keys (상속인, 지분율 with 0~1 range, 해당주택_거주 bool, 나이 int) and their types. It omits whether shares must sum to 1 or how ties on age are resolved numerically, keeping it short of a 5.

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?

States a specific verb and resource ('Attribute a co-inherited home to one heir') tied to a precise legal basis (Income Tax Decree art. 155(3)), and the Korean line confirms the same scope. It does not explicitly name the adjacent sibling judge_inherited_house_priority, so an agent must infer the boundary, but the statutory citation is a strong differentiator.

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 the applicable rule hierarchy (default exclusion → largest inheritor's share → same-house resident → eldest) and the ⚠️ note that conclusions differ by tax type, with 취득세 and 종부세 following other statutes. This effectively tells the agent this tool is for the income-tax question, but it never names the alternative tools (e.g. calc_acquisition_tax, calc_jongbu_tax) or states an explicit 'do not use' condition.

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

judge_exemption_requirementsOne-home exemption requirementsA
Read-onlyIdempotent
Inspect

Full one-household-one-home capital gains exemption test: holding, residence, price cap, adjusted area.

트리④ — 1세대1주택 비과세 요건 판정 (소법 §89①3호·영 §154·§155의3).

트리①(세대)·트리②(주택수) 출력을 입력으로 받아 보유 2년·취득당시 조정 시 거주 2년·
배제사유·상생임대 대체·고가주택 12억 안분 비율을 판정하고, 결과를
judge_transfer_reliefs의 meets_exemption_requirements로 연결한다.
acquired_in_adjusted_area는 '취득 당시' 지정이력 기준(승계 입주권·분양권은 사용승인일).
waiver_reason: ""|건설임대5년거주|수용|해외이주2년|취학근무국외|부득이1년거주.

§154①5호(조정 공고 전 계약)는 사실 4개로 분해해서 넣는다 — 하나라도 틀리면 결론이 뒤집힌다:
  contract_before_adjusted_announce(공고 전 계약) · deposit_paid_in_full(계약금 '전액' 지급,
  일부면 배제 불가) · no_home_at_contract(계약금 지급일 세대 무주택, 유주택이면 이후
  세대분리해도 적용) · acquisition_cause(매매|분양|증여|상속|자가건설|조합가입).
  증여·상속은 same_household_succession=True(동일세대원 승계)일 때만 배제가 유지된다.
partial_non_residence_unavoidable: 세대원 일부가 부득이 사유로 처음부터 미거주한 경우.
sangsaeng_nonresident_contract: 비거주자가 체결한 임대차계약이면 상생임대 특례가 무효.
ParametersJSON Schema
NameRequiredDescriptionDefault
sale_priceNo
holding_yearsYes
waiver_reasonNo
residing_yearsYes
acquisition_causeNo매매
no_home_at_contractNo
sangsaeng_rental_okNo
deposit_paid_in_fullNo
acquired_in_adjusted_areaYes
is_one_household_one_homeYes
same_household_successionNo
pre_announce_contract_no_homeNo
sangsaeng_nonresident_contractNo
contract_before_adjusted_announceNo
is_usage_converted_after_contractNo
partial_non_residence_unavoidableNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare a pure, side-effect-free computation (readOnly, idempotent, non-destructive, closed-world). The description still adds meaningful behavior: '하나라도 틀리면 결론이 뒤집힌다' warns that a single mis-set §154①5호 fact flips the verdict, and it notes acquired_in_adjusted_area must reflect '취득 당시' designation and that a non-resident lease voids the sangsaeng special case. Return format is not described, but the safety profile is fully covered by annotations.

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

Conciseness3/5

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

The purpose is correctly front-loaded and no sentence is decorative, but the body is a dense wall mixing English and Korean with inline statute citations (§89①3호, §154①5호), which makes it hard to scan for a downstream agent. Compression is high but structural signposting is weak.

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?

For a 16-parameter, no-output-schema judgment tool, the description covers the decision rule, the trickiest parameter interactions, and the pipeline position, so an agent can call it correctly without opening the docs. The main omission is what a '판정' result contains, though the absence of an output schema makes that less load-bearing.

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 description coverage is 0% across 16 parameters, so the description carries the whole burden and responds well: it enumerates waiver_reason values (""|건설임대5년거주|수용|해외이주2년|취학근무국외|부득이1년거주), acquisition_cause values (매매|분양|증여|상속|자가건설|조합가입), and explains the four decomposed facts contract_before_adjusted_announce, deposit_paid_in_full, no_home_at_contract and the succession condition for same_household_succession. Gaps remain for about seven params (sale_price, holding_years, residing_years, sangsaeng_rental_ok, is_usage_converted_after_contract, etc.) that are unaddressed in both schema and description.

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 states a specific verb+resource+scope: 'Full one-household-one-home capital gains exemption test: holding, residence, price cap, adjusted area.' It also positions itself in a pipeline (tree ④) and names where the output goes (judge_transfer_reliefs), which separates it from the many sibling 'judge_*' tools. The heavy Korean legal parentheticals dilute readability but the purpose is unambiguous.

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

Usage Guidelines3/5

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

The description states its inputs are the outputs of tree① (household) and tree② (home count) and that the verdict feeds judge_transfer_reliefs' meets_exemption_requirements field, which gives real sequencing context. However, it never says when to prefer this over alternatives like judge_second_home_exclusion or judge_temporary_two_homes, so selection guidance is only implied.

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

judge_family_loanFamily loan vs giftA
Read-onlyIdempotent
Inspect

Family loan vs gift screening: 4.6% benchmark rate and the 10 million won threshold (Inheritance and Gift Tax Act art. 41-4).

가족 간 차용·무상대출 증여 스크리닝 (상증법 §41의4 — 적정이자율 4.6%·기준 1천만).

연간 증여이익 = 대출금×4.6% − 실제 이자. 1천만 미만이면 과세 제외(무상 기준 약 2.17억).
차용증·이자 실지급은 취득자금 증여추정(§45) 방어와 세트라는 플래그를 함께 반환.
ParametersJSON Schema
NameRequiredDescriptionDefault
loan_amountYes
agreed_interest_rateNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), so the bar is lower. The description adds real behavioral content: the computation (annual gift benefit = loan × 4.6% − actual interest), the 10M exclusion threshold, the ~217M free-loan equivalent, and the fact that it returns flags tied to the §45 acquisition-funds presumption defense.

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 and compact for a tax-screening tool; the formula and thresholds earn their space. Bilingual redundancy and heavy statutory shorthand make it slightly dense, but nothing is wasted.

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?

For a read-only judge tool with no output schema, the description supplies the rules (rate, threshold), the computation, and the nature of the returned flags, which is enough for correct invocation. Minor gaps remain around input units and how the flag output should be interpreted.

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

Parameters3/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. The formula (대출금 × 4.6% − 실제 이자) implies loan_amount and the interest rate, which partially maps to the two params, but it never states units, format, or the meaning of agreed_interest_rate=0 (i.e., an interest-free loan).

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?

Names a specific verb+resource pair ('Family loan vs gift screening') grounded in a specific statute (Inheritance and Gift Tax Act art. 41-4) with the 4.6% benchmark and 10M won threshold. This is far more specific than the generic calc_gift_tax / judge_gift_tax siblings, though it never explicitly contrasts itself with them.

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

Usage Guidelines3/5

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

Usage is implied by the topical specificity (screening family loans against gift-tax re-characterization), but there is no explicit 'use this when X, not calc_gift_tax' guidance and no stated exclusions. An agent infers the context rather than being told it.

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

judge_farmland_daetoFarmland substitution exemptionA
Read-onlyIdempotent
Inspect

Farmland substitution exemption (Special Taxation Act art. 70): distance, period, area and value ratios.

조특법 §70 농지대토 양도세 100% 감면 판정 (시행령 §67 — 23차 순회).

요건: ①종전 농지 양도일 현재 **4년 이상** 농지소재지(시군구·연접·직선 30km) 거주·경작
②양도일부터 1년(수용은 2년) 내 새 농지 취득 ③취득일부터 1년 내 새 농지소재지 거주·경작 개시
④종전+신규 **합산 경작 8년 이상** ⑤신규 농지 면적이 종전의 2/3 이상 **또는** 가액이 1/2 이상.
자경농지(§69)와 달리 양도 시점에 8년을 채울 필요가 없고 사후 합산으로 채운다 — 대신 미달 시
§70④⑤로 2개월 내 추징 + 이자상당액. 재촌 요건 기간도 §69(8년)와 달리 4년이라 혼동 주의.
감면율 100%여도 §133①2호가목의 **5개 과세기간 1억원** 한도가 별도로 걸린다 —
judge_transfer_reduction_limit에 넘겨 최종 감면세액을 확정할 것.
ParametersJSON Schema
NameRequiredDescriptionDefault
estimated_taxNo
transfer_dateYes
new_area_ratioNo
new_price_ratioNo
is_expropriationNo
new_acquire_dateYes
farming_start_dateNo
prior_reside_yearsYes
total_farming_yearsNo

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, and the description adds real behavioral context beyond them: the post-hoc clawback under §70④⑤ (2-month 추징 plus interest-equivalent) if requirements fall short, and the separate cap requiring a hand-off tool. This discloses consequences of the judgment that no annotation conveys.

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-loads the legal basis, then uses a clean numbered ①-⑤ enumeration of requirements followed by the §69 contrast and cap hand-off. Dense but every section earns its place; slightly heavy but proportionate to a complex multi-criteria judgment.

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 should hint at results; it instead confirms the workflow (hand off to judge_transfer_reduction_limit for final reduction) and enumerates all conditional branches, which is complete enough for correct invocation even though the return shape is not described.

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

Parameters3/5

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

Schema coverage is 0% across 9 parameters, so the description must carry the burden. It implicitly maps several inputs to legal requirements (4+ years residence, 1-year/2-year expropriation acquisition window, area 2/3 or value 1/2 ratios, combined 8-year farming), but never names or directly documents parameters such as estimate_tax or total_farming_years, leaving mapping inferential.

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 (judge/판정) and resource (farmland substitution exemption, Special Taxation Act §70) with the governing article and decree. It explicitly distinguishes this tool from the sibling judge_farmland_reduction (§69) by noting the residence-period and 8-year-timing differences, so an agent can route without opening either schema.

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?

Provides clear usage context: it lists the five qualification conditions (①-⑤) and states that even at a 100% rate the §133①2호가목 5-period/100M cap applies, directing the agent to judge_transfer_reduction_limit for the final figure. It does not frame explicit when-not-to-use exclusions beyond the §69 contrast, so it stops short of the top mark.

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

judge_farmland_reductionSelf-cultivated farmland exemptionA
Read-onlyIdempotent
Inspect

Self-cultivated farmland capital gains exemption after 8 years (Special Taxation Act art. 69).

조특법 §69 자경농지 양도세 100% 감면 판정 (시행령 §66 요건 포함).

⚠️실질 관문은 8년이 아니라 소득 요건이다 — yearly_incomes([{"연도","사업소득금액","총급여액"}])의
합계가 **3,700만원 이상인 과세기간은 경작기간에서 제외**된다(영 §66⑭, 농업·임업·부동산임대·
농가부업소득 제외). 겸업 농민은 달력상 8년을 채워도 탈락하므로 연도별 소득자료가 필요하다.
재촌 요건은 농지 소재 시·군·구 / 연접 시·군·구 / 직선 30km 이내(영 §66①).
주거·상업·공업지역 편입 후 3년이 지나면 감면 배제(영 §66④).
감면율 100%여도 §133① 한도로 잘리므로 judge_transfer_reduction_limit에 넘길 것.
ParametersJSON Schema
NameRequiredDescriptionDefault
estimated_taxNo
transfer_dateNo
direct_farmingYes
yearly_incomesNo
zone_converted_dateNo
resides_within_scopeYes
farming_years_claimedYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already establish that this is a safe, read-only, idempotent judgment. The description adds substantial behavioral context beyond that: the real gate is the income test, high-income periods are excluded from farming years, residence must be within a radius, and converted zones are disqualified after three years.

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 purpose and warning are front-loaded, then supporting legal conditions and routing follow. The English and Korean statements of purpose are somewhat redundant, but the density is justified by the complexity of the tax judgment.

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?

For a seven-parameter legal judgment tool with no output schema, the description supplies the core statutory requirements, data needed for the income test, and the next tool to invoke. It still does not describe the return value or explain every parameter, leaving modest gaps.

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 description coverage is 0%, so the description must carry the burden. It defines yearly_incomes as a list of year/income objects and explains the legal meaning of direct_farming, resides_within_scope, farming_years_claimed, and zone_converted_date. It does not clarify transfer_date or estimated_tax as fully, so it stops short of full coverage.

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 (exemption judgment) and resource (self-cultivated farmland capital gains exemption after 8 years), cites the governing statute, and names the downstream sibling judge_transfer_reduction_limit. An agent can identify the tool's legal target without opening the schema.

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?

Provides a clear next-step routing rule: pass results to judge_transfer_reduction_limit because the 100% reduction is capped by §133①. It also describes key eligibility gates and exclusions, but does not explicitly compare against other sibling judgment tools such as judge_farmland_daeto or judge_exemption_requirements.

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

judge_first_home_acquisition_reliefFirst-home acquisition reliefA
Read-onlyIdempotent
Inspect

First-time home buyer acquisition tax relief (Local Tax Special Act art. 36-3).

지특법 §36의3 생애최초 주택 구입 취득세 감면 (2028-12-31까지).

본인·배우자 무주택 + 취득당시가액 12억 이하 유상거래(부담부증여 제외) + 본인 거주 목적,
미성년자 제외. 감면 한도는 **300만원**(전용 60㎡ 이하 공동주택—아파트 제외·도시형생활주택·
구분 다가구 60㎡ 호, 인구감소지역 주택) / **200만원**(그 외) 2분류 — 2024-12-31·2025-12-31
개정으로 생긴 구분이라 '200만원 단일'로 알려진 통설과 다르다.
추징: 3개월 내 상시거주 미개시, 또는 3년 내 매각·증여·**임대**(전세 끼는 경로 차단).
ParametersJSON Schema
NameRequiredDescriptionDefault
is_minorNo
co_ownersNo
house_typeNo
computed_taxNo
acquired_dateNo
no_home_historyNo
acquisition_priceYes
exclusive_area_m2No
in_depopulation_areaNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safe/read-only/idempotent profile, but the description adds real domain behavior beyond structure: the 2028-12-31 sunset, the two-tier 300만원 vs 200만원 cap split, and the clawback triggers (3개월 상시거주 미개시, 3년 내 매각·증여·임대). It usefully warns that the result can conflict with the widely-known '200만원 단일' view. It stops short of describing what the judgment output looks like.

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?

Purpose and legal citation are front-loaded, and the dense rule/limit/clawback sentences each carry load. The bilingual, heavily parenthetical compression is efficient but borders on terse, and mixing English headers with Korean body text adds mild parsing friction.

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?

For a 9-param judgment tool with no output schema, the description is thorough on the substantive rule, deadline, cap tiers, and clawback. The gaps are the absence of any return-value description and no explanation of how co_owners and computed_tax factor into the judgment.

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

Parameters3/5

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

Schema description coverage is 0% across 9 params, so the description must carry meaning. It supplies thresholds that map to no_home_history (무주택), acquisition_price (12억 이하), is_minor (미성년자 제외), exclusive_area_m2 (60㎡), in_depopulation_area, and acquired_date (2028 기한). However, co_owners, computed_tax, and house_type are never addressed, and no parameter is referenced by name, leaving the mapping to inference.

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 states a specific verb (judge) and resource (first-home acquisition tax relief) anchored to statute '지특법 §36의3', and the eligibility framing (무주택 생애최초, 12억 이하, 거주 목적) clearly distinguishes it from siblings like calc_acquisition_tax and judge_acquisition_homes_and_rate.

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

Usage Guidelines3/5

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

The description lays out the substantive eligibility conditions of the relief but never says when an agent should call this versus alternatives such as screen_relief_candidates, judge_exemption_requirements, or calc_acquisition_tax. Usage is implied by context rather than routed explicitly.

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

judge_fund_plan_requirementFunding plan requirementA
Read-onlyIdempotent
Inspect

Whether a home purchase must file a funding plan and supporting documents.

주택 매수 자금조달계획서 제출·증빙 판정 (거래신고령 별표 1 — 법인 전부 / 6억↑ / 규제지역 소재, 투기과열지구·허가구역은 증빙 첨부). 현행 서식(별지 1호의3) 항목 안내 포함.

ParametersJSON Schema
NameRequiredDescriptionDefault
actual_priceYes
in_permit_zoneNo
is_corporationNo
in_adjusted_areaNo
in_speculation_zoneNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the safe read-only, idempotent, closed-world profile, so the bar is lower. The description adds real value beyond that: it cites the legal basis (거래신고령 별표 1), the concrete triggering conditions, and notes that output includes guidance on current form (별지 1호의3) items. It still does not describe the shape of the judgment result itself.

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?

Purpose is front-loaded in one clean English sentence, and the supplementary rule detail carries real information rather than filler. The second paragraph is dense with slashes and nested parentheses, which slightly hurts readability but introduces no waste.

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

Completeness3/5

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

For a 5-parameter judgment tool with no output schema, the description covers the intent and the statutory criteria but leaves the parameter semantics and the exact return shape (boolean? structured guidance?) to inference. It is adequate to understand the tool, not fully sufficient to invoke it confidently.

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

Parameters3/5

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

Schema coverage is 0% across 5 parameters, so the description must compensate. The criteria text indirectly maps onto every parameter (corporation → is_corporation, 6억↑ → actual_price, 규제지역 → in_adjusted_area, 투기과열지구 → in_speculation_zone, 허가구역 → in_permit_zone), but the mapping is only inferable and nothing explains units, defaults, or the boolean flags.

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 first sentence names a specific verb and resource: determining 'whether a home purchase must file a funding plan and supporting documents.' That is clearly distinguishable from the calc_* and other judge_* siblings. It stops short of naming any alternative tool, so it is clear but not explicitly differentiated.

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

Usage Guidelines3/5

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

The Korean parenthetical supplies the triggering criteria (corporation / 600M+ / regulated area / speculation·permit zones), which implicitly frames the tool's scope but is rule substance rather than when-to-use guidance. It never states when to reach for this tool versus another judge_* or calc_* sibling.

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

judge_inherited_house_priorityPriority inherited homeA
Read-onlyIdempotent
Inspect

When a decedent held several homes, pick the single inherited home that gets the special treatment.

피상속인 다주택 시 선순위 상속주택 1개 확정 (영 §155② 1~4호).

상속주택이 2개 이상이면 순위규정에 따른 1주택만 비과세 특례 대상이다 —
①피상속인 소유기간 최장 ②동률 시 피상속인 거주기간 최장 ③소유·거주 모두 동률 시
상속개시 당시 거주 ④거주사실 없고 소유기간 동률이면 기준시가 최고(동률이면 상속인 선택).
houses 원소: {"라벨", "피상속인_소유기간_년", "피상속인_거주기간_년",
"상속개시당시_거주": bool, "기준시가": 원}. 결과를 judge_155_special(kind="상속주택")의
is_first_priority_inherited로 전달한다. 선순위 아닌 나머지는 주택수에 그대로 산입.
ParametersJSON Schema
NameRequiredDescriptionDefault
housesYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive/closed-world, so the bar is lower. Beyond that, the description discloses the full deterministic ranking algorithm including the final tie-break by inheritor choice, and adds a genuine side-effect note that non-priority homes still count toward house count — real behavioral context the annotations do not carry.

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 a one-sentence English summary before the detailed Korean rules, and every element (ranking rules, input shape, downstream handoff) earns its place. Slight redundancy between the English and Korean statements of the same concept keeps it from a 5.

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?

No output schema exists, but the description explains what the result feeds into (is_first_priority_inherited) and covers the ranking logic and input format an agent needs. A single-param pure-function tool is essentially fully specified; only per-field typing/units for the input elements remain implicit.

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 description coverage is 0% and the single 'houses' parameter is an untyped object array, so the description must compensate — and it does, enumerating the element keys (라벨, 피상속인_소유기간_년, 피상속인_거주기간_년, 상속개시당시_거주: bool, 기준시가: 원). It meaningfully fills the gap, though it doesn't state units beyond 원 or required-ness per key.

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 sentence names a specific verb and resource ('pick the single inherited home that gets the special treatment') and the Korean adds the exact legal basis (영 §155② 1~4호). It clearly distinguishes itself from the sibling judge_155_special by naming it as the downstream consumer, so an agent can route correctly without opening the schema.

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?

It states the triggering condition ('when a decedent held several homes' / '상속주택이 2개 이상이면') and specifies the integration point ('결과를 judge_155_special(kind="상속주택")의 is_first_priority_inherited로 전달한다'). No explicit when-not or alternative-selection guidance, but the multiple-home precondition is a clear context signal.

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

judge_jongbu_one_home_statusHolding tax one-home statusA
Read-onlyIdempotent
Inspect

Comprehensive holding tax: is the owner deemed a one-household-one-home holder (attached land, temporary, inherited, cheap provincial home).

종부세 1세대1주택자 간주 4유형 판정 (법 §8④·영 §4의2 — 부속토지/일시적 3년/상속
5년·지분40%·6억(3억)/지방저가 4억). 간주 인정 시 12억 공제·세액공제 입구, 과표 합산은
유지·9/16~30 신청제 플래그 포함. base_date는 과세기준일(YYYY-MM-DD, 보통 매년 6/1).
ParametersJSON Schema
NameRequiredDescriptionDefault
base_dateNo
other_homesYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds genuine behavior beyond them by noting the downstream consequence (12억 deduction and tax-credit entry), that the tax base aggregation is retained, and that a 9/16~30 application flag is included. It does not describe the shape of the verdict returned.

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

Conciseness3/5

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

The English purpose sentence is front-loaded and clear, but the Korean block is dense with terse legal shorthand (6억(3억)/지방저가 4억, §8④·영 §4의2) that reads as notes rather than agent-facing guidance. Duplicated bilingual content costs more space than it earns.

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

Completeness3/5

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

For a complex, no-output-schema judgment tool with one required parameter entirely undocumented in the schema, the description covers legal basis and consequences but leaves the caller guessing about the other_homes payload and the verdict format. Adequate but with a clear gap on the core input.

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

Parameters3/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 does explain base_date well (과세기준일, YYYY-MM-DD, typically June 1) and supplies its default meaning, but other_homes — the sole required parameter — is not described at all, leaving its expected object structure and what counts as a 'home' undefined.

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 states a specific verb and resource: judging whether an owner is deemed a one-household-one-home holder, and enumerates the four types (attached land, temporary, inherited, cheap provincial home). This distinguishes it reasonably from siblings like judge_temporary_two_homes or judge_same_household, though it never explicitly names which sibling covers the overlapping sub-cases.

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

Usage Guidelines3/5

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

The description implies usage through legal context (statutory citations and the note that a positive finding is the entry point to the 12억 deduction and tax credit), but it does not state when to call this versus judge_temporary_two_homes, judge_same_household, or judge_inherited_house_priority. Guidance is inferable rather than explicit.

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

judge_reconstruction_membership_transferReconstruction membership transferA
Read-onlyIdempotent
Inspect

Can a redevelopment/reconstruction association membership be transferred in a speculation zone (Urban Renewal Act art. 39).

트리③ — 재건축·재개발 조합원 지위양도 제한 판정 (도시정비법 §39②③·영 §37①③).

투기과열지구에서 재건축=조합설립인가 후/재개발=관리처분인가 후 양수자는 조합원 불가
(증여 포함·상속·이혼 제외). 탈락 시 매수인은 §39③→§73 준용 손실보상 절차 대상 —
세액 계산보다 앞선 매도가능성 선필터. in_speculation_overheated_zone은
search_law(admrul, "투기과열지구 지정")로 거래 시점 재확인.
transfer_notice_done=True(이전고시 후)면 제한 실효 — 단 1+1 소형 60㎡↓는
is_one_plus_one_small로 §76①7호라목 3년 전매금지 별도 판정.
transferor_reason: ""|세대이전|상속주택이전|해외이주|지분형주택|공공재개발양도|
1세대1주택_소유10년_거주5년|시행령예외(decree_reason으로 §37③ 6세목 지정).
ParametersJSON Schema
NameRequiredDescriptionDefault
owned_yearsNo
project_typeYes
decree_reasonNo
resided_yearsNo
transferor_reasonNo
transfer_notice_doneNo
is_one_plus_one_smallNo
association_establishedNo
is_partial_share_transferNo
management_disposal_approvedNo
in_speculation_overheated_zoneYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered. The description goes well beyond that by disclosing the legal logic: the prohibition triggers (재건축 after 조합설립인가, 재개발 after 관리처분인가), the exceptions (gift included, inheritance/divorce excluded), the consequence for the buyer (§39③→§73 loss-compensation route), and the fact that transfer_notice_done=True voids the restriction. This is rich domain behavior an agent could not infer from annotations.

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

Conciseness3/5

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

The purpose question is front-loaded and every clause maps to a rule or parameter, so there is little outright waste. However the body is a dense run-on block mixing Korean and English with stacked legal citations, lacking clear delineation between the rule, the exceptions, and the per-parameter guidance, which hurts scanability.

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?

For a complex, 11-parameter legal judgment with no output schema and no annotation-level detail, the description supplies the core decision rules, exceptions, timing effects and parameter routing needed to invoke it. It does not describe the shape of the returned judgment, which is the main remaining gap given the absence of an output schema.

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 description coverage is 0% across 11 parameters, so the description carries the full burden and does substantial work: it explains the role of in_speculation_overheated_zone, transfer_notice_done, is_one_plus_one_small (§76①7호라목 3-year resale ban), and enumerates the allowed transferor_reason values including the 시행령예외 case that drives decree_reason (§37③). Parameters such as owned_years, resided_years, association_established, management_disposal_approved and is_partial_share_transfer are only implied, so coverage is partial rather than complete.

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 states a specific judgment task — whether a reconstruction/redevelopment association membership can be transferred in a speculation zone, citing Urban Renewal Act art. 39. This is a concrete verb+resource that separates it from the calc_* and other judge_* siblings. The mixed Korean/English phrasing and legal-citation density add some friction but the purpose remains identifiable.

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?

Explicitly frames the tool as a 'salability pre-filter that comes before tax calculation' (세액 계산보다 앞선 매도가능성 선필터), which tells the agent when to call it relative to the tax siblings. It also routes the agent to search_law(admrul, '투기과열지구 지정') to verify the zone at transaction time. No explicit when-not conditions are given, 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.

judge_rental_income_taxRental income tax statusA
Read-onlyIdempotent
Inspect

Residential rental income tax: taxable, home count, deemed rent, separate vs global taxation.

트리⑤ — 주택임대 종합소득세 판정 (소법 §12·§14③7호·§25①·§64의2, 17차 순회 15노드).

비과세(1주택·12억 이하·국내) → 주택수(**부부합산**, 영 §8의2③4호 — 양도세 1세대·종부세 개인별과
다른 제5의 기준) → 총수입금액(월세+간주임대료) → 2천만원 분기 → 분리과세 14% 계산 순으로 판정한다.
tax_year는 필수 — §25①2호 2주택 간주임대료가 **2026-01-01 시행**(부칙 제19933호 §1제1호)이고
정기예금이자율이 연례 개정 상수라 과세연도로 답이 갈린다.
own_homes/spouse_homes 원소: {"라벨","기준시가","전용면적","공동소유","지분율","최대지분자",
"연임대수입","전대","국외"}. deposits 원소: {"라벨","보증금","일수","기준시가","전용면적"}.
총수입 2천만원 초과(종합과세)는 추계경비가 국세청 고시 영역이라 '판단불가'로 정직 반환한다.
ParametersJSON Schema
NameRequiredDescriptionDefault
depositsNo
tax_yearYes
own_homesYes
spouse_homesNo
tax_reductionNo
financial_incomeNo
business_registeredNo
monthly_rent_revenueNo
deposit_interest_rateNo
registered_rent_revenueNo
other_comprehensive_incomeNo
revenue_before_registrationNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare the safe read-only/idempotent profile, so the bar is lower, and the description adds genuinely useful behavior: total income over 20M KRW is honestly returned as '판단불가' because 추계경비 is an NTS-notice area. It also discloses that answers hinge on tax_year due to a 2026-01-01 statutory effective date and an annually revised deposit interest-rate constant.

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

Conciseness3/5

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

The topic is front-loaded, but the body is a dense bilingual block mixing an English fragment with untranslated Korean legal shorthand, which hurts parseability. Every clause carries domain content, but the structure could be far more scannable for an agent.

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

Completeness3/5

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

For a 12-parameter, no-output-schema, high-complexity judgment tool, the description covers the decision flow and nested-object shapes well but leaves most scalar inputs unexplained and only partially sketches the return shape (beyond the '판단불가' case). It is adequate but has clear gaps.

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

Parameters3/5

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

Schema coverage is 0% for 12 parameters, so the description must compensate and it partly does: it documents the element keys for own_homes/spouse_homes (라벨, 기준시가, 전용면적, 공동소유, 지분율, 최대지분자, 연임대수입, 전대, 국외) and deposits (라벨, 보증금, 일수, 기준시가, 전용면적), and justifies tax_year being required. It does not explain the eight scalar params (tax_reduction, financial_income, business_registered, monthly_rent_revenue, deposit_interest_rate, registered_rent_revenue, other_comprehensive_income, revenue_before_registration).

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 states a specific verb+resource ('Residential rental income tax: taxable, home count, deemed rent, separate vs global taxation') and the Korean tree label (주택임대 종합소득세 판정) makes clear this is a judgment tool. It is distinguishable from the sibling calc_rental_income_tax by framing itself as a 판정/decision-tree rather than a calculation, though it never explicitly names that sibling.

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

Usage Guidelines3/5

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

The description lays out the internal decision sequence (비과세 → 주택수 → 총수입금액 → 2천만원 분기 → 분리과세), which implies when each branch applies. However it never states when to prefer this tool over alternatives like calc_rental_income_tax or judge_small_house_rental_reduction, leaving routing to inference.

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

judge_same_householdSame household testA
Read-onlyIdempotent
Inspect

Decide whether two people form one household (1세대) for income, acquisition or holding tax purposes.

트리① — 본인과 특정인의 1세대 동일성 판정 (소법 §88 6호·영 §152의3 / 지방령 §28의3 / 종부령 §1의2).

relationship: 배우자|직계존속|직계비속|직계존비속의 배우자|형제자매|기타(이모·조카 등 —
가족 범위 밖은 세목 불문 별도 세대).

⚠️ 세대 정의는 세목마다 다르다 — tax_kind를 반드시 맞춰 넣을 것:
  양도세는 같은 주소 + 생계동일(실질), 취득세는 세대별 주민등록표 기준.
  사실혼 배우자는 취득세에서 명문 제외(is_de_facto_marriage).
  미혼 30세 미만 자녀는 취득세에서 주민등록을 분리해도 같은 세대이고, 별도세대가 되려면
  **직전 12개월** 소득이 중위소득 40% 이상이어야 한다(양도세는 측정기간 명문 없음).
  동거봉양 합가 별도세대 예외는 취득세가 **65세**, 양도세 §155④ 특례는 60세다
  (merged_for_parent_care·descendant_age로 취득세 판정).
legally_divorced_but_living_together: 법률상 이혼했으나 사실상 이혼으로 보기 어려운 관계는
  배우자에 포함된다(소법 §88 6호 괄호 — 위장이혼 차단).
ParametersJSON Schema
NameRequiredDescriptionDefault
ageNo
is_minorNo
tax_kindNo양도세
relationshipYes
descendant_ageNo
lives_togetherNo
is_married_or_wasNo
shares_livelihoodNo
is_de_facto_marriageNo
merged_for_parent_careNo
income_over_40pct_medianNo
legally_divorced_but_living_togetherNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds substantial non-obvious behavior beyond that: the definition varies per tax kind, de facto marriage is expressly excluded in acquisition tax, under-30 unmarried children need 12-month income above 40% median, and the care-merge exception age differs (65 vs 60). This is real decision context, though it omits anything about the shape of the verdict returned.

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 purpose is front-loaded, and the tax_kind warning plus the per-tax bullet structure make it scannable despite being dense. It is somewhat verbose and mixes legal citations with operational guidance, but no sentence is clearly wasteful.

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?

Given 12 parameters, a single required field, no output schema, and the complexity of a tax-law household test, the description supplies the essential per-tax rules and exceptions. It is close to complete for the inputs, with the main gap being that it never states what the judgment returns.

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

Parameters3/5

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

Schema description coverage is 0% across 12 parameters, so the description must compensate and does so only partially. It clarifies relationship values, tax_kind, is_de_facto_marriage, merged_for_parent_care, descendant_age, and legally_divorced_but_living_together, but leaves age, is_minor, lives_together, is_married_or_was, and shares_livelihood unexplained.

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+resource: 'Decide whether two people form one household (1세대) for income, acquisition or holding tax purposes.' It scopes the tool precisely (household-identity determination) and cites the governing legal bases, which lets an agent distinguish it from status-oriented siblings like judge_jongbu_one_home_status or judge_155_special.

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?

It gives explicit conditional guidance: tax_kind must be matched, and it details how the household definition diverges between 양도세 (same address + shared livelihood) and 취득세 (resident-registration table). It does not, however, name sibling tools as alternatives for adjacent determinations, so it stops short of full routing guidance.

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

judge_second_home_exclusionHomes excluded from the countA
Read-onlyIdempotent
Inspect

Homes excluded from the home count: rural/hometown house, depopulation-area house, unsold completed house.

주택수 제외 특례 3형제 — 조특법 §99의4(농어촌·고향주택) / §71의2(인구감소지역) / §98의9(준공후미분양).

kind: "농어촌주택"|"고향주택"|"인구감소지역주택"|"인구감소관심지역주택"|"준공후미분양주택".
준공후미분양주택(§98의9·영 §98의8): 취득 2024-01-10~**2026-12-31 일몰**, 수도권 밖 소재,
전용 85㎡ 이하·취득가액 7억 이하, 양도자가 사업주체·분양사업자·시공자, 양수자가 최초 계약자,
사용검사일까지 분양계약이 없어 선착순 공급된 것 — exclusive_area_m2·acquisition_price·
first_contract·seller_is_supplier로 판정한다.
농어촌주택: 취득 2003-08-01~2028-12-31, 기준시가 3억(한옥 4억) 이하, 3년 보유,
일반주택과 같거나 연접한 읍·면·동이면 배제(§99의4③).
인구감소지역주택: 취득 2024-01-04~**2026-12-31 일몰**, 기준시가 수도권 밖 9억 /
수도권 인구감소지역·인구감소관심지역 4억, 종전 주택과 같은 시·군·구면 배제(영 §68의2①).
종부세 1세대1주택자 간주는 9/16~9/30 별도 신청 필요(§71의2②③).
두 특례 모두 특례 주택을 **나중에** 취득해야 적용된다.
ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
is_hanokNo
same_sigunguNo
acquired_dateYes
holding_yearsNo
first_contractNo
in_capital_areaNo
published_priceYes
acquisition_priceNo
exclusive_area_m2No
seller_is_supplierNo
same_or_adjacent_areaNo
acquired_after_general_homeNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: sunset windows (e.g. §98의9 to 2026-12-31), the requirement that the special home be acquired after the general home, and the separate 9/16~9/30 filing for the one-home deemed status. It does not describe the response shape, which holds it below 5.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a dense bilingual wall of statutory citations that mixes Korean and English and is hard to scan. Most sentences carry real content, yet the structure is not clean enough to count as efficient.

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?

For a 13-parameter judgment tool with no output schema and no schema descriptions, the description is fairly complete: it lays out the legal framework per kind, the price/date/area thresholds, and the acquisition-order precondition. It does not explain the returned judgment or failure behavior, leaving a small gap.

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 description must carry the load, and it does: it gives the kind enum values verbatim (which the schema omits), and names exclusive_area_m2, acquisition_price, first_contract, seller_is_supplier as the determiners of 준공후미분양, plus thresholds tied to published_price, is_hanok, holding_years, in_capital_area, same_sigungu, same_or_adjacent_area, and acquired_after_general_home. Mapping is embedded in prose rather than per-parameter, so not a full 5.

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 description names a specific determination (homes excluded from the home count) and enumerates the four qualifying kinds (농어촌주택, 고향주택, 인구감소지역주택, 준공후미분양주택), so an agent knows what this tool judges. It does not explicitly route away from siblings like count_transfer_homes or judge_temporary_two_homes, but the resource is clear.

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

Usage Guidelines3/5

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

Usage is implied through the statutory conditions attached to each kind rather than stated directly; there is no explicit 'use this when / not when' sentence and no named alternative among the many sibling judge_/count_ tools. The conditions do let an agent infer applicability, which is why this lands at minimum-viable rather than lower.

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

judge_small_house_rental_reductionSmall-home landlord reductionA
Read-onlyIdempotent
Inspect

Small-home landlord income tax reduction (Special Taxation Act art. 96): eligibility and rate.

조특법 §96 소형주택 임대사업자 세액감면 — 트리⑤ calc_rental_income_tax의 tax_reduction 산출.

감면율: 1호 임대 30%(공공지원·장기일반민간임대주택 75%) / 2호 이상 20%(장기일반등 50%).
요건(영 §96): 소법 §168 사업자등록 + 민특법 §5 등록 + 국민주택규모 85㎡ 이하 +
**임대개시일 기준시가 6억 이하** + 임대료 증가율 5% 이하. 일몰 2028-12-31.
기준시가 6억·85㎡는 소법 §64의2 분리과세의 등록임대주택 요건에는 없다 — 필요경비 60%·
공제 400만원은 되는데 §96 감면은 안 되는 구간이 존재한다.
추징: 4년(장기일반 10년) 미만 임대 시 감면세액 + 이자상당가산액.
ParametersJSON Schema
NameRequiredDescriptionDefault
tax_yearYes
rental_monthsNo
exclusive_area_m2No
rent_increase_rateNo
rental_house_countYes
business_registeredNo
is_long_term_generalNo
minteukbeop_registeredNo
published_price_at_startNo
income_tax_before_reductionNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only carry the safety profile (readOnly, idempotent, non-destructive, closed-world), while the description adds real behavioral substance: the differential reduction rates (30%/75% for 1 house, 20%/50% for 2+), the statutory eligibility conditions, the 2028-12-31 sunset, and the clawback rule (reduction + interest-equivalent add-back if the rental period falls short of 4/10 years). This is context an agent cannot get from the structured fields.

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 English purpose is front-loaded, followed by statutory anchors, rates, requirements, sunset, a notable carve-out, and clawback — every line carries information, no filler. The bilingual duplication is defensible because the Korean statute terms are the operative references, though it makes the block denser than strictly necessary.

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?

For a 10-parameter, output-schema-less statutory judgment tool, the description covers eligibility, rate structure, temporal validity, and consequences well. It still leaves the return shape (boolean vs. rate vs. amount) and a couple of parameter units/functions unstated, which matters more here because there is no output schema to fall back on.

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 description coverage is 0% across 10 parameters, so the description must carry the meaning — and it largely does, mapping requirements onto params: business registration (§168), minteukbeop registration (§5), 85㎡ cap (exclusive_area_m2), ₩600M standard price (published_price_at_start), 5% rent-increase cap (rent_increase_rate), 1 vs 2+ houses (rental_house_count), long-term-general flag, and the sunset (tax_year). Gaps remain: income_tax_before_reduction is never explained, rental_months is only implied via the 4/10-year clawback, and the unit convention for rent_increase_rate (percent vs decimal) is ambiguous.

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 verb+resource (judge eligibility and rate of the small-home landlord income tax reduction) and pins it to Special Taxation Act art. 96, so an agent can tell it apart from the generic calc_rental_income_tax / judge_rental_income_tax siblings. It also states its role explicitly as the tax_reduction branch (⑤) of calc_rental_income_tax.

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?

It says when the tool applies (the §96 registration, 85㎡, ₩600M standard-price, 5% rent-increase conditions) and draws a genuinely useful boundary against 소법 §64의2 separation taxation — cases where the 60% expense deduction / ₩4M credit applies but the §96 reduction does not. It does not, however, explicitly route the agent between this tool and judge_rental_income_tax or calc_rental_income_tax as separate callable alternatives.

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

judge_temporary_two_homesTemporary two-home exemptionA
Read-onlyIdempotent
Inspect

Temporary two-home exemption test: one-year gap, disposal deadline, move-in requirement (Income Tax Decree art. 155(1)).

§155① 일시적 2주택 판정 — 1년 경과(§154①1~3호 해당 시 면제)·양도기한·전입요건.

양도기한은 양도일로 갈린다: 2023.1.12 이후 양도=3년 단일, 2022.5.10~2023.1.11=조정→조정 2년,
그 전=신규취득일 구간별 3년/2년/1년. 1년 구간(2019.12.17 이후 조정→조정 취득)은 신규주택
취득일부터 1년 내 세대전원 이사·전입신고가 추가 요건이며, 전소유자 임대차가 남아 있으면
종료일까지(취득일+2년 한도) 연장된다. 과거 양도분 경정청구·세무조사 상담에 필수.

조정지역 여부는 judge_adjusted_area_at_date로 각 취득일·양도일 기준 확인 후 넣을 것.
날짜는 YYYY-MM-DD. prev_sale_date 생략 시 현행법(3년) 데드라인만 산출. 취득세 일시적
2주택(영 §28의5, 1년 요건 없음)과 별개라는 세목 분기 플래그 포함.
ParametersJSON Schema
NameRequiredDescriptionDefault
new_acquiredYes
moved_in_dateNo
prev_acquiredYes
prev_sale_dateNo
new_contract_dateNo
moved_in_within_1yNo
new_in_adjusted_areaNo
one_year_rule_waivedNo
prev_meets_exemptionNo
prev_in_adjusted_areaNo
new_home_tenant_lease_endNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish a safe read (readOnlyHint, idempotentHint, non-destructive), so the bar is lower. The description adds substantive behavior: the disposal deadline varies by sale date (3-year vs graduated 2/1-year rules), the lease-end extension cap (acquisition+2 years), and that omitting prev_sale_date yields only the current-law 3-year deadline, plus a tax-category branch flag in the result.

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

Conciseness3/5

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

The first sentence front-loads purpose and legal basis well, but the body is dense, mixes English and Korean mid-stream, and packs a large amount of statutory detail. Most content is relevant to a complex rule, yet the sizing and language switching make it harder to scan than necessary.

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

Completeness3/5

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

There is no output schema and 11 parameters at 0% coverage, so the description must be self-sufficient. It covers the core legal logic and the return flag, but does not fully define all inputs or clarify what the judgment returns in each branch, leaving gaps for an agent to resolve.

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

Parameters3/5

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

Schema description coverage is 0% across 11 parameters, so the description must carry the burden. It adds the date format (YYYY-MM-DD), explains prev_sale_date omission behavior, and points to judge_adjusted_area_at_date for the two adjusted-area booleans, but leaves several parameters (prev_meets_exemption, one_year_rule_waived, moved_in_within_1y, new_contract_date) without direct semantic definition, so compensation is only partial.

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 judgment task (temporary two-home exemption test) and enumerates its components: one-year gap, disposal deadline, move-in requirement, with the exact legal citation (Income Tax Decree art. 155(1)). It also distinguishes itself from the sibling acquisition-tax tool (취득세 일시적 2주택) as a separate tax category, so an agent can tell it apart from other judges without opening schemas.

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?

It explicitly routes the agent to a sibling: check adjusted-area status via judge_adjusted_area_at_date for each acquisition/sale date before invoking this tool. It also gives when-to-use context (past transfer correction claims and tax audit consultations). It lacks an explicit when-not condition, but the prerequisite and scenario guidance are clear.

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

judge_transfer_reduction_limitRelief caps and gatesA
Read-onlyIdempotent
Inspect

Capital gains relief gate: disqualification, annual and five-year relief caps, choose-one rules (Restriction of Special Taxation Act art. 129/133/127).

양도세 감면 공통 게이트 — 조특법 §129 배제 → §133 종합한도 → §127⑦ 택일 (19차 순회).

reductions 각 원소: {"조문": "69"|"70"|"77"|"77의2"|..., "감면세액": int, "라벨": str}.
한도는 두 바스켓으로 나뉘며 서로 잠식하지 않는다 — ①§33·43·66~69·69의2~4·70·85의10:
과세기간 1억/5개 과세기간 2억(§70 단독은 5년 1억) ②**공익수용 §77·77의2·77의3: 과세기간 2억/
5개 과세기간 3억**(2025-03-14 신설 §133② — 종전 1억/2억 인용은 수용 건에서 오답).
감면율이 100%여도 이 한도로 잘리므로 '전액 비과세' 안내를 막는 것이 이 함수의 역할이다.
다운·업 계약이나 미등기양도면 감면 전면 배제(§129).
ParametersJSON Schema
NameRequiredDescriptionDefault
tax_yearYes
reductionsYes
unregistered_transferNo
prior_4year_reductionsNo
contract_price_mismatchNo
prior_4year_taking_reductionsNo

TDQS

A3.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly/idempotent/non-destructive), and the description goes well beyond them: it discloses the two non-offsetting cap baskets with exact amounts, the 2025-03-14 §133② change and that older 1억/2억 citations are wrong for expropriation, and that down/up contracts or unregistered transfers cause full exclusion under §129. This is exactly the domain behavior an agent could not infer from structured fields.

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

Conciseness3/5

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

The English lead line front-loads the purpose, which is good, but the body is dense bilingual prose with parentheticals, a numbered gate arrow chain, and inline JSON. Most content earns its place, yet the mixed-language, run-on framing could be tightened.

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?

For a complex, high-stakes tax judgment tool with no output schema and 0% schema coverage, the description supplies substantial domain context (caps, baskets, exclusions, statutory basis). The remaining gap is coverage of the prior-4-year carry-in parameters, but overall an agent has enough to call it correctly.

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

Parameters3/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 parameter meaning. It documents the reductions element shape (조문/감면세액/라벨) and ties unregistered_transfer and contract_price_mismatch to full-exclusion behavior, which is genuine added value. It says nothing about tax_year, prior_4year_reductions, or prior_4year_taking_reductions despite these being central to the five-year cap logic.

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?

States a specific verb+resource: it judges whether transfer-tax reliefs survive the §129 exclusion, §133 aggregate caps, and §127⑦ choose-one gates. It also flags its own role ('전액 비과세 안내를 막는 것'), which is more specific than a bare restatement. It does not, however, explicitly say how it differs from siblings like judge_transfer_reliefs or screen_relief_candidates.

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

Usage Guidelines3/5

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

The gating flow (§129 → §133 → §127⑦) implies when the tool applies, and the disclaimer about 'full exemption' guidance hints at its role. But there is no explicit when-to-use vs when-not, and no named alternative among the many judge_* siblings that also deal with transfer reliefs.

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

judge_transfer_reliefsCapital gains reliefsA
Read-onlyIdempotent
Inspect

Decide capital gains exemptions, heavy-rate exclusions, long-term deduction table and high-value apportionment, producing calc_transfer_tax inputs.

양도세 비과세·중과·장특공·고가주택 안분 판정 → calc_transfer_tax 인자 생성.

소득세법 §89·§95(표1/표2·중과 시 장특공 배제)·§104⑦·영 §159의4·§160·한시배제(영
§167의3①12호의2)를 한 번에 판정한다. 세대·주택수(트리①②)와 비과세 요건 충족 여부는
입력으로 받는다 — 이 함수는 그 출력을 세율·공제로 변환하는 판정 레이어.

sale_date를 반드시 넣을 것 — 중과 가산세율이 양도일로 갈린다. 2021-06-01 이후 양도분은
2주택 +20%p / 3주택 +30%p이고 **그 전은 +10%p / +20%p**다(법 17477호 부칙 §3).
중과 한시배제(영 §167의3①12호의2)는 **창(窓)이다** — 2022-05-10 이후 ~ 2026-05-09까지
양도분이고, **보유기간 2년 이상**이 대전제다. 그 기간을 넘겨 양도하더라도 2026-05-09까지
매매계약을 체결하고 계약금을 받았다면 계약일부터 4개월(일부 지역 6개월) 내 양도까지
배제된다 — contract_date·deposit_received·contract_months_limit로 판정한다(나·다목).
반환의 surcharge_rate·long_term_deduction_rate를 calc_transfer_tax에 그대로 넘기고,
과세대상_양도차익_비율(<1이면 고가주택)은 양도차익에 곱해 안분한다.
ParametersJSON Schema
NameRequiredDescriptionDefault
sale_dateNo
sale_priceYes
contract_dateNo
holding_yearsYes
residing_yearsYes
adjusted_at_saleNo
deposit_receivedNo
heavy_home_countNo
contract_months_limitNo
is_one_household_one_homeYes
meets_exemption_requirementsNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds substantial context: date-dependent surcharge rates (2021-06-01 split), the limited-window exclusion rule, the 4-month (or 6-month) contract-date carve-out, and the 2-year holding prerequisite. It also documents return fields (surcharge_rate, long_term_deduction_rate, 과세대상_양도차익_비율), which matters since no output schema exists.

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

Conciseness3/5

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

Content is front-loaded with the purpose before the legal detail, which is good, but the opening English and Korean sentences restate the same purpose verbatim, and the body is dense with statute citations. Duplication and volume dilute an otherwise well-ordered description.

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

Completeness3/5

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

For an 11-parameter tool with no output schema and no schema descriptions, the description covers the temporal rules and return values well but omits behavior for several parameters (adjusted_at_sale, sale_price, residing_years). An agent can call it correctly on the date path but not fully on the others.

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

Parameters3/5

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

Schema description coverage is 0% across 11 params, so the description must carry the load and only partially does: it explains sale_date (mandatory), contract_date, deposit_received, contract_months_limit, holding_years implicitly, and the exemption/home-count inputs. Parameters such as adjusted_at_sale, sale_price, and residing_years are never given meaning, leaving real gaps.

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 (decide) and named resources (exemptions, heavy-rate exclusions, long-term deduction, high-value apportionment) and defines its role as a 판정 레이어 that converts household/home-count output into rates and deductions. This boundary statement distinguishes it from siblings like calc_transfer_tax (which consumes its output) and the count/judge prerequisite tools.

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?

Explicitly states that household/home count and exemption-requirement satisfaction are received as inputs rather than computed here, implying the correct call order relative to count_heavy_homes / judge_exemption_requirements. It also mandates sale_date, but does not name alternative sibling tools to prefer in edge cases.

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

screen_relief_candidatesRelief candidates to checkA
Read-onlyIdempotent
Inspect

List the tax reliefs and special cases worth checking for a given situation, to avoid omissions.

조특법·지특법 감면/특례 중 이 상담에서 검토해야 할 조문을 뽑는다 (누락 방지용).

**판정이 아니다.** judge_*/calc_*는 A등급 법문 노드로 결론을 내지만 이 툴은
C등급 기계추출 색인이라 "여기를 봐라"까지만 한다. 감면 누락은 고객이 세금을 더
내는 방향이라 틀린 답보다 조용히 손해가 나므로, 상담 마무리 전에 한 번 돌려
빠진 감면이 없는지 확인하는 용도다. 걸린 조문은 반드시 원문·판정툴로 재확인한다.

Args:
    tax_types: 세목 쉼표 구분 — "양도소득세,취득세,재산세,종합부동산세,증여세" 등
    situation: 상담 문장 그대로 넣어도 된다. 생활어(첫집·다둥이·수용보상)를
        법령 용어 계열로 확장해 매칭한다
    assets: 자산 쉼표 구분 — "주택,농지,토지,임대주택,미분양주택,분양권·입주권" 등
    include_expired: 본문 기한이 전부 과거인 조문까지 포함(경정청구·과거 취득분 검토 시)
    include_decree: 시행령 조문까지 포함(요건 상세를 볼 때. 기본은 법 조문만)
    include_corporate: 법인·기관 전용 조문까지 포함
    limit: 최대 표시 건수
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
assetsNo
situationNo
tax_typesNo
include_decreeNo
include_expiredNo
include_corporateNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations, it discloses the critical behavioral caveat: this is a C-grade machine-extracted index, not authoritative, and omissions cause silent client harm (over-payment), so every hit must be re-verified. This reliability/quality disclosure is exactly what annotations cannot convey.

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 English one-liner followed by detailed Korean guidance; each part earns its place. However, the bilingual rendering conveys the same purpose twice, adding length and some parsing friction for an agent, so it is slightly redundant rather than maximally tight.

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, no required params, and a complex domain, the description still supplies purpose, usage timing, reliability caveats, and full parameter semantics. An agent has everything needed to invoke it correctly and interpret its output cautiously.

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 does so for all 7 parameters: tax_types (comma-separated 사목), situation (free text; living language expanded to legal terms), assets, and the three boolean includes with their concrete conditions, plus limit. It adds 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 (list), resource (tax reliefs and special cases), and scope (worth checking for a given situation, to avoid omissions). It explicitly differentiates itself from the judge_*/calc_* siblings by noting those produce conclusions with A-grade law nodes while this is a C-grade index that only points to where to look.

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?

Explicitly says '판정이 아니다' (this is not a determination), directs the agent to judge_*/calc_* for conclusions, and prescribes exactly when to run it (before finishing a consultation to catch missed reliefs) and how to treat results (re-verify hits with original text and judgment tools). Clear when-to-use plus the alternative tools, no inference needed.

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

search_lawSearch Korean statutesA
Read-onlyIdempotent
Inspect

Search Korean statutes and administrative rules on the national law database (law.go.kr). Needs LAW_OC key.

법제처 국가법령정보에서 법령 또는 행정규칙(고시)을 검색한다.

Args:
    query: 검색할 법령명/고시명 또는 키워드
    target: "law"(법률/시행령/시행규칙, 기본값) 또는 "admrul"(행정규칙 — 투기과열지구
            지정, 조정대상지역 지정 등 부처 고시가 여기 포함됨) 또는 "ordin"(자치법규)
    display: 결과 개수 (최대 100)

검색 결과의 "법령일련번호"(law) 또는 "행정규칙일련번호"(admrul) 값을
get_law_detail의 doc_id로 넘기면 조문/고시 원문 전체를 볼 수 있다.
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
targetNolaw
displayNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, open world), so the bar is lower. The description adds genuinely useful context beyond them: it discloses the LAW_OC key requirement (an auth precondition) and describes the specific result fields to harvest, which is not in the annotations. It omits rate-limit and pagination behavior.

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 purpose and a well-organized Args block plus workflow note. It loses a partial point for the English/Korean duplication, where the second sentence restates the first verbatim rather than adding information.

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 compensates by naming the key result identifiers and explaining how they feed get_law_detail, which is exactly what an agent needs for chaining. Nothing critical is missing for a three-parameter search tool.

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 description coverage is 0%, so the description must carry the full burden, and it largely does: it documents all three parameters, expanding target's enum values (law/admrul/ordin) with concrete meanings and noting display's maximum of 100. Only query and display remain fairly thin, but the target coverage is the substantive gap-filler.

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 (검색/search), the exact resource (Korean statutes, administrative rules, and ordinances), and names the database (law.go.kr). It also implicitly distinguishes itself from get_law_detail, the full-text sibling, by positioning this as the search step of a two-step workflow.

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 clear context for when to use it and explicitly routes downstream work to get_law_detail by telling the agent which result field to pass as doc_id. The target parameter's three modes are explained with real examples, though there is no explicit 'when not to use' or alternative search tool callout.

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

search_tax_rulingsSearch tax rulingsA
Read-onlyIdempotent
Inspect

Search official Korean tax rulings and tribunal decisions used as regression answers.

세무 해석례·심판례를 검색한다 — 판정 쟁점플래그의 D·E급 근거 탐색용 (법제처 공동활용).

source: "국세청해석"(ntsCgmExpc, 17,534건 — 예규 회신, 요건 판정의 1순위 원료) |
"조세심판원"(ttSpecialDecc, 12,109건 — 재결례, 경정청구·가액 다툼 중심) |
"행안부해석"(moisCgmExpc — 취득세·재산세) | "법령해석례"(expc — 법제처·기재부).

⚠️검색 시맨틱이 소스마다 다름(2026-08-16 실측): 조세심판원은 공백 토큰=AND,
국세청·행안부는 공백=OR라 수치가 부풀려짐 — 국세청·행안부는 따옴표 구문 단독으로
질의할 것(예: '"상생임대"'). 이 함수는 국세청·행안부에 공백 포함 쿼리가 오면 자동으로
따옴표를 씌운다. 결과의 상세링크는 국세법령정보시스템(taxlaw) — 상담 출력에는 링크만 낸다.
(검증용 본문 수집은 scripts/fetch_rulings.py 담당. 저작권법 §7 3호로 심판례·판결문은
보호받지 못하는 저작물이라 보관·인용 가능 — 종전 '수집 금지' 유보는 2026-08-23 해소.)
예규 승격 플로우: 전언 → 이 검색으로 안건번호·회신일 대조 → D급 확정.
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
sourceNo국세청해석
displayNo

TDQS

A4.1/5.0
Behavior5/5

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

Far exceeds the annotations (readOnly/idempotent/openWorld). It discloses backend-specific search semantics (조세심판원 AND vs 국세청·행안부 OR), that the tool silently auto-quotes whitespace queries for 국세청·행안부, and that detailed results are links into the taxlaw system rather than full text. That automatic query rewriting is exactly the kind of behavior an agent must know before invoking.

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

Conciseness3/5

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

Purpose is front-loaded, but the body is a dense run-on mixing English and Korean, internal jargon ('판정 쟁점플래그'), record counts (17,534건), measurement dates, and a copyright-law aside about 저작권법 §7 that does nothing to help an agent call the tool. The critical AND/OR warning is buried mid-paragraph behind an emoji.

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

Completeness3/5

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

No output schema exists, so the description should characterize returns; it only says results are link-only into 국세법령정보시스템, without describing result fields or pagination. Combined with the undocumented 'display' parameter, this is adequate but leaves an agent guessing about the response shape.

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

Parameters3/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 does so well for 'source' (four named corpora with counts and subject matter) and 'query' (semantics differ per source, auto-quoting), but 'display' — the result-count parameter — is never mentioned anywhere. Partial compensation only.

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 (search Korean tax rulings / tribunal decisions) and enumerates the four distinct corpora by name and ID (ntsCgmExpc, ttSpecialDecc, moisCgmExpc, expc), which distinguishes it from siblings like search_law and get_law_detail. An agent can tell immediately what domain this covers without opening the schema.

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 explicit usage context ('판정 쟁점플래그의 D·E급 근거 탐색용') and an end-to-end workflow (전언 → 안건번호·회신일 대조 → D급 확정), and routes body retrieval elsewhere ('검증용 본문 수집은 scripts/fetch_rulings.py 담당'). However, it never names a sibling tool as a when-to-use alternative (e.g., search_law for statutes) or states when not to use this tool.

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.

  1. 43 tool updates
    • First observedcalc_acquisition_tax
    • First observedcalc_attached_land_limit
    • First observedcalc_dealer_comparative_tax
    • First observedcalc_gift_tax
    • First observedcalc_inheritance_tax
    • First observedcalc_jongbu_tax
    • First observedcalc_property_tax
    • First observedcalc_rental_income_tax
    • First observedcalc_transfer_tax
    • First observedcount_heavy_homes
    • First observedcount_transfer_homes
    • First observedestimate_reconstruction_levy
    • First observedformat_consultation_output
    • First observedformat_consultation_report
    • First observedget_law_detail
    • First observedget_local_tax_ordinances
    • First observedget_relief_catalog_entry
    • First observedjudge_155_special
    • First observedjudge_156_3_from_portfolio
    • First observedjudge_156_3_special
    • First observedjudge_acquisition_homes_and_rate
    • First observedjudge_adjusted_area_at_date
    • First observedjudge_business_dealer_status
    • First observedjudge_co_inherited_owner
    • First observedjudge_exemption_requirements
    • First observedjudge_family_loan
    • First observedjudge_farmland_daeto
    • First observedjudge_farmland_reduction
    • First observedjudge_first_home_acquisition_relief
    • First observedjudge_fund_plan_requirement
    • First observedjudge_inherited_house_priority
    • First observedjudge_jongbu_one_home_status
    • First observedjudge_reconstruction_membership_transfer
    • First observedjudge_rental_income_tax
    • First observedjudge_same_household
    • First observedjudge_second_home_exclusion
    • First observedjudge_small_house_rental_reduction
    • First observedjudge_temporary_two_homes
    • First observedjudge_transfer_reduction_limit
    • First observedjudge_transfer_reliefs
    • First observedscreen_relief_candidates
    • First observedsearch_law
    • First observedsearch_tax_rulings

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    11 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources