taxax-legal-mcp
Provides capabilities for version control and source code management, enabling agents to interact with Git repositories for branching, committing, and merging.
Enables integration with GitHub, allowing agents to manage repositories, issues, pull requests, and other GitHub resources.
Utilizes SQLite as a local database for storing legal metadata, raw documents, and research reports.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@taxax-legal-mcp법인세법 제19조의2 대손금 조문 찾아줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
taxax-legal-mcp
taxax-legal-mcp는 대한민국 세무 쟁점을 공식 공개 법률 자료와 함께 조사하는 독립 Python CLI/MCP 서버입니다. 법령 원문 cache, 출처 provenance, 시행시점 후보, 인용 검증, 근거별 점수 설명을 제공하지만 법적·세무 결론이나 장부 반영을 자동 확정하지 않습니다.
이 공개 package에는 TAXax 회계 engine, 고객 DB, knowledge/, 수집 원문, 사설 K-AR 자료가 포함되지 않습니다. GitHub 저장소는 source와 self-host 예제를 제공할 뿐 무료 hosted 운영 서버를 제공하지 않습니다.
설치 (Windows 기준, 4단계)
터미널 입력은 2줄뿐입니다.
1단계 — Python 설치 (한 번만)
python.org/downloads에서 3.11 이상을 받아 설치합니다.
설치 첫 화면의
Add python.exe to PATH체크박스를 반드시 켜십시오. 이걸 놓치면 2단계에서'pip'은(는) 내부 또는 외부 명령... 이 아닙니다오류가 납니다. 이미 그렇게 설치했다면 Python을 다시 실행해Modify→Add python to environment variables를 켜면 됩니다.2단계 설치 후
WARNING: The scripts ... is installed in '...' which is not on PATH가 보이면 3단계의taxax-legal도 인식되지 않습니다. 이때는 아래 형태로 대신 실행하십시오.python -m taxax.legal.cli install
2단계 — 프로그램 설치
PowerShell을 열고 아래 한 줄을 붙여넣습니다. (git이 없어도 됩니다)
pip install https://github.com/JHP0418/taxax-legal-mcp/archive/refs/heads/main.zip3단계 — 설정
taxax-legal install'taxax-legal' 용어가 ... 인식되지 않습니다 오류가 나면 2단계 설치 로그의 not on PATH 경고 때문입니다. 아래처럼 같은 명령을 실행하십시오. 동작은 동일합니다.
python -m taxax.legal.cli install이 한 줄이 다음을 모두 처리합니다.
법제처 OC 인증키를 물어봅니다. 아직 없으면 open.law.go.kr에서 무료로 발급받을 수 있고, 그냥 Enter로 건너뛰어도 됩니다(외부 법령 조회만 비활성).
데이터 폴더(
%LOCALAPPDATA%\TAXax\legal)를 만듭니다.%APPDATA%\Claude\claude_desktop_config.json을 백업한 뒤taxax-legal항목만 병합합니다. 다른 MCP 서버 설정은 그대로 보존됩니다.doctor진단을 실행해 결과를 보여줍니다.
키를 나중에 넣으려면 taxax-legal install --oc <키>를 다시 실행하면 됩니다. 같은 명령을 여러 번 실행해도 안전합니다.
Codex(ChatGPT 데스크톱 앱 · Codex CLI · IDE 확장)에도 함께 등록하려면 --codex를 붙입니다.
taxax-legal install --codex~/.codex/config.toml(또는 CODEX_HOME)에 [mcp_servers.taxax-legal] 항목만 덧붙이며, 기존 주석·설정·다른 MCP 서버는 그대로 둡니다. 변경 전 원본은 같은 폴더에 백업합니다.
ChatGPT 웹/모바일은 로컬 stdio 서버에 연결하지 못하고 HTTPS 원격 서버만 지원합니다. 이 경로는 아래 "Hosted HTTP" 절을 참고하십시오.
4단계 — Claude Desktop 재시작
완전히 종료한 뒤 다시 실행하면 도구 8개가 나타납니다. Claude에게 이렇게 물어보십시오.
법인세법 제19조의2 대손금 조문 찾아줘업데이트
같은 명령을 다시 실행하면 최신 버전을 받습니다.
pip install --upgrade https://github.com/JHP0418/taxax-legal-mcp/archive/refs/heads/main.zip
taxax-legal install --force버전 번호가 같은데도 코드가 바뀐 경우에는 pip이 설치를 건너뜁니다. 그때는 --force-reinstall --no-deps를 함께 지정하십시오.
제거
taxax-legal uninstallClaude Desktop과 Codex 등록, 저장된 인증키를 지웁니다. 받아둔 법령 데이터 폴더는 남겨 둡니다.
Related MCP server: nts-tax-mcp
요구사항
Python 3.11 이상
법제처 upstream 사용 시 운영자용
TAXAX_LAW_GO_OC또는taxax-legal install로 저장한 인증키NTS/OLTA는 운영자가 이용조건을 확인하고 각각 enabled + terms-confirmed를 모두 설정한 경우에만 사용
K-AR와
korean-law-mcpbridge는 선택 기능이며 없어도 CLI, stdio MCP, 공개 법률 조회, research workflow가 기동
Windows 로컬 설치 마법사
첫 공개 경로는 Windows 로컬 설치기입니다. 빌드된 bundle의 SHA256SUMS.json과 파일 hash를 먼저 대조한 뒤 taxax-legal-setup-0.2.0-windows-<architecture>.exe를 실행합니다. 최종 사용자는 별도 Python 설치가 필요하지 않습니다.
설치 마법사는 다음 순서로 동작합니다.
법제처 Open API OC를 입력하거나 건너뜁니다. 키가 없어도 local MCP와 offline demo는 기동되고 공식 upstream 조회만 비활성화됩니다.
실행파일을
%LOCALAPPDATA%\TAXax\app\0.2.0, 법률 data를%LOCALAPPDATA%\TAXax\legal에 둡니다.사용자 동의를 받은 경우에만
%APPDATA%\Claude\claude_desktop_config.json을 백업하고 기존 root field와 다른 MCP server를 보존한 채taxax-legal항목을 원자적으로 병합합니다. 같은 이름의 다른 항목은 별도 교체 동의 없이는 거부합니다.doctor를 실행하고 Claude Desktop을 완전히 종료한 뒤 다시 시작하도록 안내합니다.
OC는 Claude Desktop JSON이나 process argument에 넣지 않습니다. %LOCALAPPDATA%\TAXax\config\provider-secrets.json에 현재 Windows 사용자 SID만 FullControl인 상속 차단 ACL을 적용하고 실제 ACL 검증이 성공한 경우에만 평문으로 저장합니다. 이는 다른 일반 사용자 접근을 제한하지만 관리자 접근까지 막는 암호화 저장소는 아닙니다. 입력·교체·삭제는 명시적 사용자 동작으로만 수행합니다.
일반 legal backup에는 이 secret 파일이 포함되지 않습니다. 다른 PC나 복원 경로에서는 OC를 다시 설정해야 합니다. 현재 installer manifest는 code_signed: false, smartscreen_reputation: not_established로 표시하며, code signing과 SmartScreen 평판이 확인되기 전에는 서명된 배포물로 표현하지 않습니다.
source에서 Windows bundle을 검증하려면 새 output directory 이름을 지정합니다.
py -3.11 -m pip install -e ".[dev,windows]"
py -3.11 scripts\build_windows_installer.py "$env:TEMP\taxax-legal-windows"
py -3.11 scripts\smoke_windows_executables.py "$env:TEMP\taxax-legal-windows"개발자·TAXax 연동용 pip 빠른 시작
아직 게시 전 source checkout에서는 다음과 같이 wheel을 빌드해 설치합니다.
py -3.11 -m venv .venv
.\.venv\Scripts\python -m pip install --upgrade pip
.\.venv\Scripts\python -m pip install -e ".[dev]"
.\.venv\Scripts\python -m build
.\.venv\Scripts\python -m pip install .\dist\taxax_legal_mcp-0.2.0-py3-none-any.whl설정과 저장소를 진단합니다. doctor는 실 API를 호출하지 않습니다. TAXAX_LEGAL_DATA_DIR를 생략하면 실행 위치와 무관하게 Windows %LOCALAPPDATA%\TAXax\legal, macOS ~/Library/Application Support/TAXax/legal, Linux ${XDG_DATA_HOME:-~/.local/share}/taxax/legal을 사용합니다.
taxax-legal doctorcredential 없이 합성 공개 fixture로 대표 세무 쟁점 조사와 원문 상세 조회를 시연합니다. 실제 운영 cache와 섞이지 않도록 별도의 scratch data directory를 사용하십시오.
$env:TAXAX_LEGAL_DATA_DIR = "$HOME\taxax-legal-demo"
taxax-legal demo > demo-report.json
taxax-legal get-legal-document --document-id fixture:law:corporate-tax-bad-debt-v1demo 결과의 문서 제목·metadata·경고는 모두 합성 자료임을 표시합니다. 실제 법령·판례·세무 결론으로 사용하면 안 됩니다.
stdio MCP를 기동합니다.
taxax-legal-mcp --transport stdio클라이언트 설정 예시는 examples/claude-code-stdio.json입니다. 실제 클라이언트 설정 변경은 사용자가 직접 수행합니다.
공개 MCP tools
공개 surface는 다음 8개로 고정합니다.
search_knowledgesearch_legal_sourcesget_legal_documentget_applicable_lawverify_legal_citationsresearch_tax_issueget_research_reportget_source_status
search_knowledge는 TAXAX_PRIVATE_KNOWLEDGE_DIR를 명시한 경우에만 사설 읽기 전용 K-AR 디렉터리를 검색합니다. 현재 작업 디렉터리나 TAXax checkout의 knowledge/를 자동 탐색하지 않습니다.
조사 예시
실제 upstream은 운영자 credential과 각 provider 이용조건을 준비한 환경에서만 활성화합니다.
$env:TAXAX_LAW_GO_OC = "<operator-managed-value>"
taxax-legal research-tax-issue "매출채권 대손금 손금산입 요건" `
--tax-type 법인세 `
--transaction-date 2025-06-30 `
--research-as-of 2026-09-14credential이 없거나 provider가 비활성이면 확인된 local 결과를 보존하고 partial과 미조사 범위를 반환합니다. 기본 remote budget은 실제 HTTP retry를 포함한 20회, 상세 8건, 60초이며 호출자가 상향할 수 없습니다.
데이터 분리
기본 TAXAX_LEGAL_DATA_DIR 아래에서 다음을 분리합니다.
v1/legal.sqlite3 공개 법률 metadata/index
v1/raw/** append-only 원문 snapshot
v1/extracted/** parser-version별 정규화 결과
v1/runs/** 수집 run manifest
private/v1/reports.sqlite3 principal/org scope 조사 보고서보고서 DB에는 raw principal/org 값 대신 SHA-256 scope key를 저장합니다. report ID와 scope가 모두 맞아야 조회되며 다른 scope의 ID는 NOT_FOUND입니다.
Hosted HTTP
일반 직원은 법제처·NTS·OLTA credential을 발급받거나 입력하지 않습니다. 중앙 운영 서버가 provider credential을 보관하고 조직 IdP가 발급한 JWT만 직원 client에 사용합니다.
Hosted mode는 issuer, audience, resource, JWKS, Host allowlist, Origin allowlist가 모두 있어야 시작합니다. iss, aud, exp, sub, client_id/azp, scope, resource, organization claim을 검증하며 HS 계열 algorithm은 허용하지 않습니다.
export TAXAX_MCP_AUTH_ISSUER=https://issuer.example.invalid
export TAXAX_MCP_AUTH_AUDIENCE=taxax-legal
export TAXAX_MCP_AUTH_RESOURCE=https://legal.example.invalid
export TAXAX_MCP_AUTH_JWKS_URL=https://issuer.example.invalid/.well-known/jwks.json
export TAXAX_MCP_ALLOWED_HOSTS=legal.example.invalid
export TAXAX_MCP_ALLOWED_ORIGINS=https://client.example.invalid
taxax-legal-mcp --transport streamable-http --host 127.0.0.1 --port 8765TLS reverse proxy는 원래 Host를 보존하고 /mcp로 전달해야 합니다. 인증 없는 HTTP는 TAXAX_MCP_ALLOW_LOCAL_HTTP=1을 명시한 loopback bind에서만 허용됩니다. 자세한 내용은 docs/legal-mcp-deployment.md를 확인하십시오.
Backup과 복원
두 SQLite DB는 WAL mode이므로 .sqlite3 파일만 복사하면 안 됩니다. CLI는 SQLite online backup과 manifest SHA-256을 사용합니다.
taxax-legal --data-dir "$HOME\taxax-legal-data" backup .\backup-20260914.zip
taxax-legal restore .\backup-20260914.zip "$HOME\taxax-legal-restored"복원은 기존 경로를 덮어쓰지 않습니다. 새 경로에서 doctor, source count, 원문 hash, 동일/타 scope report 조회를 검증한 후 환경변수를 전환하십시오.
개발과 검증
python -m pip install -e .[dev]
python -m unittest discover -s tests -p "test_legal_*.py" -v
python -m build
python scripts/validate_legal_distribution.py dist공개 source bundle은 기존 TAXax 저장소 전체를 복사하지 않고 allowlist exporter로 새 빈 디렉터리에 만듭니다.
python scripts/export_legal_public.py /path/to/new-empty-destination포함·제외 경계는 PUBLIC_ALLOWLIST.md에 설명합니다.
운영 검증 상태
L1 법제처 adapter: 합성 fixture 검증 완료
L2 NTS/OLTA adapter: 합성 fixture 검증 완료
L3 결정론 research workflow: local/합성 테스트 완료
JWT/JWKS와 server fail-closed: 합성 RSA token 및 설정 테스트 완료
실제 공식 API 호출: 승인 credential과 이용조건이 없는 환경에서는 미실시
실제 IdP/reverse proxy/DNS/직원 client 연결: 운영 인프라가 없는 환경에서는 미실시
공식 자료의 수록 범위, 최신성, 재이용조건은 provider별 정책을 별도로 확인해야 합니다. 소프트웨어의 MIT license가 수집 원문의 재배포 권한을 의미하지 않습니다.
Available Tools
8 toolsget_applicable_lawA
시행일 기준 법령 후보와 부칙 확인 상태를 반환하며 거래 적용을 확정하지 않는다.
| Name | Required | Description | Default |
|---|---|---|---|
| mst | No | ||
| law_id | No | ||
| refresh | No | ||
| document_id | No | ||
| effective_on | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | |
| status | Yes | |
| sources | No | |
| coverage | No | |
| warnings | No | |
| freshness | No | |
| pagination | No | |
| request_id | Yes | |
| schema_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses that the tool returns candidate/status information rather than a final decision, which is useful. However, it says nothing about the refresh parameter's caching behavior, side effects, or any operational characteristics such as data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one tight Korean sentence with no filler. The main return value is stated first and the important non-confirmation caveat follows immediately, so it is both concise and appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, zero schema coverage, no annotations, and a sibling set of legal-research tools, this description is too sparse for confident selection and correct invocation. An agent could call it minimally with only effective_on, but it has no guidance on the optional filters, refresh semantics, or how it relates to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only reinforces that effective_on is the date anchor. The remaining parameters (mst, law_id, refresh, document_id) are completely unexplained, leaving the agent unable to determine their roles from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('반환' - returns) and a clear resource: statutory candidates and supplementary-provision confirmation status based on an effective date. It also explicitly disclaims final transaction application, which differentiates it from verification/decision tools like verify_legal_citations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for checking candidate laws as of a given effective date and explicitly states it does not confirm transaction application. However, it does not name sibling alternatives or provide explicit when-to-use versus when-not-to-use guidance beyond that caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_legal_documentC
저장된 문서 또는 공식 상세 원문을 절 단위 cursor로 조회한다.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| article | No | ||
| refresh | No | ||
| provider | No | ||
| max_chars | No | ||
| attachment | No | ||
| document_id | No | ||
| effective_on | No | ||
| response_type | No | JSON | |
| section_cursor | No | 0 | |
| identifier_kind | No | ID | |
| source_category | No | ||
| source_document_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | |
| status | Yes | |
| sources | No | |
| coverage | No | |
| warnings | No | |
| freshness | No | |
| pagination | No | |
| request_id | Yes | |
| schema_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal a read-like retrieval action and cursor-based pagination, but it omits critical behavioral context such as refresh semantics, what 'stored vs official' implies, rate limits, authentication requirements, or side effects of parameters like attachment or response_type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no wasted words, which is good for conciseness. However, it leans toward under-specification rather than efficient completeness, leaving a lot of operational detail absent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, this is a complex 13-parameter legal document retrieval tool with zero annotations and zero schema parameter descriptions. The single-sentence description is far from sufficient for an agent to know how to construct a correct call or interpret edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 13 parameters with 0% description coverage, so the description must compensate but barely does. The only hint is '절 단위 cursor', which loosely maps to section_cursor, while target, article, refresh, provider, document_id, effective_on, response_type, identifier_kind, source_category, and source_document_id remain completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('조회한다' / retrieves) and names a concrete resource: stored documents or official full texts. It also adds the distinguishing mechanism of section-unit cursor pagination, which is enough to separate it from the sibling search/verification tools, though it never explicitly contrasts them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as search_legal_sources, get_applicable_law, or verify_legal_citations. The description states what the tool does but provides no context about intended scenarios, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_research_reportA
현재 인증 주체·조직 범위의 조사 보고서와 근거를 cursor 페이지로 조회한다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| report_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | |
| status | Yes | |
| sources | No | |
| coverage | No | |
| warnings | No | |
| freshness | No | |
| pagination | No | |
| request_id | Yes | |
| schema_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose two non-obvious behaviors: results are restricted to the current authenticated principal/organization and the response is paginated via cursor. This is meaningful transparency, although it stops short of specifying ordering, empty-result behavior, or explicit read-only confirmation beyond the verb '조회한다'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one compact sentence that front-loads the resource and scope and ends with the pagination mode. Every phrase earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read tool with an output schema, the description covers scope and pagination well, but leaves room around when to use this over related tools and what limit means. It is minimally sufficient but not fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only mentions cursor pagination and never defines report_id, limit, or cursor as parameters. The agent must rely on parameter names, types, and defaults alone, leaving the semantics of limit and the relationship between report_id and cursor unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific lookup action ('조회한다') targeting '조사 보고서와 근거' (research report and evidence), scoped to the currently authenticated principal/organization. It clearly identifies the resource and operation, though it does not explicitly differentiate from sibling tools such as research_tax_issue or search_knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '현재 인증 주체·조직 범위의' provides a clear access scope that implies when the tool is applicable. However, there is no explicit when-to-use/when-not-to-use guidance or mention of a preferred sibling alternative, so usage must be inferred from the scope wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_statusA
공식 출처와 로컬 저장소의 구현·활성화·검증 상태를 반환한다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | |
| status | Yes | |
| sources | No | |
| coverage | No | |
| warnings | No | |
| freshness | No | |
| pagination | No | |
| request_id | Yes | |
| schema_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It clearly indicates a read-only operation ('returns status') but does not disclose whether the status is cached, live, or what 'implementation, activation, validation' concretely entail. It is not misleading, but it adds only minimal behavioral context beyond the plain meaning of the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-formed sentence that front-loads the action and resource and packs the key status dimensions into a compact list. There is no wasted text or redundant repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only status tool with an output schema, the description is largely sufficient. It identifies what is returned and from which sources. It could mention when to use it relative to the legal-research siblings, but the low complexity and existing output schema keep the gap small.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully documents the input surface. Per the baseline for 0-parameter tools, the description does not need to compensate for undocumented parameters. The description adds semantic context about what the status represents, which is welcome but not necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('반환한다' / returns) and a clear resource ('공식 출처와 로컬 저장소' / official sources and local repository), with the exact aspects covered ('구현·활성화·검증 상태'). It does not explicitly contrast itself with sibling tools, but the status-focused purpose is distinct enough from the search/retrieve siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to call this tool versus searching knowledge bases, retrieving legal documents, or verifying citations. There are no exclusions, prerequisites, or alternative-tool hints. For a zero-parameter status tool this is a moderate gap, but it still leaves the caller to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_tax_issueB
결정론적 조사 계획으로 공식 근거를 수집·검증하며 세무 결론은 자동 확정하지 않는다.
| Name | Required | Description | Default |
|---|---|---|---|
| issue | Yes | ||
| budget | No | ||
| tax_type | No | ||
| upstream | No | ||
| tax_period | No | ||
| jurisdiction | No | KR | |
| research_as_of | No | ||
| knowledge_cutoff | No | ||
| transaction_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | |
| status | Yes | |
| sources | No | |
| coverage | No | |
| warnings | No | |
| freshness | No | |
| pagination | No | |
| request_id | Yes | |
| schema_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: the tool follows a deterministic research plan and does not automatically finalize tax conclusions. However, it does not disclose what the output contains, whether it invokes other tools, whether it can fail, or any side effects. The disclosure is useful but incomplete for a research tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core purpose and includes a meaningful behavioral caveat. It is efficient and readable, though it could be slightly more structured by separating the caveat into its own sentence for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters, no annotations, and an output schema, but the description does not explain the research workflow, how parameters interact, or what the output represents. The 'does not auto-conclude' hint is valuable but leaves the agent uncertain about what the tool actually returns and how to interpret the result. For a complex research tool, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not explain any of the 9 parameters. The description mentions 'official sources' and 'tax conclusions' but does not clarify what 'issue', 'tax_type', 'jurisdiction', 'research_as_of', or 'upstream' mean semantically. The agent must infer parameter meaning entirely from names and defaults, which is risky for a complex research tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('research') and resource ('tax issue'), and adds meaningful qualifiers: it collects and verifies official sources with a deterministic research plan, and explicitly does not auto-confirm tax conclusions. This distinguishes it from sibling tools like search_knowledge or get_applicable_law, though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to use when a structured, evidence-based tax research process is needed, and the 'does not auto-conclude' phrase hints it is a research step rather than a final answer. However, it does not explicitly state when to use this tool versus siblings like search_legal_sources or get_research_report, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_knowledgeA
기존 K-AR 지식을 읽기 전용으로 검색하며 승인 상태는 변경하지 않는다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| k_ar_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | |
| status | Yes | |
| sources | No | |
| coverage | No | |
| warnings | No | |
| freshness | No | |
| pagination | No | |
| request_id | Yes | |
| schema_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It explicitly states read-only ('읽기 전용') and that approval status is not changed ('승인 상태는 변경하지 않는다'), which are valuable non-mutating guarantees. It does not cover return format or auth, but with output schema present, those are less critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly written sentence that front-loads the essential purpose and adds a safety-critical non-mutation clause, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and non-mutating nature, and the output schema takes care of return values. However, parameter semantics are not explained and usage guidance is implicit, leaving some ambiguity around k_ar_id and search behavior for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no direct detail about 'query', 'limit', or 'k_ar_id'. The names are somewhat self-explanatory, and the K-AR knowledge context implies k_ar_id relates to knowledge records, but the description does not compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('검색' - search) and resource ('기존 K-AR 지식' - existing K-AR knowledge), making the core purpose clear. However, it does not explicitly differentiate from the sibling tool search_legal_sources, though the K-AR knowledge scope hints at internal knowledge versus legal sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '기존 K-AR 지식' implies this tool is for searching existing internal knowledge, which gives some guidance on when to use it. No explicit when-to-use or when-not-to-use guidance is provided, nor are any alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_legal_sourcesC
로컬 법률 색인을 검색하거나 명시적으로 공식 법제처 API를 조회한다.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| query | Yes | ||
| cursor | No | ||
| target | No | ||
| filters | No | ||
| provider | No | ||
| upstream | No | ||
| jurisdiction | No | ||
| document_type | No | ||
| response_type | No | JSON |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | |
| status | Yes | |
| sources | No | |
| coverage | No | |
| warnings | No | |
| freshness | No | |
| pagination | No | |
| request_id | Yes | |
| schema_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose a meaningful distinction: searching the local index versus explicitly querying the official API. It also implies a read-only operation, but it does not address official API rate limits, authentication, or consequences of upstream calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded Korean sentence with no filler or repetition. However, it is so brief that it under-serves the complexity of 11 parameters, so it earns strong concision credit rather than maximum completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A complex search tool with 11 parameters, no annotations, and no parameter descriptions needs much more context than this one sentence provides. The output schema may clarify return shape, but invocation behavior, mode selection, and optional-filter semantics remain largely unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 11 parameters with 0% schema description coverage, and the description only hints at the local/upstream provider distinction. The description does not explain query, filters, cursor, target, jurisdiction, document_type, or response_type, leaving the agent to guess their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a clear action (검색/조회) and concrete resources: the local legal index and the official Ministry of Government Legislation API. It distinguishes this tool from legal-document retrieval or tax research, though the dual 'local or upstream' phrasing leaves some ambiguity about the default mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies two usage modes but gives no criteria for choosing between the local index and the official API, and it never mentions when to prefer this tool over siblings such as search_knowledge or get_legal_document. No exclusions, prerequisites, or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_legal_citationsC
문서·메타데이터·위치·인용문 일치를 분리해 확인한다.
| Name | Required | Description | Default |
|---|---|---|---|
| citations | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| error | No | |
| status | Yes | |
| sources | No | |
| coverage | No | |
| warnings | No | |
| freshness | No | |
| pagination | No | |
| request_id | Yes | |
| schema_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether this is a read-only operation, whether it makes external calls, what it returns on success or failure, or any side effects. The phrase 'verifies' implies a read/check action, but that is not explicit. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise and front-loaded. However, it is so brief that it sacrifices necessary detail. It earns a middle score: not verbose, but under-specified for a tool with a verification purpose and multiple inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (verifying multiple aspects of citations) and the absence of annotations or output schema details, the description is incomplete. It does not explain what the verification returns, how results are structured, or what constitutes a successful verification. The output schema exists but its content is not described, so the description should compensate – it does not. An agent would be under-equipped to call this tool correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the parameters. It mentions 'document, metadata, location, and quote' which loosely map to document_id, expected_date/provider (metadata), locator (location), and quote, but it does not explain the meaning of each parameter or how they interact. An agent would need to infer the role of each parameter from the names alone, which is insufficient given the verification context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it 'separately verifies document, metadata, location, and quote consistency' – a specific action (verify) on a defined scope (consistency of four elements). It is not a tautology and gives a reasonable sense of purpose, but it does not clearly differentiate from siblings like search_legal_sources or get_legal_document. It could be more specific about the verification result and the exact process.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No mention of prerequisites, typical scenarios, or exclusions. The description simply states what it does without context. An agent would have to infer usage from the name and sibling names, which is insufficient.
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.
8 tool updates
v0.2.4- First observed
get_applicable_law - First observed
get_legal_document - First observed
get_research_report - First observed
get_source_status - First observed
research_tax_issue - First observed
search_knowledge - First observed
search_legal_sources - First observed
verify_legal_citations
TDQS
Scored across 8 tools
Each tool targets a distinct resource and action, but search_knowledge and search_legal_sources are both read-oriented search tools that could be confused. The descriptions clarify the difference between internal knowledge and official legal indexes/APIs, so the ambiguity is minor.
All tool names follow a consistent verb_noun snake_case pattern using search, get, verify, and research. There are no mixed casing conventions or vague verbs, making the set highly predictable.
Eight tools is well within the ideal range for a legal/tax research server. Each tool addresses a distinct retrieval, verification, status, or reporting need without unnecessary redundancy.
The tool surface covers the main research workflow: searching legal sources, retrieving documents, verifying citations, running tax research, and accessing reports. There are minor gaps such as no direct retrieval of individual knowledge entries or export/save operations, but these are workable for the apparent read-only research purpose.
Maintenance
Related MCP Connectors
Resolve, search and verify legal citations against the official sources, with provenance.
Full-text search over K-IFRS/K-GAAP standards and KASB accounting Q&A for Korean accountants
Verify Korean legal citations against law.go.kr: precedents, statutes, bar-exam answers.
Full-text search over FSS/FSC accounting supervision documents for Korean accounting professionals
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables searching and retrieving tax law data from the Korean National Tax Service database, including interpretations, rulings, forms, publications, and site menus via MCP tools.14MIT
- AlicenseNot gradedqualityAmaintenanceAccess Korea's national tax law information system to search rulings, precedents, statutes, and more using natural language queries via Claude.3MIT
- AlicenseAqualityBmaintenanceMCP server that directly queries the Korean National Tax Service tax law information system for tax law interpretations, precedents, and guidance. It supports exact document-number lookup, keyword search, and structured retrieval of ruling details and legal grounds.9MIT
- AlicenseBqualityBmaintenanceEnables read-only search and retrieval of Korean defense acquisition statutes, administrative rules, precedents, and DAPA organizational/policy knowledge, with source verification and citation checking.17MIT