Skip to main content
Glama

korean-tax-mcp — Korea Tax Law MCP (한국 세법)

데모: 법인세법 제52조 인용 해석 조회

PyPI MCP Registry License: MIT · English

Korea (South Korea) tax law for AI agents. Search National Tax Service rulings, court and Tax Tribunal decisions, basic rules, execution standards and Korea's tax treaties (96 countries); read statutes as in force on any past date with the Act → Decree → Rule chain; bundle everything that applied in a given tax year; and verify citations in a draft. 13 tools, read-only, no API key needed for lookups. Every tool supports lang="en" for English output (official English treaty and statute texts; machine-translated summaries via Upstage Solar). → English README


세법 쟁점을 AI에 물으면, 국세청 해석·판례·기본통칙·조문을 문서번호와 함께 가져옵니다.

이렇게 물어보세요

  • "법인세법 제52조를 인용한 최근 질의회신·판례 보여줘"

  • "폐업자에게 받은 세금계산서 매입세액 공제 — 관련 판례 본문 요약해줘"

  • "가지급금 인정이자 기본통칙이랑 집행기준 같이 보여줘"

  • "2023년 12월 31일 기준 법인세법 시행규칙 제43조 원문"

  • "대표이사 무상 대여, 인정이자 익금산입 논리 — 지지·반대 판례 대조해줘"

  • "2019 사업연도 기준으로 법인세법 제52조 관련 조문·통칙·해석 정리해줘"

  • "이 의견서 초안에 인용된 문서번호랑 조문 실제로 있는지 검증해줘"

  • "한미 조세조약에서 배당 제한세율 조문 보여줘"

  • "국세청 책자에서 정상가격 산출방법 설명 찾아줘"

설치 한 줄 — claude mcp add korean-tax -- uvx korean-tax-mcp

한국 세법 근거를 찾는 MCP 서버입니다. Claude·Cursor 같은 AI 도구에 붙이면 세법 쟁점을 물을 때 국세청 해석·판례·통칙·조문을 문서번호와 함께 찾아 줍니다.

  • 국세청 질의회신·과세기준자문·사전답변, 법원 판례·조세심판·이의·심사 — 최신순 검색과 본문 전문

  • 조문별 모음 — "법인세법 제52조를 인용한 해석·판례"

  • 국세 기본통칙 전문, 세법집행기준 항목

  • 시점별 조문 — 그날 시행 중이던 조문, 법률 → 시행령 → 시행규칙 위임 체계

  • 국세청 「2025 세법해석 사례집」 96건 색인

  • 사실관계 대조 — 우리 주장과 해석·판례가 지지·반대·구별 필요인지 (Upstage Solar)

설치

uv가 있으면 설치 없이 바로 실행됩니다.

{
  "mcpServers": {
    "korean-tax": {
      "command": "uvx",
      "args": ["korean-tax-mcp"],
      "env": { "LAW_OC": "법제처 OC(선택)", "UPSTAGE_API_KEY": "Upstage 키(선택)" }
    }
  }
}

Claude Code: claude mcp add korean-tax -- uvx korean-tax-mcp

Related MCP server: Korean Law MCP Server

키

키

필요한 도구

발급

없음

해석·판례 검색과 본문, 조문별 모음, 기본통칙, 집행기준, 사례집, 인용 검증(문서번호)

—

LAW_OC

law_article, research_issue, verify_citations(조문) — 시점별 조문·3단 위임

open.law.go.kr 무료 신청

UPSTAGE_API_KEY

compare_with_case (사실관계 대조)

console.upstage.ai

도구

도구

하는 일

search_tax_rulings

해석·판례 검색 (세목·종류·기간·최신순/정확도순)

get_tax_ruling

본문 전문 — 사실관계·질의·회신 / 주문·이유, 관련 조문

rulings_by_article

특정 조문을 인용한 해석·판례

basic_rules

국세 기본통칙 전문 (조문별)

execution_standards

세법집행기준 항목·쪽·링크

casebook_search

2025 세법해석 사례집 검색

law_article

시점별 조문 원문, 3단 위임, 통칙·집행기준 함께

compare_with_case

사실관계·논리 대조 (지지·반대·구별 필요)

research_issue

그 해 기준 묶음 — 사업연도·과세기간 종료일 기준 조문 3단·통칙·집행기준·해석, 현행 대비 조문 변경, 해석마다 당시 조문과 같은지 표시

tax_treaty

조세조약 96개국 조문 (국문·영문, 키워드로 배당·고정사업장 등)

search_nts_publications

국세청 발간책자 본문 검색 — 이전가격·APA 연차보고서·해외진출기업 세무 가이드 등

search_local_documents

내 PC의 PDF 검색 — OECD 이전가격 지침처럼 각자 받은 자료를 쪽 단위로

verify_citations

인용 검증 — 초안의 문서번호·조문이 실제로 있는지 (지어낸 번호·없는 조문 찾기)

함께 쓰면 좋은 MCP

일반 법령 검색·판례 전반·인용 실존 검증은 류승인 주무관님의 korean-law-mcp를 함께 붙여 쓰세요. korean-law-mcp가 법령 전반을, 이 서버가 세법 해석·판례·기본통칙·집행기준을 맡는 구성입니다.

{
  "mcpServers": {
    "korean-law": { "...": "korean-law-mcp 설정은 해당 저장소 README 참고" },
    "korean-tax": { "command": "uvx", "args": ["korean-tax-mcp"] }
  }
}

유의

  • 해석·판례는 회신·선고 당시 법 기준입니다. 적용 연도 조문(law_article의 as_of)과 대조하세요.

  • 국세법령정보시스템(taxlaw.nts.go.kr)의 공개 조회를 사용합니다. 서버 부담을 줄이려고 같은 요청은 1일 캐시, 호출 간격은 0.5초 이상입니다.

  • 집행기준 본문은 책자(PDF)로만 제공돼 항목·쪽·링크까지만 돌려줍니다.

  • 도구 결과는 검토 보조 자료이며 세무 자문이 아닙니다.

출처

국세청 국세법령정보시스템 · 법제처 국가법령정보 공동활용 · 국세청 「2025 세법해석 사례집」

작성 Mia(윤승미) · Upstage

라이선스

MIT

Available Tools

13 tools
basic_rulesA
Read-onlyIdempotent

Get NTS Basic Rules (국세 기본통칙) full text by article or keyword. 국세 기본통칙 전문(최신 고시본). 언제: 조문의 국세청 공식 해석 기준이 필요할 때. 실무 집행 기준 목록은 execution_standards, 개별 사안 해석은 rulings_by_article. 반환: {법령, 기준(고시 연도), 통칙: [{통칙(번호·제목), 본문}], 링크}. 읽기 전용. 국세법령정보시스템 공개 조회(키 불필요), 같은 요청은 1일 캐시.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
articleNo법 조문('제52조'). 주면 그 조에 딸린 통칙 전부, 생략하면 전체에서 keyword로 검색
keywordNo통칙 제목·본문 검색어 (선택)
law_nameYes세법 이름(정식 명칭). 예: '법인세법', '부가가치세법', '소득세법', '상속세 및 증여세법', '국세기본법'

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/destructive=false, so the safety profile is covered; the description's '읽기 전용' is partly redundant. It does add real behavioral context beyond the annotations: no API key required, public 조회 on the 국세법령정보시스템, and a 1-day cache for identical requests — useful for an agent deciding on repeat calls.

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

Conciseness5/5

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

Front-loaded with the core action, then cleanly sectioned into 언제 (when) and 반환 (return) blocks. Every sentence earns its place with no filler.

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

Completeness5/5

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

With no output schema, the description supplies the return shape ({법령, 기준, 통칙[{번호·제목, 본문}], 링크}) plus auth and caching behavior. Nothing an agent needs to call and interpret this tool correctly is missing.

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 lang, article, keyword, and law_name with examples and defaults. The description restates 'by article or keyword' but adds no syntax or format detail beyond what the schema provides; baseline 3 is appropriate when the 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?

States a specific verb+resource ('Get NTS Basic Rules full text') with two access modes (by article or keyword), and explicitly contrasts itself with two named siblings. An agent can distinguish it from execution_standards and rulings_by_article 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 Guidelines5/5

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

The '언제' clause gives the triggering condition (when the official NTS interpretation standard for a statutory article is needed) and names the alternatives with the condition that selects each: execution_standards for practical enforcement lists, rulings_by_article for case-specific interpretation. Explicit when/when-not/alternatives.

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

compare_with_caseA
Read-only

Check your facts and argument against rulings: supports / contradicts / distinguish. 사실관계·논리를 해석·판례와 대조해 항목마다 지지·반대·구별 필요를 판정. 언제: 주장의 근거와 반대 사례를 한 번에 점검할 때(의견서·불복 검토). 단순 검색은 search_tax_rulings. 반환: {해석: [{문서번호, 구분, 관계, 이유, 사실관계 차이, 링크}], 요약, 주의}. 문서번호는 검색 결과에 있는 것만. 읽기 전용. Upstage Solar 호출 — 환경변수 UPSTAGE_API_KEY 필요(호출마다 토큰 비용), 약 10초.

ParametersJSON Schema
NameRequiredDescriptionDefault
taxNo세목 필터 (선택)
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
factsYes사실관계: 누가·언제·무엇을·얼마 (최대 1500자 사용)
our_viewYes우리 주장: 과세 논리 또는 납세자 주장 한두 문장

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint=false, destructiveHint=false) the description discloses that it is read-only, invokes Upstage Solar requiring the UPSTAGE_API_KEY env var, incurs token cost per call, and takes ~10 seconds. It also constrains output ('문서번호는 검색 결과에 있는 것만'), which is behavioral context the annotations cannot 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 and labeled (purpose, 언제, 반환, cost), so it is easy to scan. The English and Korean first sentences are near-duplicates, which adds length, but every section earns its place.

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

Completeness5/5

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

For a tool with no output schema, the description supplies the return shape ({해석, 요약, 주의}), the cost/latency/API-key requirements, and the read-only nature. 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.

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 tax, lang, facts, and our_view, including the 1500-char limit and enum values. The description adds little parameter-level meaning beyond the schema, so the baseline 3 applies.

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 (해석·논리 vs 판례), and the scope is per-item adjudication into 지지/반대/구별. It explicitly contrasts itself with the sibling search_tax_rulings ('단순 검색은 search_tax_rulings'), so an agent can separate the two 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 Guidelines5/5

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

The '언제' line names the concrete trigger (점검 근거와 반대 사례를 한 번에, 의견서·불복 검토) and the alternative for plain retrieval (search_tax_rulings). Both when-to-use and when-not are given explicitly.

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

execution_standardsA
Read-onlyIdempotent

List Tax Execution Standards (세법집행기준) items with page numbers. 세법집행기준 항목(최신 발간본). 언제: 조문별 집행 기준이 있는지·몇 쪽인지 확인할 때. 본문은 책자(PDF)라 제공하지 않으므로 통칙 본문이 필요하면 basic_rules. 반환: {법령, 기준(발간 연도), 항목: [{항목(번호·제목), 쪽}], 링크, 주의}. 읽기 전용. 국세법령정보시스템 공개 조회(키 불필요), 같은 요청은 1일 캐시.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
articleNo법 조문('제52조'). 주면 그 조의 집행기준 항목만
keywordNo항목 제목 검색어 (선택)
law_nameYes세법 이름(정식 명칭). 예: '법인세법', '부가가치세법', '소득세법', '상속세 및 증여세법', '국세기본법'. 소득세는 '소득세법'

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 and destructiveHint=false, so the trailing 읽기 전용 is largely redundant. The description does add genuinely new operational context beyond annotations: no API key required for the public NTS lookup and a one-day cache for identical requests.

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 one-line purpose, then uses labeled 언제/반환/operational blocks that each carry distinct information. Dense but waste-free; only the 읽기 전용 phrase overlaps structured annotations.

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

Completeness5/5

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

Despite having no output schema, the description fully specifies the return shape ({법령, 기준, 항목:[{항목, 쪽}], 링크, 주의}), plus the critical limitation that content is PDF-only. Nothing an agent needs to call or interpret this tool is missing.

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 law_name, article, keyword and lang are all documented in the schema itself; baseline 3 applies. The description's mention of '조문별' loosely echoes the article filter but adds no syntax, format or default guidance beyond what the schema already supplies.

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 ('List Tax Execution Standards items with page numbers') and pins the scope to the latest published edition. It explicitly distinguishes itself from the sibling basic_rules for body text, so an agent can route correctly 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?

The '언제' line gives the exact triggering condition (checking whether an article-level standard exists and on which page), and it adds an explicit exclusion plus alternative: body text is not provided here, so use basic_rules when the 통칙 body is needed. This is textbook when/when-not/alternative guidance.

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

get_tax_rulingA
Read-onlyIdempotent

Get the full text of one ruling or decision. 해석·판례 1건의 본문 전문. 언제: 검색 결과 중 인용·요약할 문서를 정한 뒤. 요지만으로 판단하지 말고 본문을 읽을 때 사용. 반환: {문서번호, 제목, 요지, 등록일, 관련조문[], 본문(질의회신: 사실관계·질의·회신 / 판례: 주문·이유, 최대 2만 자), 링크}. 읽기 전용. 국세법령정보시스템 공개 조회(키 불필요), 같은 요청은 1일 캐시.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYessearch_tax_rulings·rulings_by_article 결과의 id (숫자 12~20자리)
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko

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, openWorldHint, and destructiveHint=false. The description adds useful context beyond annotations: it states no API key is needed, that it uses the public 국세법령정보시스템, and that responses are cached for 1 day. This is solid additional behavioral detail, though return format is partially covered by the '반환' note (which is helpful since there's 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.

Conciseness5/5

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

Very well-structured with front-loaded purpose, followed by clear sections for when to use (언제) and what is returned (반환), plus a brief note on behavior. Every sentence is informative and 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?

Given the tool's simplicity (2 parameters, no output schema), the description is quite complete. It covers purpose, usage, return structure, and operational context. Minor gap: the '반환' section describes fields but not their exact data types or edge cases (e.g., missing fields), which could be helpful without an output schema.

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 both parameters, including the id's origin and format, and the lang enum's behavior. The description does not add parameter-level detail beyond what the schema provides. Baseline 3 is appropriate.

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 (Get) and resource (full text of one ruling or decision), and clearly scopes it to retrieving a single document's body. It is easily distinguishable from sibling search/list tools like search_tax_rulings and rulings_by_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?

Explicitly states when to use it ('after selecting a document from search results to cite or summarize') and includes a caveat ('don't judge based only on the summary – use this to read the full text'). This gives clear direction versus alternatives.

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

law_articleA
Read-onlyIdempotent

Get statute text as in force on a date, with optional Act → Decree → Rule chain. 조문 원문(기준일 시행본)과 3단 위임. 언제: 세액·요건 판단처럼 사실 발생 시점의 법령이 필요할 때. 해석·판례는 회신 당시 법 기준이므로 이 도구로 적용 연도 조문과 대조. 반환: {법령, 조, 적용 시행일, 본문, 링크} 또는 {위임체계: [{단계, 법령, 조, 적용 시행일, 본문}]} (+ 기본통칙·집행기준). 읽기 전용. 법제처 공식 API — 환경변수 LAW_OC(무료) 필요, 없으면 발급 안내 오류.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
as_ofNo기준일 YYYYMMDD. 그날 시행 중이던 연혁본. 생략하면 오늘
articleYes조문 번호. '제52조' 또는 '제28조의2' 형식
law_nameYes법령 정식 명칭. 예: '법인세법', '법인세법 시행령', '법인세법 시행규칙'
with_rulesNoTrue면 그 조의 기본통칙 전문과 집행기준 항목도 함께
with_delegationNoTrue면 법률 조문에 연결된 시행령·시행규칙 위임 조문 전부(3단)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, and the description adds material context beyond them: the required LAW_OC environment variable, the free key requirement, and the failure/error behavior when it is missing. It also describes the return payload shapes, which no output schema provides.

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 core purpose, then structured by 언제/반환, which is easy to scan. The bilingual English/Korean content is mildly redundant but each block serves a purpose, so it earns its length without much waste.

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 read-only lookup with no output schema, the description covers purpose, temporal semantics, return structure, and the auth prerequisite — everything an agent needs to invoke it correctly. Nothing material is missing.

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 six parameters including as_of date format and the delegation flag. The description echoes the delegation-chain concept and the as-of date framing but adds little syntax or semantics beyond the schema, so the baseline 3 applies.

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 ('Get statute text as in force on a date') plus a scope qualifier (optional Act → Decree → Rule chain). This clearly distinguishes it from the rulings/case/publication siblings, which retrieve interpretation or precedent rather than statute text.

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 '언제' section gives explicit when-to-use guidance (when the law at the time of the fact event matters, e.g., determining tax amounts or requirements) and contrasts with interpretation/precedent tools that use reply-date law. It lacks explicit sibling tool names, so it stops at clear context rather than full routing.

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

research_issueA
Read-onlyIdempotent

Bundle everything that applied to an issue at a past date. 그 해 기준 묶음 조회 — 사실 발생 시점의 조문(3단)·기본통칙·집행기준·그 조문을 인용한 해석·판례를 한 번에. 언제: 세무조사·불복처럼 특정 사업연도에 적용되는 근거를 정리할 때. 시점 판단을 코드로 고정한다 — 기준일(사업연도·과세기간 종료일), 기준일 조문과 현행 조문의 변경 여부, 해석·판례마다 등록일 당시 조문이 기준일 조문과 같은지. 반환: {기준일, 기준일 근거, 그 해 조문(3단), 현행과 비교, 기본통칙[], 집행기준[], 해석·판례[{…, 기준일 조문과}], 주의}. 읽기 전용. 조문 부분은 LAW_OC 필요(없으면 해석·통칙만 반환). 10~30초.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo해석·판례 종류별 최대 건수 1~20
taxNo세목. 부가세 과세기간 판단과 해석 필터에 사용 (선택)
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
periodYes사실이 속한 시점: '2023'(사업연도·과세기간), '2023-1'(부가 1기), '2023-12-31'(날짜)
articleYes조문 번호. '제52조' 또는 '제28조의2' 형식
law_nameYes세법 이름(정식 명칭). 예: '법인세법', '부가가치세법', '소득세법', '상속세 및 증여세법', '국세기본법'

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds genuinely useful behavior beyond them: the LAW_OC dependency (article text is omitted and only interpretations/basic rules are returned without it) and the 10–30 second latency. The explicit "읽기 전용" restates the annotation. Dependency and latency disclosure elevate this above baseline.

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 the when/return/dependency/latency facts in labeled clauses (언제, 반환). Bilingual duplication and dense Korean add length, but every clause carries distinct information and the structure is scannable. Slightly heavier than ideal but no 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?

With no output schema, the description carries the return-value burden and does so by enumerating the response keys. It also documents the external dependency, latency, and read-only nature for a 6-parameter tool. What remains thin is error/failure behavior when LAW_OC is absent or the period is malformed.

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 100%, so the baseline would be 3. The description adds value beyond field-level schema docs by tying the parameters into a temporal-resolution model: the reference date, whether then-vs-current article text changed, and whether each interpretation/case was registered under text matching the reference date. This conceptual framing of 'period' exceeds what the schema conveys alone.

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?

"Bundle everything that applied to an issue at a past date" names a specific verb (bundle/retrieve) and a well-defined resource (all authorities applicable to an article at a historical point). The Korean gloss enumerates the bundled categories (3-tier article text, 기본통칙, 집행기준, interpretations, cases), which also implicitly distinguishes it from the single-category siblings. It stops short of explicitly naming alternatives like basic_rules or casebook_search, so not quite 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 Guidelines4/5

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

"언제: 세무조사·불복처럼 특정 사업연도에 적용되는 근거를 정리할 때" gives a concrete triggering scenario (tax audit/appeal needing point-in-time authority). It explains the governing logic (fixed reference date, comparing then-vs-now article text), which is clear context. No explicit exclusions or sibling routing is provided, so it is not a full 5.

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

rulings_by_articleA
Read-onlyIdempotent

List rulings and decisions that cite a specific statute article. 특정 조문을 관련 법령으로 인용한 해석·판례 모음. 언제: 조문을 알고 그 조문의 실무 해석을 모을 때(예: 법인세법 제52조 → 부당행위계산). 키워드만 있으면 search_tax_rulings. 반환: {법령, 조, 결과: [{구분, 문서번호, 제목, 요지, 세목, 일자, id, 링크}]}. 읽기 전용. 국세법령정보시스템 공개 조회(키 불필요), 같은 요청은 1일 캐시.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo종류별 최대 건수 1~30
taxNo세목 필터 (선택)
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
sortNo정렬최신
kindsNo해석·판례 중 선택. 생략하면 둘 다
articleYes조문 번호. '제52조' 또는 '제28조의2' 형식
keywordNo결과를 좁힐 추가 키워드 (선택)
law_nameYes세법 이름(정식 명칭). 예: '법인세법', '부가가치세법', '소득세법', '상속세 및 증여세법', '국세기본법'

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/openWorld, but the description adds material context beyond them: it confirms read-only, states no API key is needed (public 국세법령정보시스템 lookup), and discloses a 1-day cache for identical requests. That caching/auth detail is genuinely useful and not derivable 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 the purpose, then structured into 언제 (when) and 반환 (returns) sections. Efficient and scannable, though the inline return-shape literal is dense and slightly overlaps what the schema could carry.

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

Completeness5/5

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

With no output schema, the description proactively documents the return shape ({법령, 조, 결과:[...]}), plus auth/caching behavior, giving an agent everything needed to call and interpret 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 coverage is 100%, so all eight parameters are already documented, including the law_name and article formats and the tax/kinds enums. The description reinforces the law_name+article pairing with an example but adds no syntax or constraints beyond the schema, so the baseline 3 is appropriate.

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) and resource (rulings/decisions citing a specific statute article), and explicitly distinguishes itself from search_tax_rulings by the input condition. An agent can tell it apart from siblings without opening a 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?

Provides explicit when-to-use guidance ('when you know the article and want practical interpretations'), gives a concrete example (법인세법 제52조 → 부당행위계산), and routes the agent to the alternative when only keywords exist. Nothing 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.

search_local_documentsA
Read-onlyIdempotent

Search PDFs you downloaded yourself, page by page — e.g. the OECD Transfer Pricing Guidelines. 내 PC의 PDF(예: OECD 이전가격 지침) 쪽 단위 검색. 언제: 저작권상 재배포할 수 없는 자료(OECD 지침 등)를 각자 받아 근거로 쓸 때. 문서는 이 패키지에 들어 있지 않음. 설정: 환경변수 KOREAN_TAX_MCP_DOCS에 PDF 폴더 경로, PDF 읽기용 pypdf 필요(uvx --with pypdf korean-tax-mcp). 반환: {결과: [{파일, 쪽, 점수, 발췌}], 색인}. 읽기 전용, 외부 호출 없음. 첫 호출 때 색인(파일이 크면 수십 초).

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo결과 수 1~10
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
queryYes찾을 내용. 영어·한국어·문단 번호(예: '2.14', 'comparability analysis', '무형자산')

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive, closed-world), the description discloses setup prerequisites (KOREAN_TAX_MCP_DOCS env var, pypdf dependency), a real latency characteristic (first call builds the index and can take tens of seconds on large files), the absence of external calls, and the return shape. These are exactly the operational facts an agent needs that annotations cannot express.

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?

Content is front-loaded (what it does, then when, setup, return) and every section carries useful information. It is somewhat dense and the bilingual restatement in the opening line duplicates meaning, costing a little efficiency.

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

Completeness5/5

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

With no output schema, the description compensates by spelling out the return structure ({results:[{file, page, score, excerpt}], index}) and the indexing latency. Combined with setup requirements and usage context, an agent has everything needed to invoke 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 100%, so query, k, and lang are already fully documented in the schema (including query examples and the lang enum behavior). The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.

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) and resource (local PDFs you downloaded yourself), plus the granularity (page by page) and a concrete example (OECD Transfer Pricing Guidelines). This clearly separates it from siblings like search_tax_rulings or search_nts_publications, which query built-in corpora rather than user-supplied local files.

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 '언제' (when) section gives an explicit trigger: use it for copyrighted material that cannot be redistributed and that the user must supply themselves, and warns that documents are not bundled with the package. It lacks an explicit named-alternative routing (e.g. 'for published rulings use X instead'), so it stops just short of a 5.

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

search_nts_publicationsA
Read-onlyIdempotent

Full-text search inside NTS official guidebooks and reports (transfer pricing, APA reports, overseas business guides, filing guides). 국세청 발간책자 본문 검색. 언제: 국세청이 공식 책자로 낸 실무 안내(이전가격·APA 연차보고서·해외진출기업 세무 가이드·신고 안내 등)의 설명이 필요할 때. 반환: {결과: [{책자, 발간일, 분야, 담당, 발췌, 링크}]}. 책자 원문은 국세법령정보시스템 전자도서관에서. 읽기 전용. 국세법령정보시스템 공개 조회(키 불필요), 같은 요청은 1일 캐시.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo결과 수 1~20
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
queryYes찾을 내용. 예: '이전가격 정상가격 산출방법', '해외현지법인 명세서 제출', 'APA'

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, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds genuinely new operational context: no API key required, public query, and a 1-day cache for identical requests. It stops short of richer detail (pagination, result size behavior), keeping it at a solid 4 rather than 5.

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 core purpose, then cleanly labeled sections for when-to-use, return shape, and operational notes. Dense but not padded. The Korean/English mix is slightly redundant in the opening line but earns its place for bilingual routing.

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, so the description carries the return-value burden and does so by specifying the result object fields (book, publish date, field, department, excerpt, link). Combined with the cache/key notes and 3-param schema, an agent has nearly everything needed, though result-set behavior (paging, total count) is unmentioned.

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% and includes examples for the query parameter plus enum/default/max for n and lang, so the schema does the heavy lifting. The description adds no further parameter semantics, so the baseline 3 applies.

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: full-text search inside NTS official guidebooks and reports, with a parenthetical enumerating the covered publication types (transfer pricing, APA reports, overseas business guides, filing guides). This is concrete and scoped, though it does not explicitly contrast itself with siblings like casebook_search or search_tax_rulings, which an agent must infer from the publication-type list.

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 '언제' clause gives a clear trigger: use when explanation is needed from NTS's officially published practitioner guides. That is good context, but it offers no explicit exclusions or named alternatives (e.g., use casebook_search for case law), so the agent must infer the boundary against siblings.

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

search_tax_rulingsA
Read-onlyIdempotent

Search Korean tax rulings and decisions by keyword. 국세청 해석(질의회신·과세기준자문·사전답변)과 판례(법원·조세심판·이의·심사)를 키워드로 찾는다. 언제: 쟁점은 있는데 조문을 모를 때 첫 단계로. 조문을 알면 rulings_by_article, 사례집 요약만 필요하면 casebook_search. 반환: {결과: [{구분, 문서번호, 제목, 요지(400자), 세목, 일자, id, 링크}], 주의}. 본문은 get_tax_ruling(id). 읽기 전용. 국세법령정보시스템 공개 조회(키 불필요), 같은 요청은 1일 캐시.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo종류별 최대 건수 1~30
taxNo세목 필터. 생략하면 전체
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
sortNo최신=등록일 내림차순, 정확도=검색 점수순최신
kindsNo해석=질의회신·과세기준자문·사전답변, 판례=법원·조세심판·이의·심사. 생략하면 둘 다
queryYes쟁점 키워드. 예: '업무무관 가지급금 인정이자', '폐업자 세금계산서 매입세액'
sinceNo등록일 시작 YYYYMMDD (선택)
untilNo등록일 끝 YYYYMMDD (선택)

TDQS

A4.5/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, openWorld), yet the description adds extra behavioral context: no API key required, NTS public-source query, and a 1-day cache for identical requests. It also discloses the return payload and that full text requires a separate call. That is solid added value, though return-format depth is limited.

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

Conciseness5/5

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

Front-loads the core purpose, then uses labeled sections (언제/반환) to separate usage, return shape, and operational notes. Every line carries distinct information with no redundancy.

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, yet the description spells out the return object shape (구분, 문서번호, 제목, 요지, 세목, 일자, id, 링크) and points to get_tax_ruling(id) for full text. Combined with routing guidance and operational notes, 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.

Parameters3/5

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

Schema description coverage is 100%, so all eight parameters (n, tax, lang, sort, kinds, query, since, until) are documented in the schema with enum meanings and examples. The description adds no parameter-specific syntax or defaults beyond what the schema already provides, so the baseline 3 applies.

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) plus the exact resource — Korean tax rulings and decisions, itemizing the constituent types (해석, 판례). It explicitly distinguishes itself from siblings rulings_by_article and casebook_search, so an agent can route without opening a 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?

The '언제' (when) line gives a concrete trigger — first step when the issue exists but the statutory article is unknown — and names two alternatives with the condition that selects each (rulings_by_article when the article is known, casebook_search for summary-only needs). This is explicit when/when-not/alternatives guidance.

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

tax_treatyA
Read-onlyIdempotent

Read Korea's bilateral tax treaties (96 countries) article by article, Korean or English. 한국의 조세조약 조문(국문·영문). 언제: 비거주자 원천징수 제한세율, 고정사업장, 거주자 판정 등 국제거래 쟁점. 국내법 조문은 law_article, 국제조세 해석은 search_tax_rulings(tax='국조'). 반환: {국가, 발효일, 조문: [{조, 제목, 영문 제목, 본문}], 링크} — 조문 번호는 조약마다 다르니 keyword로 찾는 게 정확. 읽기 전용. 국세법령정보시스템 공개 조회(키 불필요), 같은 요청은 1일 캐시.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
articleNo조문. 예: '제10조', '의정서'. 조약마다 번호 체계가 다르므로 주제로 찾을 땐 keyword 사용
countryYes체약국 이름(한글). 예: '미국', '중국', '일본', '베트남'. 모르면 아무 이름이나 넣으면 체결국 목록을 돌려줌
englishNoTrue면 영문 본문
keywordNo조문 제목·본문 검색어. 예: '배당', '고정사업장', '이자', 'dividends'

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, but the description adds operational context the annotations do not: no API key required, a 1-day cache on identical requests, and a warning that article numbering varies per treaty so keyword search is more reliable. These are genuinely useful beyond the structured hints, though it stops short of describing pagination or size limits.

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

Conciseness5/5

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

Front-loads the purpose, then cleanly labels when-to-use, return shape, and operational notes. Each section is dense and earns its place; nothing is redundant.

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

Completeness5/5

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

There is no output schema, so the description supplies the return shape ({country, effective date, articles with article/title/body, link}), the required parameter, the caching behavior, and the routing alternatives. An agent has everything needed to call it correctly.

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 100% schema description coverage the baseline is 3, but the description adds real guidance: the keyword-vs-article tradeoff ('조문 번호는 조약마다 다르니 keyword로 찾는 게 정확') tells the agent which optional parameter to prefer, and it notes the country fallback that returns a treaty-party list. That is meaningfully more than 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?

States a specific verb and resource ('Read Korea's bilateral tax treaties article by article'), with scope (96 countries, Korean/English). It also distinguishes itself from siblings by naming law_article for domestic statutes and search_tax_rulings for international-tax interpretation, so an agent can route without opening a 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?

The '언제' section gives explicit triggering scenarios (non-resident withholding limited rates, permanent establishment, residency determination) and names the exact alternatives for adjacent needs. This is textbook when-to-use and when-to-use-something-else guidance.

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

verify_citationsA
Read-onlyIdempotent

Check that cited rulings, decisions and statute articles actually exist. 인용 검증 — 초안의 문서번호·조문이 실제로 있는지 확인. 언제: AI나 사람이 쓴 초안을 내보내기 전. 지어낸 문서번호·없는 조문을 걸러낸다. 반환: {문서번호: [{인용, 결과(확인/국세청 DB 미확인/조회 실패), 문서번호, 제목, 일자, 링크, 비슷한 번호}], 조문: [{인용, 결과, 적용 시행일}], 요약, 주의}. '확인'은 존재만 뜻함 — 내용 일치는 get_tax_ruling·law_article 본문으로 확인. 읽기 전용. 조문 확인은 LAW_OC 필요.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'ko
textYes보고서·의견서·답변 초안 (해석·판례 문서번호와 '법인세법 제52조' 같은 조문 인용이 들어간 글, 최대 2만 자)
as_ofNo조문 존재를 확인할 기준일 YYYYMMDD. 생략하면 오늘

TDQS

A4.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, but the description adds genuinely non-structured context: article checks require LAW_OC, '확인' means existence only (not content match), and result codes distinguish 국세청 DB 미확인 from 조회 실패. Missing only operational details like rate limits or cost.

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

Conciseness5/5

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

Front-loaded one-line purpose followed by labeled 언제/반환/주의 blocks. Every sentence earns its place: purpose, trigger, return shape, and the existence-vs-content caveat. No filler.

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, so the description compensates by sketching the return object (문서번호 array with 인용/결과/제목/일자/링크/비슷한 번호, 조문 array, 요약, 주의). Combined with the auth note and semantic caveat, an agent has everything needed to call and interpret this tool.

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 all three parameters (text, lang, as_of) are already documented in the schema, including the 20,000-character limit and the YYYYMMDD format. The description adds nothing parameter-specific, so the baseline 3 applies.

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 (verify/check) and resource (cited rulings, decisions, statute articles), and explicitly carves out what it does NOT do: content matching is deferred to get_tax_ruling and law_article. An agent can distinguish this from every sibling 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?

The '언제' line gives an explicit trigger (before exporting AI- or human-written drafts) and the goal (filter out fabricated document numbers and nonexistent articles). It also names the alternative tools for the adjacent task of content verification, so the routing boundary is unambiguous.

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. 13 tool updatesv0.4.0
    • Changedbasic_rules4 fields changed
      • addedInput schema / properties / article / description
        Added value: +"법 조문('제52조'). 주면 그 조에 딸린 통칙 전부, 생략하면 전체에서 keyword로 검색"
      • addedInput schema / properties / keyword / description
        Added value: +"통칙 제목·본문 검색어 (선택)"
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "ko",
        +  "description": "Output language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'",
        +  "enum": [
        +    "ko",
        +    "en"
        +  ],
        +  "title": "Lang",
        +  "type": "string"
        +}
      • addedInput schema / properties / law_name / description
        Added value: +"세법 이름(정식 명칭). 예: '법인세법', '부가가치세법', '소득세법', '상속세 및 증여세법', '국세기본법'"
    • Changedcasebook_search7 fields changed
      • changedInput schema / properties / area / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "법인",
        +      "부가",
        +      "소득",
        +      "상증",
        +      "양도",
        +      "국기",
        +      "국조",
        +      "종부"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / area / description
        Added value: +"분야 필터 (선택)"
      • addedInput schema / properties / k / description
        Added value: +"결과 수 1~10"
      • addedInput schema / properties / k / maximum
        Added value: +10
      • addedInput schema / properties / k / minimum
        Added value: +1
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "ko",
        +  "description": "Output language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'",
        +  "enum": [
        +    "ko",
        +    "en"
        +  ],
        +  "title": "Lang",
        +  "type": "string"
        +}
      • addedInput schema / properties / query / description
        Added value: +"쟁점 문장이나 키워드"
    • Changedcompare_with_case5 fields changed
      • addedInput schema / properties / facts / description
        Added value: +"사실관계: 누가·언제·무엇을·얼마 (최대 1500자 사용)"
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "ko",
        +  "description": "Output language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'",
        +  "enum": [
        +    "ko",
        +    "en"
        +  ],
        +  "title": "Lang",
        +  "type": "string"
        +}
      • addedInput schema / properties / our_view / description
        Added value: +"우리 주장: 과세 논리 또는 납세자 주장 한두 문장"
      • changedInput schema / properties / tax / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "법인",
        +      "부가",
        +      "소득",
        +      "양도",
        +      "상증",
        +      "국기",
        +      "국징",
        +      "조특",
        +      "국조",
        +      "종부"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / tax / description
        Added value: +"세목 필터 (선택)"
    • Changedexecution_standards4 fields changed
      • addedInput schema / properties / article / description
        Added value: +"법 조문('제52조'). 주면 그 조의 집행기준 항목만"
      • addedInput schema / properties / keyword / description
        Added value: +"항목 제목 검색어 (선택)"
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "ko",
        +  "description": "Output language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'",
        +  "enum": [
        +    "ko",
        +    "en"
        +  ],
        +  "title": "Lang",
        +  "type": "string"
        +}
      • addedInput schema / properties / law_name / description
        Added value: +"세법 이름(정식 명칭). 예: '법인세법', '부가가치세법', '소득세법', '상속세 및 증여세법', '국세기본법'. 소득세는 '소득세법'"
    • Changedget_tax_ruling2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"search_tax_rulings·rulings_by_article 결과의 id (숫자 12~20자리)"
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "ko",
        +  "description": "Output language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'",
        +  "enum": [
        +    "ko",
        +    "en"
        +  ],
        +  "title": "Lang",
        +  "type": "string"
        +}
    • Changedlaw_article6 fields changed
      • addedInput schema / properties / article / description
        Added value: +"조문 번호. '제52조' 또는 '제28조의2' 형식"
      • addedInput schema / properties / as_of / description
        Added value: +"기준일 YYYYMMDD. 그날 시행 중이던 연혁본. 생략하면 오늘"
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "ko",
        +  "description": "Output language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'",
        +  "enum": [
        +    "ko",
        +    "en"
        +  ],
        +  "title": "Lang",
        +  "type": "string"
        +}
      • addedInput schema / properties / law_name / description
        Added value: +"법령 정식 명칭. 예: '법인세법', '법인세법 시행령', '법인세법 시행규칙'"
      • addedInput schema / properties / with_delegation / description
        Added value: +"True면 법률 조문에 연결된 시행령·시행규칙 위임 조문 전부(3단)"
      • addedInput schema / properties / with_rules / description
        Added value: +"True면 그 조의 기본통칙 전문과 집행기준 항목도 함께"
    • Addedresearch_issue
    • Changedrulings_by_article13 fields changed
      • addedInput schema / properties / article / description
        Added value: +"조문 번호. '제52조' 또는 '제28조의2' 형식"
      • addedInput schema / properties / keyword / description
        Added value: +"결과를 좁힐 추가 키워드 (선택)"
      • changedInput schema / properties / kinds / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "해석",
        +        "판례"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / kinds / description
        Added value: +"해석·판례 중 선택. 생략하면 둘 다"
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "ko",
        +  "description": "Output language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'",
        +  "enum": [
        +    "ko",
        +    "en"
        +  ],
        +  "title": "Lang",
        +  "type": "string"
        +}
      • addedInput schema / properties / law_name / description
        Added value: +"세법 이름(정식 명칭). 예: '법인세법', '부가가치세법', '소득세법', '상속세 및 증여세법', '국세기본법'"
      • addedInput schema / properties / n / description
        Added value: +"종류별 최대 건수 1~30"
      • addedInput schema / properties / n / maximum
        Added value: +30
      • addedInput schema / properties / n / minimum
        Added value: +1
      • addedInput schema / properties / sort / description
        Added value: +"정렬"
      • addedInput schema / properties / sort / enum
        Added value: +[
        +  "최신",
        +  "정확도"
        +]
      • changedInput schema / properties / tax / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "법인",
        +      "부가",
        +      "소득",
        +      "양도",
        +      "상증",
        +      "국기",
        +      "국징",
        +      "조특",
        +      "국조",
        +      "종부"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / tax / description
        Added value: +"세목 필터 (선택)"
    • Addedsearch_local_documents
    • Addedsearch_nts_publications
    • Changedsearch_tax_rulings13 fields changed
      • changedInput schema / properties / kinds / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "enum": [
        +        "해석",
        +        "판례"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / kinds / description
        Added value: +"해석=질의회신·과세기준자문·사전답변, 판례=법원·조세심판·이의·심사. 생략하면 둘 다"
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "ko",
        +  "description": "Output language. 'en': English keys and labels, official English texts where available (tax treaties, statutes), titles/summaries machine-translated by Upstage Solar when UPSTAGE_API_KEY is set. 기본 'ko'",
        +  "enum": [
        +    "ko",
        +    "en"
        +  ],
        +  "title": "Lang",
        +  "type": "string"
        +}
      • addedInput schema / properties / n / description
        Added value: +"종류별 최대 건수 1~30"
      • addedInput schema / properties / n / maximum
        Added value: +30
      • addedInput schema / properties / n / minimum
        Added value: +1
      • addedInput schema / properties / query / description
        Added value: +"쟁점 키워드. 예: '업무무관 가지급금 인정이자', '폐업자 세금계산서 매입세액'"
      • addedInput schema / properties / since / description
        Added value: +"등록일 시작 YYYYMMDD (선택)"
      • addedInput schema / properties / sort / description
        Added value: +"최신=등록일 내림차순, 정확도=검색 점수순"
      • addedInput schema / properties / sort / enum
        Added value: +[
        +  "최신",
        +  "정확도"
        +]
      • changedInput schema / properties / tax / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "법인",
        +      "부가",
        +      "소득",
        +      "양도",
        +      "상증",
        +      "국기",
        +      "국징",
        +      "조특",
        +      "국조",
        +      "종부"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / tax / description
        Added value: +"세목 필터. 생략하면 전체"
      • addedInput schema / properties / until / description
        Added value: +"등록일 끝 YYYYMMDD (선택)"
    • Addedtax_treaty
    • Addedverify_citations
  2. 8 tool updatesv0.1.1
    • First observedbasic_rules
    • First observedcasebook_search
    • First observedcompare_with_case
    • First observedexecution_standards
    • First observedget_tax_ruling
    • First observedlaw_article
    • First observedrulings_by_article
    • First observedsearch_tax_rulings

TDQS

A4.3/5.0

Scored across 13 tools

Disambiguation5/5

Each tool has a clearly distinct role, and the descriptions explicitly state when to use one over another (e.g., search_tax_rulings vs rulings_by_article vs casebook_search). Overlaps such as basic_rules vs execution_standards are well delineated by scope and output type.

Naming Consistency4/5

Almost all names use snake_case, which is consistent and readable. However, the set mixes verb_noun names (search_tax_rulings, get_tax_ruling, verify_citations) with noun-phrase names (basic_rules, law_article, tax_treaty), so it is not a perfectly uniform pattern.

Tool Count5/5

13 tools is well within the appropriate range for a specialized tax-research server. The tools correspond to distinct research needs: rulings, statutes, treaties, official publications, citations, and bundled issue research.

Completeness4/5

The server covers the core research lifecycle from search and retrieval to citation verification and historical issue bundling. Minor gaps remain, such as no generic keyword search across statutes or tax calculation/rate tools, but the surface is strong for tax-interpretation research.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables AI systems to search, retrieve, and analyze Korean legal information from the National Law Information API (law.go.kr), including laws, administrative rules, English translations, and law-ordinance linkages.
    26
    2
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables real-time search and analysis of Korean laws, legal precedents, and administrative rules through the National Law Information Center Open API, allowing AI agents to access official legal information for contract review, compliance, and legal research.
    75
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search and retrieve Korean laws, regulations, administrative rules, legal interpretations, and precedents via official APIs for legal review workflows.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to query and analyze Korean law, including statutes, precedents, and ordinances, with citation verification and impact analysis.
    10
    6,875 npm
    MIT