Korean Law MCP
Server Details
Korean law: statutes, precedents, ordinances, treaties and citation verification (법제처 API).
- Status
- Healthy
- Uptime
- 98.8% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- chrisryugj/korean-law-mcp
- GitHub Stars
- 2,818
- Server Listing
- korean-law-mcp
TDQS
Scored across 10 tools
The top-level tools mostly have distinct roles: search_law/search_decisions find identifiers, get_law_text/get_decision_text retrieve text, legal_analysis performs targeted verification, and legal_research orchestrates multi-step queries. There is some overlap between legal_research modes and the simpler search/retrieval tools, but the descriptions generally make the intended boundaries clear.
Several tools follow a predictable verb_noun pattern (discover_tools, get_law_text, search_decisions), but legal_analysis, legal_research, and ordinance_radar are noun-phrase or domain-label names. The mixed convention is still readable, but it is not a consistent verb_noun scheme throughout.
Ten top-level tools is a well-scoped surface for a broad Korean-law server, especially with discover_tools/execute_tool acting as a gateway to 80+ specialized tools. Each top-level tool has a clear place and the set avoids exposing an unmanageable flat tool list.
The surface covers law search, article retrieval, annexes, decision search/retrieval, citation verification, multi-step research, and ordinance review, with meta-tools reaching additional specialized domains. Minor gaps may exist around direct ordinance/administrative-rule text access, but core workflows and fallback paths are largely covered.
Available Tools
10 toolsdiscover_tools전문 도구 찾기ARead-onlyIdempotentInspect
Korean-law-mcp — [메타] 전문도구(조세심판·관세·헌재·행심·공정위·개인정보위·노동위·학칙·조약·영문법령·용어 등 80+개) 카테고리 검색. 도구 이름과 설명을 돌려준다
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | 찾고 싶은 도구의 의도 또는 카테고리 (예: '공정위', '조약', '용어', '헌재') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds the concrete payload ('도구 이름과 설명을 돌려준다') and the breadth of the index (80+), but leaves the matching behavior unexplained — whether it matches on tool names, descriptions, or both, and whether results are ranked.
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?
Two short sentences: identity and scope first, then return format. Dense but front-loaded with no filler. The category enumeration is long, though it doubles as usable query vocabulary, so it largely earns its space.
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?
With no output schema, the description does correctly state the return content, and the single parameter is fully covered. What's missing is the workflow contract for a meta tool — that discovered tools are then invoked via execute_tool, and whether results can be refined by re-querying with different intents.
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 coverage is 100% with an example-laden intent description, so the baseline is 3. The description earns an extra point by enumerating eleven concrete query categories (조세심판, 관세, 헌재, 행심, 공정위, 개인정보위, 노동위, 학칙, 조약, 영문법령, 용어) that work directly as intent values, materially beyond the schema's four examples.
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?
States a specific action (category search) over a specific resource set (80+ specialized tools: 조세심판·관세·헌재·행심·공정위·개인정보위·노동위·학칙·조약·영문법령·용어) and says what it returns (tool names and descriptions). The '[메타]' tag plus the category inventory makes it distinguishable from retrieval siblings like search_law or get_law_text, though it never names a sibling 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 'meta / discovery' framing implies you call this when you don't already know the right specialized tool, and the schema examples clarify the query style. But there is no explicit when-to-use or when-not statement, and no mention of the natural follow-up (execute_tool), which is the key routing decision an agent faces in this 10-tool set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_tool전문 도구 실행CRead-onlyIdempotentInspect
Korean-law-mcp — [메타] 전문도구를 이름(tool_name)과 인자(params)로 실행
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | 도구에 전달할 파라미터 객체 | |
| tool_name | Yes | 실행할 전문도구 이름 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. What the description fails to add is the behavior that actually matters for a dispatcher: what happens when tool_name is unknown or params don't match the target tool's schema, and what the response looks like (the sub-tool's output, presumably).
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 short line with no padding, which is good, but here the brevity comes at the cost of under-specification rather than discipline — the dispatch contract is not explained at all.
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 an open-world meta-dispatcher with a free-form nested params object and no output schema, the description should at minimum say how to discover valid tool_name values and how errors are surfaced. Neither is present, so an agent must guess before it can invoke this correctly.
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 coverage is 100% and both parameters are described in the schema, so the baseline of 3 applies. The description restates the same two fields and adds nothing about the crucial constraint that the params object must conform to the signature of whichever tool tool_name selects — a nested-object semantic the schema cannot express.
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?
"[메타] 전문도구를 이름(tool_name)과 인자(params)로 실행" states the verb (execute) and the resource (a specialized tool), plus the dispatch mechanism. However, it never says what a "전문도구" is in this server's context or points to discover_tools as the source of valid names, so the agent cannot map it against nine siblings on the description alone.
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 statement of when to call this dispatcher instead of calling search_law, legal_research, get_law_text, etc. directly, and no mention of discover_tools as the prerequisite for obtaining a valid tool_name. The only guidance is implicit in the word "[메타]".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_annexes별표·서식 조회ARead-onlyIdempotentInspect
Korean-law-mcp — [별표] 별표/서식 조회. lawName+'별표N'으로 내용 추출. 금액/기준은 별표에 있는 경우 많음. date(기준일)를 주면 그날 시행 중이던 버전의 별표 — 건축허가·착공·처분 시점의 설치기준·과태료표 등 과거 기준이 필요할 때(제명이 바뀐 법령도 옛 버전까지, 별표 번호가 시점마다 달라 query로 별표명을 주는 편이 안전).
| Name | Required | Description | Default |
|---|---|---|---|
| jo | No | 위임 조문 (예: '제38조', '38'). 조문 동반 질의('관세법 제38조 별표2')의 조문 맥락 — 별표명의 '(제38조 관련)' 표기와 대조해 좁히고, 응답에 위임 관계를 표기 | |
| knd | No | 1=별표, 2=서식, 3=부칙별표, 4=부칙서식, 5=전체 | |
| date | No | 기준일 (예: '2015-06-01'). 지정 시 그날 시행 중이던 법령 버전의 별표를 조회 — 건축허가·착공·처분·위반 시점 기준이 필요할 때. 제명이 바뀐 법령도 옛 버전까지 찾는다. 별표 번호는 시점마다 다를 수 있으니 query(별표명)로 좁히는 것이 안전. 미지정 시 현행 | |
| query | No | 별표명으로 좁히기 (예: '운전면허 취소·정지', '과태료'). 번호를 모를 때 사용. 1건으로 좁혀지면 그 별표 본문을 바로 추출 | |
| bylSeq | No | 별표번호 (예: '000300'). 지정 시 해당 별표 파일을 다운로드하여 텍스트로 추출 | |
| annexNo | No | 별표 번호 (예: '4', '별표4', '제4호'). bylSeq 대체 입력 | |
| lawName | Yes | 법령명 (예: '관세법'). 별표를 바로 지정하려면 '... 별표4' 또는 '... 별표1의2'처럼 함께 입력 가능 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds real behavioral context beyond that: it downloads the annex file and extracts text when bylSeq is given, and extracts the body directly when query narrows to a single annex. However, it never says what a multi-match response looks like versus a single-match extraction, leaving the return shape ambiguous.
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?
Purpose and the core lawName+'별표N' pattern are front-loaded, and every sentence carries usable information (amounts in annexes, retroactive lookup, query-over-number advice). It is a dense run-on block with parenthetical asides and some overlap with the schema text, which keeps it from a 5.
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?
With 7 parameters, a 100% covered schema, and full annotations, the description supplies the missing decision context: retroactive date semantics, jurisdiction/naming quirks, and narrowing strategy. There is no output schema, and the description only partially covers the return shape (file-download text vs. direct body extraction vs. presumably a list when ambiguous), so a small gap remains.
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 100%, so the baseline is 3; every parameter already carries an inline description with examples (jo, knd enum, bySeq, annexNo). The description's date and query guidance largely restates what is already written in those schema fields, adding little genuinely new parameter meaning. The interaction hint that query is safer than a number when the annex number varies is the main marginal contribution.
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?
States a specific resource and retrieval method: 별표/서식 (annexes/forms) of a Korean statute, extracted via lawName + '별표N'. It also notes that monetary amounts and standards often live in annexes rather than the main text, which clarifies what kind of content this tool returns. It never names the sibling get_law_text as the alternative for main-article text, so the differentiation is implicit rather than explicit.
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?
Gives clear context for the date parameter (retroactive standards at time of permit/construction/disposition, renamed statutes) and advises using query by annex name because annex numbering shifts over time. This is genuine when-to-use guidance. It stops short of stating when NOT to use it or naming a sibling to fall back on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_decision_text판례·결정례 본문 조회BRead-onlyIdempotentInspect
Korean-law-mcp — [통합조회] 21개 도메인 전문 조회. domain+id. full=false(기본) 시 본문 계단식 축약
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 일련번호/ID (search 결과에서 획득. nts는 본문조회ID(ntstDcmId)) | |
| full | No | true=본문 전문 그대로. 미지정=이유/전문 섹션 계단식 축약 (판시·요지·주문은 항상 full) | |
| domain | Yes | 도메인 선택 (enum 값 참조) | |
| options | No | 도메인별 옵션. treaty:{chrClsCd:'010202'(한)/'010203'(영)} english_law:{mst,lawName} prec/constitutional/admin_appeal/interpretation:{caseName} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile, but the description adds a genuinely non-obvious behavioral fact: with full=false (the default) the body is returned in cascading abbreviation rather than in full. That is the single most important thing an agent needs to know before interpreting the output. It stops short of describing response shape or per-domain differences.
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?
Extremely short and front-loaded, which is good, but it is written as clipped fragments that require the reader to reconstruct the meaning. The 'Korean-law-mcp —' prefix is pure overhead with no informational value.
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 4-parameter tool with a nested options object and a 21-value enum, the description covers only the domain/id pair and the full default; the domain-specific options (treaty language code, english_law mst/lawName, caseName) are left entirely to the schema. Adequate given the 100% schema coverage and existing annotations, but thin for the tool's complexity.
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 100%, so the schema already documents id, full, domain, and the nested options object in more detail than the description does. The description's 'domain+id' and 'full=false(기본)' merely restate schema content, and the options object is never mentioned. Baseline 3 applies.
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?
States a specific action and resource: full-text retrieval of decision bodies across 21 domains, keyed by domain+id. It is clear enough to act on, but it never distinguishes itself from siblings like get_law_text or search_decisions, and the telegraphic 'Korean-law-mcp —' prefix adds noise rather than clarity.
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?
No statement of when to call this versus search_decisions (to find ids) or get_law_text (for statutes). The only hint of a workflow, obtaining the id from search results, lives in the schema, not the description. There are no exclusions or alternative routing at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_law_text법령 조문 조회ARead-onlyIdempotentInspect
Korean-law-mcp — [법령조회] 조문 전문 조회. mst/lawId 필수, jo로 특정 조문만 가능 — jo는 '제148조의2' 같은 자연어 조문 표기를 그대로 받는다(권장). 6자리 JO 코드를 직접 쓰려면 조번호 4자리 zero-pad + 의X 2자리: 제10조의2→001002, 제234조의2→023402(234002 아님). jo='부칙' 이면 부칙 원문(시행일·경과조치, 최근 공포부터). 과거 시점 본문은 efYd 에 그 날짜를 넣으면 그날 시행 중이던 버전으로 자동 보정한다(제명이 바뀌기 전 버전 포함).
| Name | Required | Description | Default |
|---|---|---|---|
| jo | No | 조문 번호. 자연어 표기 권장 — '제38조'·'제148조의2'를 그대로 넣으면 서버가 변환한다. 6자리 JO 코드 직접 지정 시 조번호 4자리 zero-pad + 의X 2자리: 제38조→003800, 제10조의2→001002, 제234조의2→023402(234002 아님). '부칙' 이면 부칙 원문(최근 공포부터) | |
| mst | No | 법령일련번호 (MST) | |
| efYd | No | 기준일 또는 시행일자 (YYYYMMDD). 시행일이면 그 버전, 시행일이 아닌 날짜(건축허가일·사건일 같은 조회 기준일)면 그날 시행 중이던 버전으로 자동 보정한다(제명이 바뀌기 전 버전 포함). 현행 본문은 efYd 없이 조회한다. 시행예정본은 그 시행일을 넣는다. | |
| lawId | No | 법령ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). Beyond that, the description discloses real behavior: efYd auto-corrects to the version in force on the given date (including pre-renaming versions), jo='부칙' returns supplementary provisions from the latest promulgation, and jo accepts natural-language notation. These are meaningful behavioral details not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core action first, then parameter-specific rules. The encoding examples (제10조의2→001002) earn their place by preventing a real error, though the paragraph is information-heavy for a single block.
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 4-param, no-output-schema retrieval tool whose schema fully documents parameters, the description covers how to specify the target law and version. It omits what the returned text looks like (structure, truncation) and the mst/lawId requirement contradicts the schema's empty required list, leaving a small 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 coverage is 100%, so the baseline is 3, but the description adds value by explaining that efYd is used both for prospective effective dates and for historical lookup dates with automatic version correction, and by restating the 6-digit JO encoding rule. It also notes mst/lawId are required, which conflicts with the schema's empty required array and could confuse an agent.
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 and resource (법령 조문 전문 조회 — retrieving the full text of statute articles) and clarifies that jo narrows to a specific article. It does not explicitly differentiate itself from siblings like search_law or get_annexes, so an agent relies on the title/resource to tell them apart.
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?
It gives useful conditions for the jo parameter (natural-language notation recommended, 부칙 for supplementary provisions) and for efYd (historical version retrieval). However, it offers no guidance on when to use this tool versus search_law or get_decision_text — the usage advice is parameter-level, not tool-selection-level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
legal_analysis인용 검증·법령 분석ARead-onlyIdempotentInspect
Korean-law-mcp — [정밀분석] 검증·분석 4종 통합. mode: verify_citations=텍스트 속 법령 조문·판례 인용('민법 제750조', '대법원 2013다61381' 등)이 실존하는지 법제처 DB 교차검증, LLM 환각 방지 — 판례는 실존불가/미확인 구분(text 필수) | cite_check=판례 생사 확인 — 사건번호로 후속 인용 역추적+변경·폐기 감지, 한국형 Citator(caseNumber 필수) | applicable_law=사건 시점에 시행되던 법령 버전+그 시점 조문+부칙 경과조치, 행위시법 판단(lawName+date 필수, jo 선택). 제명이 바뀐 법령은 옛 이름 시절 버전으로 특정. 법령이 아니면 행정규칙(고시·훈령 — 예: '스프링클러설비의 화재안전기준', 'NFTC 103')의 기준일 시행 버전 | impact_map=한 조문을 인용한 판례·헌재·해석례·행심·조례 역방향 그래프+mermaid(lawName+jo 필수, jo는 '제103조'·'103조'·JO 6자리 코드 '010300' 모두 수용)
| Name | Required | Description | Default |
|---|---|---|---|
| jo | No | [impact_map 필수, applicable_law 선택] 조문 번호 — 자연어 표기('제103조', '제10조의2')와 6자리 JO 코드('010300', '001002') 모두 수용 | |
| date | No | [applicable_law 필수] 기준일 — 행위·계약·처분 시점 (예: '2023-05-10', '20230510') | |
| mode | Yes | 분석 유형 (도구 설명의 mode 표 참조) | |
| text | No | [verify_citations 필수] 검증할 법률 텍스트 (LLM 답변/계약서 등 조문 인용 포함 문자열) | |
| display | No | [cite_check] 후속 인용 판례 최대 표시 수 (기본 20) | |
| lawName | No | [applicable_law·impact_map 필수] 법령명 (예: '민법', '도로교통법'). applicable_law는 약칭·옛 법령명과 행정규칙명(고시 — 예: '스프링클러설비의 화재안전기준', 'NFTC 103')도 받는다 | |
| deepScan | No | [cite_check] 후속 인용 상위 판례 본문 정밀 스캔 (기본 true, false면 빠르지만 변경·폐기 감지 생략) | |
| caseNumber | No | [cite_check 필수] 사건번호 (예: '2013다61381', 문장 포함 가능) | |
| maxCitations | No | [verify_citations] 검증할 최대 인용 개수 (기본 15, 많을수록 느림) | |
| includeMermaid | No | [impact_map] mermaid 그래프 코드 출력 (기본 true) | |
| includeOrdinances | No | [impact_map] 자치법규 인용 검색 포함 (기본 true, false면 전국 조례 팬아웃 생략) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses operational tradeoffs the schema does not: maxCitations means '많을수록 느림', and deepScan=false is '빠르지만 변경·폐기 감지 생략', and includeOrdinances=false skips the nationwide ordinance fan-out. It also explains the epistemic output distinction for citations (실존불가 vs 미확인), which is exactly the kind of behavioral context an agent needs to interpret results.
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 leading purpose sentence is front-loaded, but the mode breakdown is a single dense pipe-delimited run-on mixing purpose, required params, examples, and edge cases in one breath, making it harder to scan than a structured list would be. The volume is defensible for a four-mode tool, yet the formatting costs readability.
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?
All four modes are covered with required inputs, accepted formats, and defaults, which is strong for an 11-parameter multiplexed tool with no output schema. The only gap is that return shapes are only hinted at (mermaid graph, citator status) rather than characterized, and there is no note on failure behavior when a cited provision cannot be resolved.
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 coverage is 100%, so the schema alone already justifies a 3; the description goes further by tying each parameter to its mode and explaining why (e.g., applicable_law resolves renaming laws to their old-name versions and handles administrative rules like 'NFTC 103'). The mode-to-parameter mapping table in prose adds navigational value beyond the flat per-property 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 names a specific resource (Korean statutory/case-law citations) and enumerates four distinct operations with concrete examples like '민법 제750조' and '대법원 2013다61381', so an agent knows exactly what each mode does. It frames the tool as the '[정밀분석] integrated 4-mode' option, which implicitly separates it from lookup siblings such as get_law_text or search_decisions, but it never names those siblings directly.
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?
Each mode carries its own trigger condition and required inputs (verify_citations needs text, cite_check needs caseNumber, applicable_law needs lawName+date, impact_map needs lawName+jo), and one use case is spelled out explicitly ('LLM 환각 방지'). What is missing is guidance on when to prefer legal_research or search_law over these modes, so selection against siblings is still inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
legal_research법령 종합 리서치ARead-onlyIdempotentInspect
Korean-law-mcp — [⛓리서치] 다단계 법령 리서치 통합 — 여러 API를 병렬로 엮는 복합 질문 전용. task: full_research=도메인·법령명 불명확한 자연어 질문 폴백(기본값, 예 '음주운전 처벌 기준') | law_system=법률·시행령·시행규칙 3단+위임+별표(예 '관세법 체계') | action_basis=처분·허가의 법적 근거+해석례+판례+행심(예 '영업정지 근거') | dispute_prep=불복·소송 준비, 판례+심판례+도메인 결정례(예 '과세처분 불복') | amendment_track=개정 이력+신구대조+연혁(예 '2023년 개정 뭐 바뀜') | ordinance_compare=조례 전국 비교+상위법 적합성(예 '서울시 주차 조례') | procedure_detail=절차·수수료·별표서식(예 '건축허가 절차') | document_review=계약서·약관 조항 리스크+근거법령(text 필수). scenario(선택): 확장 시나리오 — time_travel(두 시점 본문 diff)·timeline·penalty·action_plan·delegation·impact·compliance·customs·manual. 미지정 시 쿼리에서 자동 감지되며, task별 호환 조합은 scenario 파라미터 설명 참조.
| Name | Required | Description | Default |
|---|---|---|---|
| mst | No | [amendment_track] 법령일련번호 (알고 있으면) | |
| task | No | 리서치 유형 (도구 설명의 task 표 참조). 미지정 시 full_research | full_research |
| text | No | [document_review 전용·필수] 검토할 계약서/약관 전문 텍스트 | |
| lawId | No | [amendment_track] 법령ID (알고 있으면) | |
| query | No | 자연어 질문/법령명/키워드 (예: '음주운전 처벌 기준', '관세법 체계'). document_review 외 모든 task에서 필수 | |
| domain | No | [dispute_prep] 전문 분야 (tax=조세심판, labor=노동위, privacy=개인정보위, competition=공정위). 미지정 시 자동 감지 | |
| toDate | No | [time_travel] 비교 종료 시점 YYYYMMDD | |
| articles | No | [law_system] 함께 조회할 조문 번호 (예: ['제38조']) | |
| fromDate | No | [time_travel] 비교 시작 시점 YYYYMMDD | |
| scenario | No | 확장 시나리오. 미지정 시 쿼리에서 자동 감지. task별 호환: law_system=delegation·impact | action_basis=penalty | amendment_track=timeline·time_travel | ordinance_compare=compliance | full_research=customs·action_plan | procedure_detail=manual | |
| parentLaw | No | [ordinance_compare] 상위 법령명. 미지정 시 자동 검색 | |
| maxClauses | No | [document_review] 최대 분석 조항 수 (기본 15) | |
| includeHistory | No | [amendment_track] 조문별 개정 이력(제정 시점부터 전건)까지 포함. 기본 false — 이 섹션이 응답 상한을 먼저 소진해 신구대조표가 잘린다 (#158) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so safety is covered. The description adds genuinely behavioral context: it fans out to multiple APIs in parallel and auto-detects scenario from the query when unspecified, which tells the agent to expect higher latency and broader output. It does not warn about response-size limits in the description body itself (the #158 truncation caveat lives only in the includeHistory parameter).
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 core distinction — complex parallel research only — is front-loaded before the enumeration, which is the right ordering. The pipe-delimited task/scenario list is dense but information-bearing rather than padded; it is long, though, and the scenario guidance spills into a second clause that could be tightened.
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 13-parameter aggregator with no required params, the description does the hard work of explaining which task/scenario combinations are legal and coherent. With no output schema, the return shape (what sections a full_research vs. amendment_track response contains) is left entirely unspecified — the one meaningful gap for a tool that merges many sources.
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 coverage is 100% and each parameter is already tagged with its governing task, so the schema carries most of the load. The description still adds value by supplying the per-task examples that the task enum's own description explicitly defers to ('도구 설명의 task 표 참조') — without the description the enum would be much less interpretable.
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?
States a specific verb and resource (다단계 법령 리서치 통합) and immediately constrains scope to '복합 질문 전용' — questions that require stitching multiple APIs in parallel. The eight enumerated tasks with concrete example queries make it unmistakable that this is the orchestrator, not a single-lookup sibling like search_law or get_law_text.
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 task table is effectively a routing guide: each task names a question shape and an example, and it declares full_research as the fallback for unclear natural-language queries. Scenario compatibility per task is spelled out in the enum description. What's missing is an explicit statement of the negative case — that simple single-law lookups should go to the lighter siblings instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ordinance_radar조례 정비 레이더ARead-onlyIdempotentInspect
Korean-law-mcp — [자치법규] 조례 정비 레이더 — 조례가 인용한 근거 상위법령(법률/시행령/시행규칙)을 본문에서 추출하고, 각 상위법의 현행 시행일과 조례 시행일을 대조해 '상위법이 조례 시행 이후 개정됨 → 정비 검토 대상'을 자동 플래그. 조례 담당 공무원의 상위법 개정 추적·조례 정비 판단용. ordinSeq(또는 id)나 ordinanceName 중 하나 지정.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ordinSeq 별칭 — 힌트가 id=로 안내하는 경우 대응 | |
| query | No | ordinanceName 별칭 — 자연어 조례명으로 검색 | |
| ordinSeq | No | 자치법규 일련번호 (ordinSeq) | |
| ordinanceName | No | 자치법규명 — 지정 시 검색 후 첫 결과 사용 (예: '서울특별시 광진구 주차장 설치 및 관리 조례') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the tool is read-only, idempotent, open-world, and non-destructive. Beyond that, the description explains the substantive behavior: citation extraction, effective-date comparison, and automatic flagging of possible maintenance targets. It does not describe output format or handling of missing citations, but the core behavioral logic is disclosed.
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 dense but front-loaded: it names the tool, states the extraction/comparison behavior, then gives the intended user and parameter rule. Some title duplication at the start is redundant, but the remaining text earns its place.
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?
With no output schema, the description still conveys the conceptual return value — flagged ordinance provisions whose superior law was amended after the ordinance took effect. It does not specify the exact result structure or edge-case behavior, but it covers enough for an agent to understand the tool's purpose and invocation.
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 coverage is 100%, so the baseline is 3. The description adds a meaningful constraint beyond the schema: despite all parameters being optional in the schema, the caller should specify one of ordinSeq/id or ordinanceName. It omits the query alias, but the main identifier-selection rule is useful.
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-and-resource combination: it extracts superior statutes cited by an ordinance and compares effective dates to flag provisions needing review. This is far more precise than the title alone, though it does not explicitly distinguish itself from sibling tools such as legal_analysis or search_law.
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?
It gives a clear use context — ordinance officials tracking amendments to superior laws and deciding whether an ordinance needs maintenance. It does not state when to use this instead of alternatives or when not to use it, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_decisions판례·결정례 검색ARead-onlyIdempotentInspect
Korean-law-mcp — [통합검색] 21개 도메인(판례·해석례·헌재·행심·조세심판·관세·국세청·고용노동부 해석·공정위·개인정보위·노동위·산재보험재심사·고용보험심사·권익위·소청심사·학칙·공사공단·공공기관·조약·영문법령) 통합 검색. domain으로 선택. 판례 본문까지 필요하면 domain='precedent', options.includeText=true, options.detailLimit=N. 판례 기본은 판례명 검색이라 법리·사실관계·유사판례 탐색은 options.search='both'(판례명+본문). 세무 관련 국세청 직접 회신 해석은 domain='nts', 고용노동부 행정해석(질의회시)은 domain='moel'(본문검색 options.search=2), 산재보험 재심사 재결은 'iaciac', 고용보험 재심사 재결은 'eiac'.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 페이지 (기본1) | |
| sort | No | 정렬: lasc/ldes/dasc/ddes/nasc/ndes | |
| query | No | 검색 키워드 | |
| domain | Yes | 도메인 선택 (enum 값 참조) | |
| display | No | 결과 수 (기본20) | |
| options | No | 도메인별 옵션. prec:{court,caseNumber,fromDate,toDate,search(1=판례명 기본·2=본문·"both"=판례명+본문)} tax_tribunal:{cls,gana,dpaYd,rslYd} customs:{inq,rpl,gana,explYd} moel:{search(1=안건명 기본·2=본문),explYd} constitutional:{caseNumber} interpretation:{fromDate,toDate} treaty:{cls,natCd,eftYd,concYd} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, non-destructive, so the description only needs incremental behavior. It delivers: the non-obvious default that precedent search matches case names only, and the includeText/detailLimit toggle needed for full body text. Pagination, result caps, and response shape are not described, keeping it below a 5.
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?
Front-loaded with the unified-search premise, and every subsequent sentence carries routing or mode-selection information. Deducted for re-listing all 21 domain names parenthetically, which duplicates the enum, and for a dense single block with no structure that makes the search-mode distinction easy to miss.
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 6-parameter, nested-object tool with no output schema, the description covers the hard parts: domain routing, name-vs-body search modes, and text inclusion. It leaves page/display/sort behavior and the differing result shapes across the 21 domains to the schema or the agent's discovery.
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 coverage is 100%, but the enum values are cryptic strings ('iaciac', 'eiac', 'moel'), and the description does the real work of translating them into sources. It also documents options.includeText and options.detailLimit, which appear nowhere in the schema's options description (only additionalProperties: {} allows them) — genuine value beyond structured fields.
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 opens with a specific verb+resource (통합검색) and states the exact scope: 21 named Korean legal domains in one call, with the domain parameter selecting the corpus. It also distinguishes the body-text variant ('판례 본문까지 필요하면 domain=precedent, options.includeText=true'), so an agent can tell it apart from get_decision_text 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong routing guidance: it maps real-world needs to specific enum values (국세청 해석 → nts, 고용노동부 질의회시 → moel, 산재보험 재심사 → iaciac, 고용보험 재심사 → eiac) and explains that precedent search defaults to case-name lookup, so doctrinal or fact-pattern exploration needs options.search='both'. It stops short of naming sibling tools (get_decision_text, search_law) as explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_law법령 검색ARead-onlyIdempotentInspect
Korean-law-mcp — [법령검색] 법령명·조례명·행정규칙명 키워드검색 → lawId, mst 획득. 지자체 조례·규칙(자치법규), 훈령·예규·고시(행정규칙)도 검색 — 0건 시 자치법규/행정규칙으로 자동 폴백(예: '광진구 복무조례', '외국환거래규정'). 약칭 자동변환. 제명변경·시행예정 개정 자동 병기. 폐지된 법령·행정규칙은 폐지 사실과 후속(통합) 규정을 자동 안내. 법령·조례·행정규칙 조회 전 식별자 확보용.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 검색할 법령명 (예: '관세법', 'fta특례법', '화관법') | |
| display | No | 최대 결과 개수 (기본 50 — 짧은 법령명 정확매칭 누락 방지) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description discloses substantive behavior: automatic fallback to local ordinances and administrative rules on zero hits, automatic abbreviation conversion, display of renamed and upcoming-amendment laws, and guidance for repealed rules including successor provisions. These are exactly the behavioral traits an agent needs before relying on results.
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 text is front-loaded with the tool purpose and then lists concrete behavioral features. It is dense and slightly overpacked into a single paragraph, but each clause contributes operational information rather than filler.
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?
There is no output schema, yet the description states the key return values (lawId, mst) and covers fallback, abbreviation conversion, amendment notation, and repealed-law guidance. For a search/discovery tool, this is complete enough for an agent to call and interpret results correctly.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning to the query parameter by explaining that abbreviations are auto-converted and by giving example queries including ordinance and administrative-rule names. It does not add detail about the display parameter beyond what the schema already says.
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 and resource: keyword search of law names, ordinance names, and administrative rule names, returning lawId and mst. It clearly distinguishes this discovery step from retrieval siblings such as get_law_text and get_annexes by framing itself as identifier acquisition before lookup.
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?
It gives a clear usage condition: use this before retrieving laws, ordinances, or administrative rules in order to secure identifiers. It also explains fallback behavior when there are zero results, though it does not explicitly contrast itself with sibling search tools such as search_decisions.
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.
3 tool updates
- Changed
execute_tool1 field changed- changed
Input schema / properties / tool_name / descriptionPrevious value: -"실행할 도구 이름 (discover_tools로 확인한 이름)"New value: +"실행할 전문도구 이름"
- Changed
get_law_text3 fields changed- changed
Input schema / properties / efYd / descriptionPrevious value: -"기준일 또는 시행일자 (YYYYMMDD). 시행일이면 그 버전, 시행일이 아닌 날짜(건축허가일·사건일 같은 조회 기준일)면 그날 시행 중이던 버전으로 자동 보정한다(제명이 바뀌기 전 버전 포함). 현행 본문은 efYd 없이 조회할 것. 시행예정본은 search_law 가 안내한 efYd 를 그대로 쓴다."New value: +"기준일 또는 시행일자 (YYYYMMDD). 시행일이면 그 버전, 시행일이 아닌 날짜(건축허가일·사건일 같은 조회 기준일)면 그날 시행 중이던 버전으로 자동 보정한다(제명이 바뀌기 전 버전 포함). 현행 본문은 efYd 없이 조회한다. 시행예정본은 그 시행일을 넣는다." - changed
Input schema / properties / lawId / descriptionPrevious value: -"법령ID (search_law에서 획득)"New value: +"법령ID" - changed
Input schema / properties / mst / descriptionPrevious value: -"법령일련번호 (search_law에서 획득)"New value: +"법령일련번호 (MST)"
- Changed
ordinance_radar2 fields changed- changed
Input schema / properties / ordinSeq / descriptionPrevious value: -"자치법규 일련번호 (search_ordinance 결과의 [번호])"New value: +"자치법규 일련번호 (ordinSeq)" - changed
Input schema / properties / query / descriptionPrevious value: -"ordinanceName 별칭 — 자연어 조례명으로 검색 (search_law 등 다른 도구와 규약 통일)"New value: +"ordinanceName 별칭 — 자연어 조례명으로 검색"
1 tool update
- Changed
get_decision_text1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"일련번호/ID (search 결과에서 획득)"New value: +"일련번호/ID (search 결과에서 획득. nts는 본문조회ID(ntstDcmId))"
2 tool updates
- Changed
get_decision_text1 field changed- changed
Input schema / properties / domain / enumPrevious value: -[ - "precedent", - "interpretation", - "tax_tribunal", - "customs", - "nts", - "constitutional", - "admin_appeal", - "ftc", - "pipc", - "nlrc", - "acr", - "appeal_review", - "acr_special", - "school", - "public_corp", - "public_inst", - "treaty", - "english_law" -]New value: +[ + "precedent", + "interpretation", + "tax_tribunal", + "customs", + "nts", + "moel", + "constitutional", + "admin_appeal", + "ftc", + "pipc", + "nlrc", + "iaciac", + "eiac", + "acr", + "appeal_review", + "acr_special", + "school", + "public_corp", + "public_inst", + "treaty", + "english_law" +]
- Changed
search_decisions2 fields changed- changed
Input schema / properties / domain / enumPrevious value: -[ - "precedent", - "interpretation", - "tax_tribunal", - "customs", - "nts", - "constitutional", - "admin_appeal", - "ftc", - "pipc", - "nlrc", - "acr", - "appeal_review", - "acr_special", - "school", - "public_corp", - "public_inst", - "treaty", - "english_law" -]New value: +[ + "precedent", + "interpretation", + "tax_tribunal", + "customs", + "nts", + "moel", + "constitutional", + "admin_appeal", + "ftc", + "pipc", + "nlrc", + "iaciac", + "eiac", + "acr", + "appeal_review", + "acr_special", + "school", + "public_corp", + "public_inst", + "treaty", + "english_law" +] - changed
Input schema / properties / options / descriptionPrevious value: -"도메인별 옵션. prec:{court,caseNumber,fromDate,toDate,search(1=판례명 기본·2=본문·\"both\"=판례명+본문)} tax_tribunal:{cls,gana,dpaYd,rslYd} customs:{inq,rpl,gana,explYd} constitutional:{caseNumber} interpretation:{fromDate,toDate} treaty:{cls,natCd,eftYd,concYd}"New value: +"도메인별 옵션. prec:{court,caseNumber,fromDate,toDate,search(1=판례명 기본·2=본문·\"both\"=판례명+본문)} tax_tribunal:{cls,gana,dpaYd,rslYd} customs:{inq,rpl,gana,explYd} moel:{search(1=안건명 기본·2=본문),explYd} constitutional:{caseNumber} interpretation:{fromDate,toDate} treaty:{cls,natCd,eftYd,concYd}"
1 tool update
- Changed
get_law_text1 field changed- changed
Input schema / properties / jo / descriptionPrevious value: -"조문 번호. 자연어 표기 권장 — '제38조'·'제148조의2'를 그대로 넣으면 서버가 변환한다. 6자리 JO 코드 직접 지정 시 조번호 4자리 zero-pad + 의X 2자리: 제38조→003800, 제10조의2→001002, 제234조의2→023402(234002 아님)"New value: +"조문 번호. 자연어 표기 권장 — '제38조'·'제148조의2'를 그대로 넣으면 서버가 변환한다. 6자리 JO 코드 직접 지정 시 조번호 4자리 zero-pad + 의X 2자리: 제38조→003800, 제10조의2→001002, 제234조의2→023402(234002 아님). '부칙' 이면 부칙 원문(최근 공포부터)"
10 tool updates
- First observed
discover_tools - First observed
execute_tool - First observed
get_annexes - First observed
get_decision_text - First observed
get_law_text - First observed
legal_analysis - First observed
legal_research - First observed
ordinance_radar - First observed
search_decisions - First observed
search_law
Related MCP Connectors
Official English text of Korean laws (law.go.kr): search by name, get articles; flags outdated texts
- find-refOAuthcom.find-ref
Korean accounting standards, audit, tax and legal sources and rulings, with citation checks
Korea Law MCP — South Korean national statutes via the Ministry of Government Legislation's (법제처)…
Verify Korean legal citations against law.go.kr: precedents, statutes, bar-exam answers.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables searching and retrieving Korean legal information including laws, court precedents, legal interpretations, and local ordinances from the Korean National Law Information Center API with intelligent search ranking.-
- AlicenseAqualityDmaintenanceEnables AI assistants to query and analyze Korean law, including statutes, precedents, and ordinances, with citation verification and impact analysis.108,494 npmMIT
- FlicenseAqualityBmaintenanceEnables 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.262-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search and retrieve Korean laws, regulations, administrative rules, legal interpretations, and precedents via official APIs for legal review workflows.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.