Skip to main content
Glama

payroll.kr_housing_loan_deduction

Read-onlyIdempotent

Calculates the deductible amount of long-term housing mortgage interest for Korean income tax using payment, term, fixed-rate, and non-grace inputs, applying statutory limits by term and loan type.

Instructions

장기주택저당차입금 이자상환액 소득공제(소득세법 제52조제5항·제6항)의 공제 대상액을 구한다. 이자상환액(원 문자열), 상환기간(년), 고정금리와 비거치식 여부로 한도(15년 이상 고정금리+비거치식 2천만원 등)를 정해 그 이하만 인정하며, 10년 미만과 10~15년 변동·거치식은 0이다(limit_key 는 빈 문자열). 소득공제액이지 세액이 아니므로 세율을 곱해야 한다.

Input Schema

NameRequiredDescriptionDefault
yearYes
as_ofNo
term_yearsYes
is_non_graceYes
interest_paidYes
is_fixed_rateYes
include_proposedNo

Output Schema

NameRequiredDescriptionDefault
_metaNo서버가 붙이는 영수증(integrity), 엔진, 힌트
limitYes
traceYes계산 근거(tool, formula, inputs, steps, output)
limit_keyYes
interest_paidYes
policy_sha256Yes
policy_sourceYes
policy_statusYes
policy_versionYes적용된 정책 문서의 식별 정보
policy_audit_idYes
policy_citationsYes정책의 근거 조문
deductible_amountYes
policy_effective_toYes
policy_effective_dateYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds substantive behavior beyond that: how the cap is derived from term/fixed-rate/non-grace status, that terms under 10 years and variable/grace 10-15 year cases return 0, and that limit_key is then an empty string — non-obvious domain behavior the schema 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?

The description is dense and front-loaded, with the purpose first and the limit/edge-case rules after. The middle sentence strings several clauses together and is harder to parse than necessary, but no sentence is filler.

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?

An output schema exists, so return values needn't be spelled out, and the description is strong on the deduction logic itself. Still, for a 7-parameter, 5-required tax tool with zero schema documentation, leaving year/as_of/include_proposed unexplained means an agent can call it correctly only by guessing at three inputs.

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 explain interest_paid (as a won-denominated string), term_years, is_fixed_rate, and is_non_grace with real semantics. But year, as_of, and include_proposed (3 of 7 params) get no mention in either schema or description, leaving a meaningful gap for a fully unannotated schema.

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

Purpose5/5

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

The description names a specific calculation ('장기주택저당차입금 이자상환액 소득공제의 공제 대상액을 구한다') and even cites the governing statute (소득세법 제52조제5항·제6항), so it is unmistakable against sibling payroll/tax tools. The final clause distinguishes a deduction amount from tax owed, which prevents a common misreading.

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 a useful downstream instruction — '소득공제액이지 세액이 아니므로 세율을 곱해야 한다' — implying this feeds into a tax computation step. However, it never names an alternative or states when a caller should choose this over tax.kr_income or payroll.kr_year_end_tax_settlement, so routing is left to inference.

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

Deploy Server

Other Tools