Skip to main content
Glama
seunguk3

local-tax-mcp

by seunguk3

local-tax-mcp

한국 지방세 전용 MCP 서버. 지방세기본법·지방세법·지방세특례제한법·지방세징수법과 그 하위법령, 조세심판원 지방세 재결례, 행정안전부 유권해석, 지자체 감면조례, 「지방세관계법 운영 예규」를 다룬다.

CI

왜 만들었나

국세는 국세청 국세법령정보시스템(NTS)을 쓰는 MCP가 커버하지만, 지방세는 공백이었다. NTS DB에는 지방세 사건이 사실상 없다. 2026-07 실측:

축

NTS

본 MCP

"취득세 중과세 대도시" 심판례

7건 (지방세 세목은 2006·2011년 감사원 건 2개뿐)

115건

취득세 전체 심판례

—

10,042건, 최신 2026.06.30

지방세 기본통칙

2018년판 (stale)

「지방세관계법 운영 예규」 2023.07.01, 현행 Y

행안부 유권해석

없음

3,369건, 최신 2026.05.26

감면조례

없음

법제처 자치법규 전량

데이터는 원래 다 공개돼 있었다. 인덱싱이 없었을 뿐이다.

Related MCP server: korean-law-mcp

도구

법령

도구

역할

get_local_tax_article

지방세 관계법 시점별 조문 + 현행본 자동 대조

trace_local_tax_application

부칙(시행일·적용례·경과조치)으로 적용시기 판정

search_reduction_ordinance

지자체 감면조례·세율조례 검색

get_ordinance_text

자치법규 본문

해석·사례

도구

역할

search_local_tax_decisions

조세심판원 지방세 재결례 검색

get_local_tax_decision

재결례 전문(세목·재결요지·참조결정·주문·이유)

search_moi_interpretation

행정안전부 유권해석 검색

get_moi_interpretation

유권해석 전문(답변요지·질의요지·회신내용)

get_operation_ruling

「지방세관계법 운영 예규」 조문 역인덱스

verify_local_tax_citations

조심 사건번호 실존 일괄 검증

설계상 방어한 실측 결함

  1. 법령명 오매칭 — lawSearch(query="지방세법")은 부분매칭으로 지방교부세법을 함께 돌려준다. 첫 행을 취하는 구현은 여기 걸린다. 정규 법령명 + 법령ID 완전일치로 해소하고, 지방세 관계법이 아니면 폴백 없이 거부한다.

  2. 정렬 기본값 — DRF 기본은 정확도순이라 "취득세 중과세 대도시"에 2013~2015년 건이 먼저 올라온다. sort=ddes(의결일 내림차순)로 뒤집었다.

  3. 시행본 페이지네이션 — 지방세법은 시행본이 많아 한 페이지(40건)로는 최고(最古) 시행일이 2020-01-01에서 끊긴다(2019년 귀속 조회가 NOT_FOUND). 요청 시점까지 페이지를 넘긴다.

  4. 사건부호 표기 변형 — 조심 2026지0349 / 조심2014지0066 / 조심-2026-중-0897 모두 인식. 지방세 부호는 지와 방(조심 2026방0388 실측).

  5. 적용시기 함정 — 지방세법 §106③(사실상 현황 과세)은 2021-12-28 신설이다. 2019년 시행본의 ③항은 '신탁재산 합산방법'으로 내용이 전혀 다르다(스모크 테스트로 검증). 과거 귀속 경정에서 현행 조문을 원용하면 오답이므로 항상 현행본과 대조해 경고를 붙인다.

  6. 조례 누락 — 지방세는 조례가 탄력세율·감면을 정한다(지방세법 §111③, 지방세특례제한법 §4). 법률·시행령만 읽고 세액을 말하면 틀린다. 서버 instructions에 조례 확인 의무를 넣었다.

설치

npm install
npm run build
npm test

등록:

claude mcp add --scope user local-tax -e LAW_OC=<법제처 OC 인증키> -- node /path/to/local-tax-mcp/build/index.js

인증키는 법제처 Open API에서 발급한다(이메일 ID 앞부분). 행정안전부 유권해석 도구는 인증키 없이 동작한다.

실 API 스모크 테스트:

LAW_OC=<키> npm run smoke

데이터 출처

  • 법제처 국가법령정보 Open API — 조문·부칙·자치법규·행정규칙·조세심판원 재결례

  • 한국지방세연구원 지방세 법령정보시스템(OLTA) — 행정안전부 유권해석

OLTA는 공개 API가 없어 HTML을 읽는다. robots.txt를 확인해 Disallow 경로 (/e-book/, /search/, /mobile/, /video/)는 요청하지 않으며, 사용하는 /explainInfo/는 허용 대상이다. 요청 간 최소 1.2초 간격을 두고 User-Agent에 신원을 밝힌다.

면책

본 도구는 공개 법령·판례 데이터를 조회할 뿐이며 세무 자문이 아니다. 산출물에 인용하기 전 반드시 원문을 확인하고 verify_local_tax_citations로 실존을 검증하라.

라이선스

MIT (Copyright © 2026 seunguk3).

src/moleg.ts의 법제처 DRF XML 파싱 헬퍼는 taxlaw-nts-mcp(MIT, © 2026 kim-go-chon)에서 이식했다. 원 라이선스 전문은 LICENSE의 THIRD-PARTY NOTICES 절에 함께 수록했다.

Available Tools

10 tools
get_local_tax_articleA

지방세 관계법의 시점별 조문 본문. year/efYd로 그 시점 시행본을 선택하고 현행본과 자동 대조해 변경·삭제를 경고한다. 지원 법령: 지방세기본법, 지방세기본법 시행령, 지방세기본법 시행규칙, 지방세법, 지방세법 시행령, 지방세법 시행규칙, 지방세특례제한법, 지방세특례제한법 시행령, 지방세특례제한법 시행규칙, 지방세징수법, 지방세징수법 시행령. 지방세 관계법이 아니면 폴백 없이 거부한다(법제처 검색의 부분매칭으로 '지방세법'이 '지방교부세법'으로 잡히는 사고를 차단).

ParametersJSON Schema
NameRequiredDescriptionDefault
joYes조문. 예: 제106조, 제26조의4
ocNo
mstNo특정 시행본 MST 직접 지정
efYdNo기준 시행일 YYYYMMDD. year보다 우선
yearNo그 해 말(12.31) 시점 시행본 선택. 예: 2019
lawNameYes법령명 또는 약칭(지세법·지특법·지기령 등)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that year/efYd selects the version in effect at a given time, that the tool automatically compares with the current version and warns about changes/deletions, and that it refuses non-local-tax laws to prevent partial-matching errors. This adds substantial context beyond the schema, though it does not describe the exact return format or edge cases like missing versions.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and the supported-law list is presented as a compact enumeration. Every sentence provides either scope, usage, or behavioral context with no redundant content, making it both concise and well-structured.

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?

Despite having 6 parameters and no output schema, the description covers the primary purpose, version selection logic, comparison behavior, supported law scope, and rejection policy. It does not explain the 'oc' parameter (which also lacks a schema description) or the precise return structure, but the phrase '조문 본문' and the warning behavior make the output fairly predictable, so the description is highly 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 high at 83%, giving a baseline of 3. The description adds meaning by explaining that year/efYd select the version in effect at that point ('year/efYd로 그 시점 시행본을 선택') and by listing acceptable lawName values (supported laws). This enriches the understanding of these key parameters beyond the schema alone.

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?

Description opens with '지방세 관계법의 시점별 조문 본문' (time-specific article text of local tax laws), which specifies the exact resource and the time-scoped retrieval. It enumerates the supported local tax laws, clearly differentiating this tool from sibling tools like get_ordinance_text (ordinance text) or get_local_tax_decision (decisions).

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 that only the listed local tax laws are supported and explicitly says non-local-tax laws are rejected without fallback ('지방세 관계법이 아니면 폴백 없이 거부한다'), providing clear exclusion criteria. It does not, however, name alternative tools for non-local-tax queries, so explicit alternatives are missing.

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

get_local_tax_decisionB

조세심판원 재결례 전문(세목·재결요지·참조결정·주문·이유). search 결과의 [ID]를 넣는다.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes특별행정심판재결례일련번호
ocNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses what's returned (full text with listed fields) but doesn't describe safety profile (read-only presumably), error behavior, whether partial data can be retrieved, or any rate limits. For a retrieval tool this is a moderate gap—it's clearly a read operation but lacks behavioral detail.

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 a compact single sentence that conveys the resource, its contents, and usage in Korean. No wasted words. However, the enclosed field list in parentheses is somewhat dense and could be structured better for parsing.

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 retrieval tool with a single required param, this is reasonably complete. There's no output schema, so the description's list of returned fields (세목·재결요지·참조결정·주문·이유) serves as the output documentation, which is valuable. The undocumented 'oc' param and lack of behavioral notes leave some 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 50%: the 'id' parameter has a Korean description (특별행정심판재결례일련번호) but 'oc' has none. The description explains that 'id' should come from search results, which adds context beyond the schema's bare field name. However, the 'oc' parameter remains entirely undocumented in both the schema and the description, and the description doesn't clarify its purpose/optionality.

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 it returns the full text of a 조세심판원 재결례 (tax tribunal decision) including specific fields (세목, 재결요지, 참조결정, 주문, 이유). This clearly identifies the verb (get/retrieve) and resource (full decision text). It doesn't explicitly distinguish from siblings like search_local_tax_decisions, though the distinction is implied by the contrast with 'search'.

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

Usage Guidelines4/5

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

The description provides clear usage guidance: input the [ID] obtained from search results. This tells the agent how to use the tool (after a search) and implies it's the follow-up step to search_local_tax_decisions. Explicit exclusion of alternatives isn't stated, but the search→get workflow is clearly conveyed.

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

get_moi_interpretationB

행정안전부 유권해석 전문(답변요지·질의요지·회신내용). search_moi_interpretation 결과의 [ID]를 넣는다.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesOLTA 문서 ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It confirms it's a read/retrieval operation but doesn't describe what happens with invalid/missing IDs, whether the returned document contains the complete official text, authentication requirements, or any rate limits. For a detail-fetch tool, the lack of these details is a moderate gap.

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 a single concise sentence that states the resource, the content components, and the required id origin. Efficient with no wasted words, though slightly under-specified in behavioral transparency.

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 single-parameter detail-fetch tool with no output schema and no annotations, the description is minimally adequate. It tells the agent what it returns and where to source the id, which is enough for basic use. However, it doesn't describe the return format (structured JSON vs raw text) or error behavior, and lacks the behavioral depth expected without annotations.

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 100% for the single id parameter (OLTA 문서 ID). The description adds the valuable context that the id comes from search_moi_interpretation results, which gives it provenance beyond the schema. However, no additional format/syntax details are provided beyond what the schema already states.

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 the tool retrieves the full text of an MOI (행정안전부) interpretation including 답변요지, 질의요지, 회신내용. It clearly identifies the resource and that it's the detail view paired with search_moi_interpretation. It could more explicitly distinguish from get_local_tax_decision, though the Korean MCP shows this is specifically for MOI interpretations.

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 explicitly instructs to use the [ID] from search_moi_interpretation results, which creates a clear usage pattern where search comes first then detail retrieval. This differentiates from sibling get_local_tax_decision by its linkage to the specific search tool, though it doesn't explicitly state when NOT to use it.

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

get_operation_rulingA

행정안전부 「지방세관계법 운영 예규」 조회. 국세의 기본통칙에 대응한다. jo(조문번호)로 역인덱스 조회가 가능해 '지방세법 제106조 관련 예규 전부'를 한 번에 뽑는다. NTS의 지방세 기본통칙은 2018년판이라 stale하므로 이쪽을 정본으로 쓴다.

ParametersJSON Schema
NameRequiredDescriptionDefault
joNo법 조문번호 필터. 예: 제106조
ocNo
limitNo최대 항목 수 (기본 20)
queryNo제목·본문 키워드
lawNameNo장(章) 기준 법령명 필터. 예: 지방세법

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It reveals a key behavioral trait: reverse index lookup by jo allows pulling all relevant rulings for an article at once. It also frames the tool as more current than NTS. But it doesn't mention response format, pagination behavior, authentication needs, or any side effects. This is adequate but leaves gaps.

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 four sentences, each serving a distinct purpose: resource identification, functional equivalence, key feature, and usage guidance. It is dense but not wordy. No fluff, though it could arguably be tightened by merging the NTS comparison into a single clause.

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 query tool with 5 parameters and no output schema, the description covers the core purpose, a distinctive capability, and usage preference. It is competent but not exhaustive: it doesn't describe return values, error conditions, or the undocumented 'oc' parameter. The schema helps, but the absence of output schema means the description should have filled more 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 80%, so baseline is 3. The description adds semantic value for 'jo' by explicitly explaining its reverse index capability and giving the '지방세법 제106조' example. However, the 'oc' parameter remains entirely undocumented, and the description doesn't elaborate on 'limit' or 'query' beyond their schema descriptions.

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 clearly states the tool queries the Ministry of the Interior's 'Local Tax-Related Law Operation Rules' and mentions the reverse index lookup by article number, which differentiates it from general search tools. It also adds context by relating it to the National Tax Service's basic ruling. However, it doesn't explicitly contrast with sibling tools like search_moi_interpretation, so it's not a full 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 description explicitly advises using this tool over the NTS basic ruling because the NTS version is from 2018 and stale, providing clear contextual guidance. It doesn't mention exclusions or alternative sibling tools, but the 'use this as the authoritative version' instruction is a strong usage signal.

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

get_ordinance_textA

자치법규 본문 조회. search_reduction_ordinance 결과의 [자치법규일련번호]를 넣는다. jo로 특정 조문만 뽑을 수 있다.

ParametersJSON Schema
NameRequiredDescriptionDefault
joNo조문. 예: 제4조
ocNo
seqYes자치법규일련번호

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden of behavioral disclosure. It mentions retrieving text and filtering by article, but doesn't disclose return format, whether the full document is paginated, authorization needs, or error behavior when seq is invalid. For a read tool with zero annotations, this is thin.

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

Conciseness5/5

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

Two sentences, no filler. Each sentence earns its place: the first states the primary function, the second explains the article filter option. Zero 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 simple 1-3 parameter retrieval tool with no output schema and no annotations, the description gives the essential workflow (chain from search_reduction_ordinance, article filtering). However, the undocumented 'oc' parameter and absence of return-format details leave some gaps for an agent operating in a Korean regulatory context.

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 67% (seq and jo have descriptions, oc does not). The description adds meaning for seq (source field from search_reduction_ordinance) and jo (article filtering, example given in schema). oc remains undocumented in both schema and description. Partial improvement over schema but not 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 description states '자치법규 본문 조회' (retrieve autonomous law text body), a specific verb+resource. It distinguishes from siblings like search_reduction_ordinance by referencing its result field [자치법규일련번호]. However, it doesn't fully differentiate from other get/search tools in the sibling set.

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 says to feed in the [자치법규일련번호] from search_reduction_ordinance results, establishing a clear workflow chain. It also notes that 'jo' can extract specific articles. However, it doesn't mention when NOT to use it or name alternative tools explicitly.

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

search_local_tax_decisionsA

조세심판원 지방세 재결례 검색(법제처 DRF). 기본 정렬은 의결일 내림차순(ddes) — DRF 기본값인 정확도순은 10년 전 사건을 먼저 올려 실무 판단을 그르친다. 사건부호 '지'·'방'만 남기는 지방세 필터가 기본 ON.

ParametersJSON Schema
NameRequiredDescriptionDefault
ocNo법제처 OC 인증키(미입력 시 환경변수 LAW_OC)
pageNo페이지 (기본 1)
sortNo기본 ddes(의결일 내림차순)
queryYes검색어(사건명 대상). 예: 재산세 별도합산 부속토지
displayNo결과 수 1~100 (기본 10)
localTaxOnlyNo지방세 사건부호만 (기본 true)

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden, and it delivers substantial behavioral disclosure: default sorting behavior, why the default matters (DRF score ordering pitfalls), and the implicit local-tax filter default. This exceeds the baseline for a search tool without 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 compact, three sentences, and front-loaded with purpose before behavioral warnings. Every sentence earns its place, though the second sentence is dense with reasoning that could be slightly clearer. No wasted words.

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 search tool with 100% schema coverage and no output schema, the description adequately explains purpose, default behavior rationale, and filtering. It doesn't describe return format but output schema is absent, so a slightly richer note on results would be welcome. Overall complete enough for practical use.

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 100%, so the schema already documents all 6 parameters. The description adds context about the sort default justification (why ddes over score) and local-tax filter behavior, which adds value beyond schema. But it doesn't detail parameter syntax or constraints beyond what schema provides.

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 clearly states the tool searches 조세심판원 지방세 재결례 (local tax tribunal rulings) via 법제처 DRF. The specific verb+resource is clear and disambiguates from siblings like search_reduction_ordinance and search_moi_interpretation which target different document 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 provides strong usage context: it warns that the DRF default (score ordering) surfaces 10-year-old cases first and misleads practical judgment, explaining why default sort is ddes. It also notes the local-tax filter is ON by default. This gives clear behavioral guidance. However, it doesn't explicitly contrast with siblings beyond the domain distinction.

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

search_moi_interpretationA

행정안전부 지방세 유권해석 검색(한국지방세연구원 OLTA). 국세의 '질의회신'에 대응하는 축으로 법제처·NTS 어디에도 없다(3,369건 규모). 기본 정렬은 최근날짜순. 세목 필터 가능: 취득, 등록면허, 지역자원, 담배소비, 주민, 지방소득, 재산, 자동차, 기타, 지방세기본, 지방세징수, 체납처분, 포상금.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based, 10건 단위
sortNo기본 DATE(최근날짜순)
queryNo검색어. 예: 별도합산, 부담부증여
taxItemNo세목명 또는 코드. 예: 재산, 취득 (취득/등록면허/지역자원/담배소비/주민/지방소득/재산/자동차/기타/지방세기본/지방세징수/체납처분/포상금)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so the description carries the burden. It discloses the sort behavior (최근날짜순 default), the taxItem filter set, and the corpora size (3,369건) which adds context about scope. However, it doesn't disclose pagination behavior beyond '10건 단위' (already in schema), response format, or whether this is a read-only operation - though for a search tool the read-only nature is reasonably implied.

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 a compact two-sentence block that front-loads the core purpose, followed by sort and filter options. Every sentence earns its place - the 국세대비 positioning adds valuable context, and the taxItem enumeration is useful. Slightly dense but efficient for a tool with this many filter options.

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 search tool with 100% schema coverage and no output schema, the description covers the essential context: what it searches, how it differs from 국세 queries, default ordering, and filter options. It could add more about result format or how results relate to get_moi_interpretation sibling, but the coverage is adequate for the tool's moderate complexity.

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 100%, so the schema documents all 4 parameters. The description adds marginal value: query examples (별도합산, 부담부증여) and the complete taxItem enum list mirror code. It adds the sort default context (DATE) and page semantics but largely restates what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

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?

Description clearly states it searches 행정안전부 지방세 유권해석 via OLTA, distinguishes it from 국세 질의회신 (法濟處/NTS do not have it), gives the scale (3,369건), and lists it as a distinct axis vs siblings like search_local_tax_decisions. Verb+resource+scope is specific and distinguishes from sibling 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?

Description explains the default sort (DATE/최근날짜순), provides query examples (별도합산, 부담부증여), and details the taxItem filter options with all 13 세목 values. It differentiates from 국세 tools and gives clear when-to-use context, though it doesn't explicitly name sibling alternatives for exclusion.

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

search_reduction_ordinanceA

지자체 감면조례·세율조례 검색(법제처 자치법규). 지방세는 조례가 탄력세율과 감면을 정하므로(지방세법 §111③, 지방세특례제한법 §4) 세액 결론 전 반드시 확인해야 한다. 국세 MCP에는 없는 축이다. 지자체명을 지정하면 정확도가 크게 오른다.

ParametersJSON Schema
NameRequiredDescriptionDefault
ocNo
pageNo
queryNo추가 키워드. 예: 감면, 탄력세율, 재산세
regionNo지자체명. 예: 군포시, 경기도 군포시, 서울특별시 강남구
displayNo결과 수 1~100 (기본 20)
localTaxOnlyNo제명 기준 지방세 조례만 (기본 true)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the tool's role in the tax workflow and cites the legal basis, implying this is a read-only search operation. However, it doesn't describe pagination behavior, result format, whether results come from a live API vs cache, or rate/auth considerations. The legal-citation context adds value but behavioral traits beyond search semantics are not 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 description is a tight two-sentence paragraph that front-loads the core purpose (searching ordinances for tax reduction/rates) and packs legal citations and workflow context efficiently. The Korean text is dense but every clause earns its place, introducing the legal basis, the positioning relative to national tax tools, and the region-accuracy tip. Slightly dense for non-Korean readers but well-structured.

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?

This tool has meaningful complexity: no output schema, 6 parameters with 2 undocumented (oc, page), and no annotations. The description compensates reasonably by explaining the legal framework, workflow timing, and positioning against national tax tools. However, it doesn't clarify the return format (result count, fields), the meaning of oc and page parameters, or filtering semantics of localTaxOnly beyond schema text. Good for a search tool, but leaves the oc and page gaps 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 67% with 3 of 6 parameters described (query, region, display, localTaxOnly have descriptions; oc and page do not). The description adds strategic meaning beyond the schema: it emphasizes that specifying region (지자체명) significantly improves accuracy, which is the description's most actionable parameter guidance. It also frames query as keyword enrichment. However, oc and page remain undocumented in description, leaving some 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?

The description states a specific verb+resource: searching municipal reduction ordinances and tax rate ordinances in the legal affairs bureau (법제처) local ordinance database. It clearly distinguishes from national tax MCP tools by noting this is a missing axis (축) not covered by national tax tools. However, it doesn't explicitly name sibling alternatives for differentiation, and the purpose is embedded in a dense two-sentence paragraph.

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

Usage Guidelines4/5

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

The description provides clear context on when to use: before concluding tax amounts (세액 결론 전 반드시 확인), because local taxes rely on ordinances for flexible rates and exemptions per specific legal provisions (지방세법 §111③, 지방세특례제한법 §4). It notes specifying the municipality (지자체명) greatly improves accuracy. It doesn't explicitly state when NOT to use it or name alternatives, but the timing guidance is unusually specific and actionable.

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

trace_local_tax_applicationA

부칙(시행일·적용례·경과조치)으로 적용시기를 판정한다. 조문 본문은 '그 시점 시행 문구'까지만 알려주고, 어느 과세연도에 적용되는지는 부칙이 정한다. 과거 귀속연도 경정을 다룰 때 get_local_tax_article과 반드시 짝으로 호출할 것.

ParametersJSON Schema
NameRequiredDescriptionDefault
joNo대상 조문. 지정 시 그 조문을 언급하는 부칙만 우선
ocNo
yearNo판정하려는 과세연도. 예: 2019
limitNo부칙단위 최대 수 (기본 10)
queryNo부칙 본문 키워드 필터
lawNameYes법령명 또는 약칭

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It does disclose a key behavioral trait: the tool returns limited information (본문 only up to '그 시점 시행 문구', not the full application-year determination) and defers the actual application-year decision to the 부칙 logic. However, it doesn't describe return format, failure modes, or data-source boundaries. Moderate transparency given the zero-annotation context.

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 concise—three sentences covering purpose, scope boundary, and pairing requirement. Every sentence carries distinct value with no fluff. Slightly loses a point for mixing Korean technical legal terms in a way that's dense but still appropriate for the domain.

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 6 parameters with 83% schema coverage and no output schema, the description does well: it explains the tool's judgment logic, boundary (본문만 제공), and the critical pairing requirement. The undocumented 'oc' parameter and lack of return-format clarity are minor gaps for a tool of moderate complexity. Overall adequate for correct invocation.

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 83% (5 of 6 params documented: jo, year, limit, query, lawName; oc has no description). The description explains the jo param's priority logic (specified jo prioritizes relevant 부칙) and the year param's semantics (the 과세연도 to determine). This adds reasonable meaning but doesn't fully compensate for the undocumented 'oc' parameter, which remains opaque.

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

Purpose5/5

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

The description clearly states the verb ('판정한다' - determines), the resource (부칙/supplementary provisions of 시행일·적용례·경과조치), and the scope (which 과세연도 a provision applies to). It distinctly differentiates from siblings by explaining what it does NOT do (본문 only shows '그 시점 시행 문구', application year comes from 부칙) and names the sibling it pairs with (get_local_tax_article).

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: use it when determining application timing via supplementary provisions (부칙). It explicitly states the pairing requirement ('get_local_tax_article과 반드시 짝으로 호출할 것') when handling past attribution-year adjustments, which is a clear directive distinguishing it from alternatives. This is a strong explicit guideline.

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

verify_local_tax_citationsA

텍스트에서 조세심판원 지방세 사건번호(조심 지/방)를 추출해 실존 여부를 일괄 검증한다. 사유서·검토조서 확정 직전에 호출할 것.

ParametersJSON Schema
NameRequiredDescriptionDefault
ocNo
textYes검증할 텍스트(사유서 초안 등)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that it performs batch verification against real records (실존 여부), which is useful behavioral context. However, it doesn't describe output format, whether it's a read-only operation, rate limits, or what happens when citations don't exist—though the nature as a verification tool makes read-only fairly inferable.

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

Conciseness5/5

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

Two sentences, zero waste. Front-loaded with the core verification function and format pattern, then the usage timing. Every word earns its place.

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 verification tool that takes text and checks citations, the description adequately covers the core purpose and invocation timing. No output schema exists, so the description could ideally mention return format or what 'validated' output looks like. But given the relatively simple input (text) and clear purpose, this is nearly complete for the tool's complexity level.

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 50% (text documented, oc undocumented). The description adds context that 'text' is the content to verify (사유서 초안 등) and describes what it extracts. However, the 'oc' parameter is completely undocumented—the description doesn't clarify what 'oc' means, leaving the agent to guess. With only 50% coverage and a silent parameter, baseline 3 is appropriate but not higher.

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

Purpose5/5

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

The description clearly states it extracts local tax case numbers (조심 ****지****/****방**** format) from text and batch-verifies their real existence. The verb '일괄 검증한다' (batch verify) plus the specific resource (조세심판원 지방세 사건번호) makes it distinct from siblings like search_local_tax_decisions (searching) or get_local_tax_decision (retrieving one).

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?

States when to call it: '사유서·검토조서 확정 직전에 호출할 것' (call before finalizing reason documents/review memos). This gives clear timing context. However, it doesn't explicitly state when NOT to use it or name alternative tools, though the verification-vs-search distinction is fairly implied by the description.

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. 10 tool updatesv0.2.0
    • First observedget_local_tax_article
    • First observedget_local_tax_decision
    • First observedget_moi_interpretation
    • First observedget_operation_ruling
    • First observedget_ordinance_text
    • First observedsearch_local_tax_decisions
    • First observedsearch_moi_interpretation
    • First observedsearch_reduction_ordinance
    • First observedtrace_local_tax_application
    • First observedverify_local_tax_citations

TDQS

A4/5.0

Scored across 10 tools

Disambiguation5/5

Each tool pairs a distinct action (search/get/verify/trace) with a distinct object type (decisions, ordinances, interpretations, rulings, articles), so no two tools target the same resource and action. The search/get pairs are explicit and reference each other's ID fields, making selection straightforward.

Naming Consistency5/5

All tool names uniformly follow a snake_case verb_noun pattern with clear verbs like search_, get_, verify_, and trace_. Minor asymmetries such as search_reduction_ordinance vs get_ordinance_text are still predictable and do not create confusion.

Tool Count5/5

With 10 tools, the server is well-scoped for local-tax legal research. Each tool addresses a necessary step: searching and retrieving sources, verifying citations, or resolving temporal application, with no redundant or ornamental tools.

Completeness4/5

The server covers the core research lifecycle well: search and retrieval for decisions, MOI interpretations, and ordinances, plus statute article retrieval and temporal application analysis. The main gap is that operation rulings only have get_operation_ruling with no dedicated keyword search, though article-based inverse lookup partially compensates.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables searching and retrieving tax law data from the Korean National Tax Service database, including interpretations, rulings, forms, publications, and site menus via MCP tools.
    14
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server providing comprehensive Korean legal data access (laws, precedents, regulations, ordinances) with citation verification, temporal comparison, impact graphs, and legal research workflows.
    10
    6,607 npm
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    MCP server for Korean National Law Information. Enables searching and retrieving Korean laws, English-translated laws, administrative rules, court precedents, and constitutional decisions via 54 MCP tools.
    54
    -