Skip to main content
Glama
rabqatab

LexLink

by rabqatab

Read this in other languages: English | 한국어 (Korean)

Kakao PlayMCP 10 3rd Prize MCP Python

LexLink is an MCP (Model Context Protocol) server that wraps the Korean National Law Information API (open.law.go.kr) so AI agents can search and read Korean laws, case law, interpretations and related material.

What it provides

  • 66 tools, 9 prompts and 2 resources (v2.2.0, plus the Unreleased changes listed in CHANGELOG.md).

  • Laws by effective date or announcement date, single articles (jo), English translations, administrative rules, local ordinances, treaties.

  • Court precedents, Constitutional Court decisions, legal interpretations, administrative appeals, committee decisions, ministry interpretations, special tribunals.

  • law_as_of: the version of a law (or one article) in force on a given date.

  • article_citation: citations referenced by one article, extracted from law.go.kr HTML (no LLM). Edge cases (ranges, deleted articles) are listed under limitations in the API reference.

  • AI/semantic search (aiSearch, aiRltLs_search) and one-call chain tools (chain_*).

  • Per-tool TTL cache and Korean law-name abbreviation resolution (e.g. 자통법).

  • JSON by default; type="XML" or "HTML" on request.

  • Errors come back as {status: "error", error_code, message, hints, request_id}.

All tool names and arguments are in the API reference.

Related MCP server: Korean Law MCP Server

Tool groups

Group

Tools

Laws

eflaw_search, law_search, eflaw_service, law_service, eflaw_josub, law_josub, law_as_of, elaw_search, elaw_service

Admin rules, ordinances, linkage

admrul_*, ordin_*, ordinLsCon_search, lnkLs_search, lnkLsOrdJo_search, lnkDep_search, drlaw_search, lsDelegated_service

Case law and decisions

prec_*, detc_*, expc_*, decc_*, committee_*, cgm_expc_*, special_decc_*

Treaties

trty_search, trty_service

AI search and knowledge base

aiSearch, aiRltLs_search, lstrm_ai_search, dlytrm_search, lstrm_rlt_search, dlytrm_rlt_search, lstrm_rlt_jo_search, jo_rlt_lstrm_search, ls_rlt_search

History, comparison, appendix, dictionary

oldAndNew_*, thdCmp_*, lsJoHstInf_search, lsHstInf_search, delHst_search, lsAbrv_search, licbyl_search, lstrm_*

Analysis

article_citation, check_precedent_odds, legal_resolver, simplify_article, law_amendment_summary, article_amendment_diff

Chains and ops

chain_full_research, chain_amendment_track, chain_dispute_prep, chain_law_system, cache_stats

Which tool to start with:

You have

Start with

A vague question in plain Korean

legal_resolver, aiSearch, aiRltLs_search

A law name and article number

eflaw_search (get MST) then eflaw_josub / eflaw_service with jo

"What did the law say on date D?"

law_as_of

Old/new article text of an amendment

oldAndNew_search then oldAndNew_service

Law, 시행령 and 시행규칙 side by side

thdCmp_search then thdCmp_service with jo (very large without it)

What a legal term means

lstrm_search then lstrm_service (dictionary); lstrm_ai_search only gives related-term links

A topic for case law

prec_search, detc_search, chain_dispute_prep

For article text always pass jo (e.g. 35, "35의5", "제35조의5", "003505"; normalized to 6 digits). Without it some laws return a very large body.

Prompts: search-korean-law, get-law-article, get-article-with-citations, analyze-law-citations, search-admin-rules, tool-selection-guide, analyze-legal-situation, explain-legal-document, check-legal-precedent.

Resources: lexlink://laws/frequently-used (about 20 common law names mapped to 법령ID) and the template lexlink://law/{name} (read it as e.g. lexlink://law/자통법, without braces; the name is URL-decoded, resolver aliases are applied, and one live law_search exact-name lookup is the fallback).

Quick start

Requires Python 3.10+ and uv. You also need an OC from open.law.go.kr: the part of your registered email before the @. law.go.kr checks the OC together with the caller's IP, so the machine running LexLink may need its IP registered there.

uv sync

# stdio (Claude Code, Cursor, other local MCP clients)
OC=<OC> uv run stdio

# Streamable HTTP at /mcp (HTTP mode refuses to start without auth settings)
OC=<OC> LEXLINK_AUTH_TOKENS=local:<TOKEN> TRANSPORT=http uv run serve

The server does not read .env by itself. Export the variables, or run uv run --env-file .env stdio.

OC is resolved as: tool argument oc first, then the OC environment variable. In HTTP mode the oc argument is ignored and the server's OC is always used.

For HTTP deployment (auth, TLS proxy, rate limits, logging) see docs/OPERATIONS.md.

Environment variables

Variable

Default

Description

OC

(required)

law.go.kr API identifier

LEXLINK_BASE_URL

http://www.law.go.kr

Upstream base URL

LEXLINK_TIMEOUT

60

Upstream request timeout (seconds)

SLIM_RESPONSE

unset

1/true/yes/on turns on the compact mode for size-limited hosts such as PlayMCP: drops raw_content when ranked_data exists, keeps the compact caps (500-char excerpts, top-10/3 lists, 80 delegation entries) and trims any result over 20,000 bytes (truncated, truncated_notes). Unset: nothing already fetched is cut (one exception: simplify_article looks up at most 20 legal terms)

TRANSPORT

sse

HTTP server only: http (recommended) or sse

The HTTP-only variables (HOST, PORT, LEXLINK_AUTH_TOKENS, rate limits, logging, ...) are in docs/OPERATIONS.md.

Example

eflaw_search(query="자동차관리법", display=5)
# {"status": "ok", "request_id": "...", "upstream_type": "JSON", "ranked_data": ..., "raw_content": ...}

eflaw_josub(mst="<MST from the search>", jo="제3조")

Error codes: VALIDATION_ERROR, TIMEOUT, UPSTREAM_ERROR, INTERNAL_ERROR, NOT_FOUND, ARTICLE_NOT_FOUND, EMPTY_RESPONSE, API_NOT_SUBSCRIBED, UPSTREAM_HTML_ERROR. See the API reference.

Documentation

Doc

For

docs/README.md

Index

docs/API_REFERENCE.md

Tool list, arguments, upstream API catalog, limitations

docs/OPERATIONS.md

HTTP server: deploy, auth, TLS proxy, logging (Korean)

docs/DEVELOPMENT.md

Code layout, tests, adding tools

CHANGELOG.md

Release history, Unreleased changes

AGENTS.md

Notes for coding agents

Contributing

Fork, branch, add tests, run uv run pytest tests/, open a pull request. Details in docs/DEVELOPMENT.md.

License

No LICENSE file is included in this repository.

Acknowledgments

  • law.go.kr - Korean National Law Information API

  • MCP - Model Context Protocol by Anthropic

  • korean-law-mcp - inspiration for caching, law name resolution and chain tools

Support

Available Tools

26 tools
admrul_serviceA
Read-onlyIdempotent

Retrieve administrative rule full text (행정규칙 본문 조회).

This tool retrieves the complete text of Korean administrative rules. Includes rule content, addenda, and annexes (forms/attachments).

Args: id: Rule sequence number (required if lid/lm not provided) lid: Rule ID (alternative to id) lm: Rule name (exact match search) oc: Optional OC override (defaults to env var) type: Response format - "HTML" or "XML" (default "XML", JSON not supported by API) ctx: MCP context (injected automatically)

Returns: Full administrative rule text with content and annexes or error

Examples: Retrieve by ID: >>> admrul_service(id="62505", type="XML")

Retrieve by LID:
>>> admrul_service(lid="10000005747", type="XML")
NameRequiredDescriptionDefault
idNo
lidNo
lmNo
ocNo
typeNoXML

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive operations. The description adds valuable context beyond annotations: it specifies the API doesn't support JSON format, mentions automatic context injection, and describes what's included in the return (content, addenda, annexes). No contradiction with annotations.

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?

Well-structured with purpose statement, parameter explanations, return description, and examples. Every sentence adds value - no redundancy. The information is front-loaded with the core purpose first.

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

Completeness4/5

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

For a retrieval tool with good annotations and comprehensive parameter coverage in the description, this is quite complete. The main gap is no output schema, but the description explains what's returned. Could benefit from more explicit sibling tool differentiation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining all 5 parameters: id (rule sequence number), lid (rule ID alternative), lm (rule name exact match), oc (OC override), type (response format with defaults and constraints). It clarifies relationships between id/lid/lm and provides format details not in schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Retrieve administrative rule full text' and specifies it's for Korean administrative rules. It distinguishes from sibling tools like admrul_search by focusing on retrieving complete text rather than searching.

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

Usage Guidelines4/5

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

The description provides clear context about when to use this tool (retrieving complete text with content and annexes) and includes parameter guidance (id required if lid/lm not provided). However, it doesn't explicitly contrast when to use this vs. admrul_search or other search tools.

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

aiSearchA
Read-onlyIdempotent

⭐ PREFERRED TOOL for vague or natural language queries. Use this FIRST when user's intent is unclear or conversational.

지능형 법령검색 시스템 검색 API (AI-powered semantic law search).

Uses intelligent/semantic search to find relevant law articles. Returns FULL ARTICLE TEXT (조문내용) - more comprehensive than eflaw_search.

Best for: Natural language queries like "뺑소니 처벌", "음주운전 벌금"

Args: query: Search query (natural language supported, e.g., "뺑소니 처벌") search: Search scope: - 0: 법령조문 (law articles, default) - 1: 법령 별표·서식 (law appendix/forms) - 2: 행정규칙 조문 (administrative rule articles) - 3: 행정규칙 별표·서식 (administrative rule appendix/forms) display: Results per page (default 20) page: Page number (default 1) oc: Optional OC override type: Response format - XML only (JSON not supported)

Returns: AI search results with full article text (법령조문 items with 조문내용)

Example: >>> aiSearch(query="뺑소니 처벌", search=0) # Returns: 특정범죄 가중처벌 등에 관한 법률 제5조의3 (도주차량 운전자의 가중처벌)

NameRequiredDescriptionDefault
queryYes
searchNo
displayNo
pageNo
ocNo
typeNoXML

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, repeatable read operation. The description adds valuable context beyond annotations: it specifies that it 'Returns FULL ARTICLE TEXT (조문내용)' and notes 'Response format - XML only (JSON not supported),' which are important behavioral traits not covered by annotations.

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

Conciseness5/5

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

The description is well-structured and front-loaded with key information: it starts with usage priority, states the purpose, details parameters with examples, and ends with a return value summary and example. Every sentence adds value, with no redundant or wasted content.

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?

Given the tool's complexity (6 parameters, 0% schema coverage, no output schema), the description is highly complete. It covers purpose, usage guidelines, parameter semantics, return values ('Returns FULL ARTICLE TEXT'), and format constraints ('XML only'). The example further clarifies usage. With annotations providing safety context, this description leaves minimal gaps.

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 0%, so the description carries the full burden of parameter documentation. It provides clear semantics for all 6 parameters: query is described as 'Search query (natural language supported),' search has enumerated scope options with defaults, display as 'Results per page,' page as 'Page number,' oc as 'Optional OC override,' and type as 'Response format - XML only.' This compensates well for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose: '지능형 법령검색 시스템 검색 API (AI-powered semantic law search)' and 'Uses intelligent/semantic search to find relevant law articles.' It distinguishes itself from siblings by explicitly mentioning 'more comprehensive than eflaw_search' and being the 'PREFERRED TOOL for vague or natural language queries.'

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

Usage Guidelines5/5

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

The description provides explicit usage guidelines: 'Use this FIRST when user's intent is unclear or conversational' and 'Best for: Natural language queries like "뺑소니 처벌", "음주운전 벌금".' It also distinguishes from alternatives by noting it's 'more comprehensive than eflaw_search,' helping the agent choose between sibling tools.

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

article_citationA
Read-onlyIdempotent

Extract citations from a law article (조문 인용 조회).

This tool extracts all legal citations referenced by a specific law article. It parses the official hyperlinked citations from law.go.kr HTML pages, providing 100% accurate citation data with zero API cost.

The tool identifies:

  • External citations (references to other laws)

  • Internal citations (references within the same law)

  • Article, paragraph, and item level references

Args: mst: Law MST code (법령일련번호) - get this from eflaw_search or law_search results law_name: Law name in Korean (e.g., "자본시장과 금융투자업에 관한 법률") article: Article number (조번호, e.g., 3 for 제3조) article_branch: Article branch number (조가지번호, e.g., 2 for 제37조의2, default 0) oc: Optional OC override (defaults to env var)

Returns: Citation extraction result with: - success: Whether extraction succeeded - law_id: MST code - law_name: Law name - article: Article display (e.g., "제3조" or "제37조의2") - citation_count: Total number of citations found - citations: List of citation objects with target law, article, paragraph, item - internal_count: Number of same-law citations - external_count: Number of other-law citations

Examples: Get citations from 자본시장법 제3조: >>> article_citation( ... mst="268611", ... law_name="자본시장과 금융투자업에 관한 법률", ... article=3 ... )

Get citations from 건축법 제37조의2:
>>> article_citation(
...     mst="270986",
...     law_name="건축법",
...     article=37,
...     article_branch=2
... )

Workflow: 1. First use eflaw_search(query="법명") to find the law and get MST 2. Then use article_citation(mst=..., law_name=..., article=...) to get citations 3. Optionally use eflaw_service to get the full article text

NameRequiredDescriptionDefault
mstYes
law_nameYes
articleYes
article_branchNo
ocNo

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds that it parses HTML pages from law.go.kr, implying a web-scraping mechanism that could be fragile. It also claims '100% accurate citation data with zero API cost,' which is useful operational context. However, it does not disclose potential rate limits or failure modes of scraping, so it doesn't fully cover behavioral risks.

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

Conciseness5/5

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

The description is well-structured with clear sections (Args, Returns, Examples, Workflow) and is appropriately sized for the tool's complexity. It front-loads the purpose and uses concise bullet-like formatting. Each sentence adds value, including practical examples and workflow guidance.

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 fully explains return values including success, law_id, law_name, article, citation_count, citations, internal_count, and external_count. It also provides two complete usage examples and a workflow that integrates with sibling tools. For a tool of this complexity, the description is comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

Schema has no parameter descriptions (0% coverage), so the description must explain all parameters. It does so thoroughly: mst is defined as Law MST code with guidance to get from search results, law_name with a Korean example, article with example '3 for 제3조', article_branch with default 0 and example '2 for 제37조의2', and oc as an optional override defaulting to env var. This exceeds basic schema information.

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

Purpose5/5

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

The description clearly states the tool's function: 'Extract citations from a law article' and specifies it extracts all legal citations referenced by a specific law article. It distinguishes from siblings by detailing the scraping of official hyperlinked citations from law.go.kr HTML pages and listing internal/external citation types, making it unique among the many search/service tools.

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

Usage Guidelines5/5

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

The description provides an explicit workflow: 'First use eflaw_search... Then use article_citation... Optionally use eflaw_service to get the full article text.' It also tells users where to get the mst parameter ('get this from eflaw_search or law_search results'), clearly situating this tool relative to alternatives.

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

decc_serviceA
Read-onlyIdempotent

Retrieve administrative appeal decision full text (행정심판례 본문 조회).

This tool retrieves the complete text of Korean administrative appeal decisions. Includes case details, disposition information, decision summary, and reasoning.

Args: id: Decision sequence number (required) lm: Decision name (optional) oc: Optional OC override (defaults to env var) type: Response format - "HTML" or "XML" (default "XML", JSON not supported by API) ctx: MCP context (injected automatically)

Returns: Full administrative appeal decision text with details or error

Examples: Retrieve by ID: >>> decc_service(id="243263", type="XML")

Retrieve with case name:
>>> decc_service(id="245011", lm="과징금 부과처분 취소청구", type="XML")
NameRequiredDescriptionDefault
idYes
lmNo
ocNo
typeNoXML

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond annotations: it specifies that JSON format is not supported by the API (only HTML/XML), mentions automatic injection of context parameter, and describes what content is included in the return (case details, disposition, summary, reasoning).

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

Conciseness5/5

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

The description is well-structured with purpose statement, content details, parameter explanations, return description, and examples. Every sentence adds value with zero waste. The bilingual approach (Korean/English) is efficient for clarity without redundancy.

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

Completeness4/5

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

For a read-only tool with good annotations and comprehensive parameter documentation, the description is nearly complete. It explains what the tool returns (full text with details) though without an output schema. The main gap is lack of explicit sibling tool differentiation, but otherwise covers purpose, usage, parameters, and constraints adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining all 4 parameters: 'id' as required decision sequence number, 'lm' as optional decision name, 'oc' as optional override with default behavior, and 'type' as format selection with default and constraints. The examples demonstrate practical usage with both required and optional parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('retrieve') and resource ('administrative appeal decisions'), including Korean terminology. It distinguishes from sibling tools like 'decc_search' by focusing on full text retrieval rather than searching.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (retrieving complete decision text) and includes examples. However, it doesn't explicitly state when NOT to use it or compare it to alternatives like 'decc_search' for finding decisions versus retrieving them.

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

detc_serviceA
Read-onlyIdempotent

Retrieve Constitutional Court decision full text (헌재결정례 본문 조회).

Args: id: Constitutional Court decision sequence number (헌재결정례일련번호) lm: Decision name (optional) oc: Optional OC override type: Response format - "HTML" or "XML" (default "XML")

Returns: Full Constitutional Court decision text or error

Examples: >>> detc_service(id="58386")

NameRequiredDescriptionDefault
idYes
lmNo
ocNo
typeNoXML

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing this as a safe, repeatable read operation. The description adds valuable context about what gets returned ('Full Constitutional Court decision text or error') and includes an example showing minimal required parameters, which helps the agent understand the tool's behavior beyond 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.

Conciseness4/5

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

The description is well-structured with clear sections (purpose, args, returns, examples) and efficiently conveys necessary information. While slightly longer than minimal, every sentence adds value. The bilingual terminology could be slightly condensed but doesn't significantly impact conciseness.

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

Completeness4/5

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

For a read-only tool with good annotations and no output schema, the description provides sufficient context: clear purpose, parameter explanations, return information, and an example. The main gap is lack of explicit guidance on when to use versus sibling tools, but otherwise it's complete enough for an agent to use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description carries the full burden of explaining parameters. It provides clear explanations for all 4 parameters: 'id' as the decision sequence number, 'lm' as optional decision name, 'oc' as optional override, and 'type' specifying response format with default value. This fully compensates for the schema's lack of descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Retrieve') and resource ('Constitutional Court decision full text'), including both English and Korean terminology. It distinguishes itself from sibling tools like 'detc_search' (which likely searches for decisions) by focusing on retrieving full text of a specific decision identified by ID.

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

Usage Guidelines3/5

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

The description implies usage context through the example (retrieving a specific decision by ID) and parameter descriptions, but doesn't explicitly state when to use this tool versus alternatives like 'detc_search' or other *_service tools. No explicit when-not-to-use guidance or prerequisite information is provided.

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

eflaw_josubA
Read-onlyIdempotent

Query specific article/paragraph by effective date (시행일 기준 조·항·호·목 조회).

BEST TOOL for querying specific articles like "제174조", "제3조" etc. This returns only the requested article/paragraph, avoiding large full-law responses.

Args: id: Law ID (either id or mst is required) mst: Law serial number (MST) ef_yd: Effective date (YYYYMMDD) - required when using mst jo: Article number in XXXXXX format. Format: first 4 digits = article number (zero-padded), last 2 digits = branch suffix (00=main). Examples: "017400" (제174조), "017200" (제172조), "000300" (제3조), "001502" (제15조의2) hang: Paragraph number (6 digits, e.g., "000100" for 제1항) ho: Item number (6 digits, e.g., "000200" for 제2호) mok: Subitem (UTF-8 encoded, e.g., "다" for 다목) oc: Optional OC override (defaults to env var) type: Response format - "HTML" or "XML" (default "XML", JSON not supported by API)

Returns: Specific law section content

Examples: Query 자본시장법 제174조: >>> eflaw_josub(mst="279823", jo="017400", type="XML")

Query 건축법 제3조 제1항:
>>> eflaw_josub(mst="276925", jo="000300", hang="000100", type="XML")
NameRequiredDescriptionDefault
idNo
mstNo
ef_ydNo
joNo
hangNo
hoNo
mokNo
ocNo
typeNoXML

TDQS

A4.8/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond what annotations provide. While annotations indicate readOnly, idempotent, and non-destructive operations, the description reveals important API constraints: 'JSON not supported by API' and that the tool returns 'Specific law section content' rather than full documents. It also explains the tool's precision focus ('returns only the requested article/paragraph'). However, it doesn't mention rate limits, authentication needs, or error conditions.

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

Conciseness5/5

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

The description is exceptionally well-structured and concise. It starts with the core purpose, immediately provides usage guidance, then systematically documents parameters with clear formatting, and ends with practical examples. Every sentence adds value - there's no redundancy or fluff. The use of bold, code formatting, and clear sections makes it easy to parse.

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 complex tool with 9 parameters, 0% schema coverage, no output schema, and no behavioral annotations beyond basic hints, the description provides comprehensive coverage. It explains the tool's purpose, when to use it, all parameter semantics, format requirements, dependencies between parameters, API limitations (no JSON support), and provides working examples. The only minor gap is lack of explicit return format details, but 'Specific law section content' is reasonably descriptive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description carries the full burden of parameter documentation and excels at it. It provides detailed explanations for all 9 parameters: clarifies that 'id or mst is required', explains ef_yd is 'required when using mst', provides format specifications for jo/hang/ho/mok with examples, explains oc defaults, and clarifies type options and defaults. The examples demonstrate practical parameter usage with real values.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Query specific article/paragraph by effective date' and explicitly distinguishes it from alternatives by stating 'BEST TOOL for querying specific articles like "제174조", "제3조" etc. This returns only the requested article/paragraph, avoiding large full-law responses.' It provides specific verb (query) and resource (article/paragraph) with clear differentiation from sibling tools that appear to be search or service tools.

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

Usage Guidelines5/5

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

The description provides excellent usage guidance with explicit when-to-use statements: 'BEST TOOL for querying specific articles' and 'avoiding large full-law responses.' It also provides concrete examples showing how to use the tool for specific scenarios (자본시장법 제174조, 건축법 제3조 제1항). The guidance helps the agent understand this is for precise retrieval rather than broad searches.

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

eflaw_serviceA
Read-onlyIdempotent

Retrieve full law content by effective date (시행일 기준 법령 본문 조회).

Retrieves the complete text of a law organized by effective date.

IMPORTANT: For specific article queries (e.g., "제174조"), ALWAYS use the jo parameter. Some laws (e.g., 자본시장법) have 400+ articles and the full response can exceed 1MB. Using jo returns only the requested article, which is much faster and cleaner.

Args: id: Law ID (either id or mst is required) mst: Law serial number (MST/lsi_seq) ef_yd: Effective date (YYYYMMDD) - required when using mst jo: REQUIRED for specific articles. Article number in XXXXXX format. Format: first 4 digits = article number (zero-padded), last 2 digits = branch suffix (00=main). Examples: "017400" (제174조), "017200" (제172조), "000300" (제3조), "001502" (제15조의2) chr_cls_cd: Language code - "010202" (Korean, default) or "010201" (Original) oc: Optional OC override (defaults to env var) type: Response format - "HTML" or "XML" (default "XML", JSON not supported by API)

Returns: Full law content or specific article content

Examples: Retrieve specific article (RECOMMENDED): >>> eflaw_service(mst="279823", jo="017400", type="XML") # 자본시장법 제174조

Retrieve full law (WARNING: large response for some laws):
>>> eflaw_service(id="1747", type="XML")
NameRequiredDescriptionDefault
idNo
mstNo
ef_ydNo
joNo
chr_cls_cdNo
ocNo
typeNoXML

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety aspects. The description adds valuable behavioral context: it warns about potential large responses (exceeding 1MB), performance implications ('much faster and cleaner' with jo parameter), and API limitations (JSON not supported). This goes beyond what annotations provide.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, important note, args, returns, examples), uses bold for critical information, and every sentence adds value. It's appropriately sized for a complex tool with many parameters and important usage considerations.

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?

Given the tool's complexity (7 parameters, 0% schema coverage, no output schema), the description provides comprehensive context: it explains all parameters, includes critical warnings about response size, provides format examples, clarifies API limitations, and gives practical usage examples. This is complete enough for effective tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description carries the full burden of explaining parameters. It provides detailed explanations for all 7 parameters: clarifies requirements (id or mst required, ef_yd required with mst), format specifics (jo parameter format with examples), defaults (chr_cls_cd, type), and purpose of each parameter. This fully compensates for the schema gap.

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

Purpose5/5

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

The description clearly states the specific action ('retrieve full law content by effective date') and resource ('law content'), with the Korean title providing additional context. It distinguishes this tool from siblings like 'eflaw_search' (which likely searches) and 'eflaw_josub' (which may handle article subdivisions).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool vs. alternatives: it strongly recommends using the 'jo' parameter for specific article queries to avoid large responses, and warns against full retrievals for laws with many articles. This directly addresses when to use specific features of this tool.

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

elaw_serviceA
Read-onlyIdempotent

Retrieve English law full text (영문법령 본문 조회).

This tool retrieves the complete text of Korean laws translated to English. Useful for international legal research and cross-border understanding.

Args: id: Law ID (required if mst not provided) mst: Law master number (required if id not provided) lm: Law name (alternative search method) ld: Announcement date (YYYYMMDD) ln: Announcement number oc: Optional OC override (defaults to env var) type: Response format - "HTML" or "XML" (default "XML", JSON not supported by API) ctx: MCP context (injected automatically)

Returns: Full English law text with articles or error

Examples: Retrieve by ID: >>> elaw_service(id="000744", type="XML")

Retrieve by MST:
>>> elaw_service(mst="127280", type="XML")
NameRequiredDescriptionDefault
idNo
mstNo
lmNo
ldNo
lnNo
ocNo
typeNoXML

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it specifies that JSON format is 'not supported by API' (important implementation detail), mentions automatic injection of 'ctx' parameter, and indicates the tool returns either 'Full English law text with articles or error' (outcome transparency).

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?

Well-structured with purpose statement, usage context, parameter explanations, return specification, and examples. Every sentence earns its place - no wasted words. The information is front-loaded with core purpose first, then details.

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 7-parameter retrieval tool with good annotations but no output schema, this description is complete: it covers purpose, usage context, all parameter semantics, behavioral constraints (format limitations), and provides examples. The combination with annotations provides full context for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining all 7 parameters' semantics: it clarifies required/alternative relationships ('id required if mst not provided'), provides format details ('YYYYMMDD'), explains defaults ('defaults to env var'), specifies format options with constraints ('JSON not supported by API'), and notes automatic injection. This adds substantial meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'retrieve the complete text of Korean laws translated to English' with specific verb ('retrieve') and resource ('English law full text'). It distinguishes from sibling tools like 'elaw_search' (likely searches metadata) by specifying it retrieves full text content.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'Useful for international legal research and cross-border understanding.' It doesn't explicitly state when NOT to use it or name specific alternatives among siblings, but the purpose differentiation implies usage scenarios.

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

expc_serviceA
Read-onlyIdempotent

Retrieve legal interpretation full text (법령해석례 본문 조회).

This tool retrieves the complete text of a legal interpretation precedent, including the question summary, answer, and reasoning.

Args: id: Legal interpretation sequence number (required) lm: Legal interpretation name (optional) oc: Optional OC override (defaults to env var) type: Response format - "HTML" or "XML" (default "XML", JSON not supported by API) ctx: MCP context (injected automatically)

Returns: Full legal interpretation text with question, answer, and reasoning or error

Examples: Retrieve by ID: >>> expc_service(id="334617", type="XML")

Retrieve with name:
>>> expc_service(id="315191", lm="여성가족부 - 건강가정기본법 제35조 제2항 관련", type="XML")
NameRequiredDescriptionDefault
idYes
lmNo
ocNo
typeNoXML

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds useful behavioral context beyond annotations: it specifies the content returned (question summary, answer, reasoning), format constraints (JSON not supported), and that 'ctx' is injected automatically, which helps the agent understand the tool's behavior.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by clear sections for Args, Returns, and Examples. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.

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 moderate complexity (4 parameters, no output schema), the description is largely complete: it explains the purpose, parameters, return content, and provides examples. However, it lacks explicit error handling details or performance considerations, leaving minor gaps in full contextual understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by providing detailed semantics for all parameters: 'id' as required sequence number, 'lm' as optional name, 'oc' as optional override with default, 'type' as format with default and constraints, and 'ctx' as automatically injected. This adds significant meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('retrieve', 'retrieves') and resources ('legal interpretation full text', 'complete text of a legal interpretation precedent'). It distinguishes itself from sibling tools like 'expc_search' by focusing on retrieving full text rather than searching.

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

Usage Guidelines3/5

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

The description implies usage through examples (retrieving by ID or with name) but lacks explicit guidance on when to use this tool versus alternatives like 'expc_search' or other service tools. It provides basic context but no explicit when/when-not statements or named alternatives.

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

law_josubA
Read-onlyIdempotent

Query specific article/paragraph by announcement date (공포일 기준 조·항·호·목 조회).

BEST TOOL for querying specific articles like "제174조", "제3조" etc. This returns only the requested article/paragraph, avoiding large full-law responses.

Args: id: Law ID (either id or mst is required) mst: Law serial number (MST) jo: Article number in XXXXXX format. Format: first 4 digits = article number (zero-padded), last 2 digits = branch suffix (00=main). Examples: "017400" (제174조), "017200" (제172조), "000300" (제3조), "001502" (제15조의2) hang: Paragraph number (6 digits, e.g., "000100" for 제1항) ho: Item number (6 digits, e.g., "000200" for 제2호) mok: Subitem (UTF-8 encoded, e.g., "다" for 다목) oc: Optional OC override (defaults to env var) type: Response format - "HTML" or "XML" (default "XML", JSON not supported by API)

Returns: Specific law section content

Examples: Query 자본시장법 제174조: >>> law_josub(mst="279823", jo="017400", type="XML")

Query 건축법 제3조 제1항:
>>> law_josub(mst="276925", jo="000300", hang="000100", type="XML")
NameRequiredDescriptionDefault
idNo
mstNo
joNo
hangNo
hoNo
mokNo
ocNo
typeNoXML

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety aspects. The description adds valuable context: it specifies the tool returns 'only the requested article/paragraph' (scoping behavior), notes 'JSON not supported by API' (limitation), and provides format defaults ('default "XML"'). This goes beyond annotations without contradicting them.

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

Conciseness4/5

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

The description is well-structured with clear sections (purpose, args, returns, examples) and uses bold for emphasis. It's slightly verbose but every sentence adds value: the purpose statement, parameter explanations, and examples are all necessary given the complex parameter formatting. Minor redundancy in examples keeps it practical.

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 8 parameters, 0% schema coverage, no output schema, and complex formatting requirements, the description is highly complete. It covers purpose, usage context, all parameter semantics, behavioral notes (e.g., format limitations), and provides concrete examples. Given the annotations handle safety, this description fills all remaining gaps effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining all 8 parameters. It clarifies required conditions ('either id or mst is required'), provides detailed formatting rules for jo, hang, ho, and mok with examples, explains defaults for oc and type, and notes constraints like 'JSON not supported.' This adds significant meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Query specific article/paragraph by announcement date' and explicitly positions it as 'BEST TOOL for querying specific articles like "제174조", "제3조" etc.' It distinguishes from siblings by noting it 'returns only the requested article/paragraph, avoiding large full-law responses,' which differentiates it from broader search tools in the sibling list.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: it states this is the 'BEST TOOL for querying specific articles' and contrasts it with 'avoiding large full-law responses,' implying alternatives like law_search or law_service for broader queries. It also includes practical examples showing when to use specific parameters.

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

law_serviceA
Read-onlyIdempotent

Retrieve full law content by announcement date (공포일 기준 법령 본문 조회).

Retrieves the complete text of a law organized by announcement (publication) date.

IMPORTANT: For specific article queries (e.g., "제174조"), ALWAYS use the jo parameter. Some laws (e.g., 자본시장법) have 400+ articles and the full response can exceed 1MB. Using jo returns only the requested article, which is much faster and cleaner.

Args: id: Law ID (either id or mst is required) mst: Law serial number (MST) lm: Law modification parameter ld: Law date parameter (YYYYMMDD) ln: Law number parameter jo: REQUIRED for specific articles. Article number in XXXXXX format. Format: first 4 digits = article number (zero-padded), last 2 digits = branch suffix (00=main). Examples: "017400" (제174조), "017200" (제172조), "000300" (제3조), "001502" (제15조의2) lang: Language - "KO" (Korean) or "ORI" (Original) oc: Optional OC override (defaults to env var) type: Response format - "HTML" or "XML" (default "XML", JSON not supported by API)

Returns: Full law content or specific article content

Examples: Retrieve specific article (RECOMMENDED): >>> law_service(mst="279823", jo="017400", type="XML") # 자본시장법 제174조

Retrieve full law (WARNING: large response for some laws):
>>> law_service(id="009682", type="XML")
NameRequiredDescriptionDefault
idNo
mstNo
lmNo
ldNo
lnNo
joNo
langNo
ocNo
typeNoXML

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering basic safety. The description adds valuable behavioral context: performance warnings ('full response can exceed 1MB'), parameter-specific behavior ('Using `jo` returns only the requested article'), and API constraints ('JSON not supported by API'). It doesn't contradict annotations.

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

Conciseness4/5

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

The description is well-structured with clear sections (purpose, important notes, args, returns, examples) and uses bold text for critical information. While comprehensive, it's appropriately sized for a complex tool with many parameters. Some redundancy exists (e.g., repeating 'Retrieve' in purpose), but overall it's efficient.

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 complexity (9 parameters, 0% schema coverage, no output schema), the description is nearly complete. It explains parameters thoroughly, provides usage examples, and covers behavioral aspects. The main gap is lack of detail on return values beyond 'Full law content or specific article content', but this is mitigated by the examples showing actual usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining all 9 parameters. It clarifies requirements ('either id or mst is required'), provides detailed formatting rules for 'jo' with examples, explains defaults ('defaults to env var' for 'oc'), and specifies allowed values for 'lang' and 'type'. This adds significant meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Retrieve full law content by announcement date' and 'Retrieves the complete text of a law organized by announcement (publication) date.' It specifies both the verb ('retrieve') and resource ('law content'), and distinguishes itself from sibling tools like 'law_search' by focusing on full content retrieval rather than searching.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use specific parameters: 'IMPORTANT: For specific article queries (e.g., "제174조"), ALWAYS use the `jo` parameter.' It also warns against full retrieval for large laws and recommends article-specific queries for speed and cleaner responses, offering clear alternatives within the same tool.

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

lsDelegated_serviceA
Read-onlyIdempotent

Retrieve delegated laws/rules/ordinances (위임 법령 조회).

This tool retrieves information about laws, administrative rules, and local ordinances that are delegated by a parent law. Shows the delegation hierarchy and which specific articles delegate authority.

⚠️ Note: This API does NOT support HTML format (only XML/JSON).

Args: id: Law ID (required if mst not provided) mst: Law master number (required if id not provided) oc: Optional OC override (defaults to env var) type: Response format - "XML" only (JSON not supported by API, HTML not available) ctx: MCP context (injected automatically)

Returns: Delegation hierarchy with delegated laws/rules/ordinances or error

Examples: Retrieve delegations for 초·중등교육법: >>> lsDelegated_service(id="000900", type="XML")

NameRequiredDescriptionDefault
idNo
mstNo
ocNo
typeNoXML

TDQS

A4.4/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations: it explicitly warns that 'This API does NOT support HTML format (only XML/JSON)' and clarifies that JSON is actually not supported by the API despite the mention. While annotations cover read-only/idempotent/non-destructive aspects, the description adds important API format constraints that aren't captured in structured fields.

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

Conciseness4/5

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

The description is well-structured with purpose statement, important warning, parameter explanations, return description, and example. While efficient, the parameter explanations could be slightly more concise, and the format warning appears in two places (main description and type parameter).

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

Completeness4/5

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

For a tool with 4 parameters, 0% schema coverage, no output schema, and read-only annotations, the description provides comprehensive parameter semantics and behavioral constraints. The main gap is the lack of output format details beyond 'Delegation hierarchy with delegated laws/rules/ordinances or error' - more specifics about the structure would be helpful given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining all parameters: 'id' and 'mst' as mutually required identifiers, 'oc' as an optional override with default behavior, and 'type' with format constraints and default value. It clarifies the relationship between id and mst ('required if mst not provided'/'required if id not provided') and notes that 'ctx' is injected automatically.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Retrieve delegated laws/rules/ordinances' with specific details about what information is returned ('delegation hierarchy and which specific articles delegate authority'). It distinguishes this from siblings by focusing specifically on delegated laws rather than general law search or other legal functions.

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

Usage Guidelines4/5

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

The description provides clear context about when to use this tool (for retrieving delegation hierarchies) and includes a specific example. However, it doesn't explicitly state when NOT to use it or name specific alternative tools from the sibling list for different use cases.

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

prec_serviceA
Read-onlyIdempotent

Retrieve court precedent full text (판례 본문 조회).

Args: id: Precedent sequence number (판례일련번호) lm: Precedent name (optional) oc: Optional OC override type: Response format - "HTML" or "XML" (default "XML")

Returns: Full precedent text with details or error

Examples: >>> prec_service(id="228541")

NameRequiredDescriptionDefault
idYes
lmNo
ocNo
typeNoXML

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds useful context about the optional parameters and default response format ('XML'), which helps the agent understand how to invoke the tool effectively without contradicting 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.

Conciseness5/5

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

The description is efficiently structured with a clear purpose statement, organized parameter explanations, return statement, and a practical example. Every sentence serves a distinct purpose without redundancy, making it easy to parse.

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

Completeness4/5

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

For a read-only tool with good annotations and no output schema, the description provides sufficient context: purpose, parameters, return expectation, and an example. It could improve by detailing error conditions or output structure, but it's largely complete for the tool's complexity.

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 0% schema description coverage, the description compensates well by explaining all four parameters: 'id' as the required precedent sequence number, 'lm' as optional precedent name, 'oc' as optional override, and 'type' as response format with default 'XML'. This adds significant meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'court precedent full text' with the Korean translation in parentheses. It distinguishes itself from sibling tools like 'prec_search' by specifying it retrieves the full text rather than searching for precedents.

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

Usage Guidelines3/5

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

The description implies usage when full text of a precedent is needed, but provides no explicit guidance on when to use this tool versus alternatives like 'prec_search' or other service tools. The example shows basic usage but lacks context about prerequisites or comparisons.

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. 26 tool updatesv1.5.2
    • First observedadmrul_search
    • First observedadmrul_service
    • First observedaiRltLs_search
    • First observedaiSearch
    • First observedarticle_citation
    • First observeddecc_search
    • First observeddecc_service
    • First observeddetc_search
    • First observeddetc_service
    • First observeddrlaw_search
    • First observedeflaw_josub
    • First observedeflaw_search
    • First observedeflaw_service
    • First observedelaw_search
    • First observedelaw_service
    • First observedexpc_search
    • First observedexpc_service
    • First observedlaw_josub
    • First observedlaw_search
    • First observedlaw_service
    • First observedlnkDep_search
    • First observedlnkLs_search
    • First observedlnkLsOrdJo_search
    • First observedlsDelegated_service
    • First observedprec_search
    • First observedprec_service

TDQS

A3.7/5.0

Scored across 26 tools

Disambiguation3/5

The tools are organized into clear categories like laws, administrative rules, precedents, and interpretations, which helps distinguish them. However, there is significant overlap within categories, such as multiple search tools for laws (eflaw_search, law_search, aiSearch, aiRltLs_search) that could confuse agents about which to use first. The descriptions provide guidance (e.g., 'PREFERRED TOOL' notes), but the redundancy creates ambiguity.

Naming Consistency2/5

Naming is inconsistent across the toolset. Some tools use snake_case (admrul_search, eflaw_service), others use camelCase (aiRltLs_search, lnkDep_search), and some mix styles (drlaw_search). There is no uniform verb_noun pattern; for example, search tools vary (search vs. service suffixes), and tools like article_citation deviate entirely. This inconsistency makes the set harder to navigate.

Tool Count2/5

With 26 tools, the count is excessive for a legal search server, leading to complexity and potential confusion. While the domain (Korean legal research) is broad, many tools are redundant (e.g., eflaw_search and law_search for similar law searches) or highly specialized (e.g., drlaw_search for linkage statistics). A more streamlined set of 10-15 tools could cover the same functionality more coherently.

Completeness4/5

The toolset is highly complete for Korean legal research, covering laws, administrative rules, precedents, interpretations, English translations, and linkages. Each category typically includes search and retrieval tools (e.g., search and service pairs), providing good lifecycle coverage. Minor gaps exist, such as no tool for comparing law versions over time, but overall, the surface is comprehensive for the domain.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables 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.
    -
  • 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
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI to search and retrieve South Korean legal information from the National Law Information Center. It allows users to look up specific laws, articles, and detailed legal provisions using natural language queries.
    132
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables users to search and retrieve South Korean statutes, precedents, and administrative rules via the National Law Information Center API. It supports deep legal chain analysis, legislative history tracking, and legal terminology lookups through natural language.
    10
    75 PyPI
    5
    MIT