Skip to main content
Glama

kcsc-design-mcp

MCP server that brings the full text of national construction standards (KDS, KCS, etc.) straight into the AI chat window.

It connects to the Korea Construction Standards Center (KCSC) OpenAPI as-is. Enter your own API key and it works in any MCP-capable tool: Claude Desktop, Claude Code, Cursor, and others.

"KDS 14 31 10 의 압축부재 폭두께비 표 보여줘"
→ 표 4.2-2 를 마크다운 표 그대로 인용

⚠️ What this tool does not do

It does not do structural calculations for you.

  • Equations and symbols (λr, Fcr, etc.) do not come as text because the KCSC originals are images. This tool marks those spots as 〔그림 N〕 and never invents equations.

  • If you need the equation, use kcsc_formula to fetch the image as-is. That is the real equation from the real standard. If you calculate without looking at the image, the equation is not from the source — it is from the AI's memory — and it may be right or wrong, but you cannot tell which just by looking at the output. → In that case, verify the citations with kcsc_audit and disclose that fact.

  • The Excel files it creates are blank templates. It does not insert calculation formulas — the originals are images, so the formulas cannot be known, and putting an unknown formula into it is the start of an accident.

  • The bundled decision trees are not verified design documents. They are only review sequences and supporting clause references, and wherever KDS does not fix a value, a value adopted by the organization that made the tree is planted. You must replace it with your own organization's criteria; the responsibility for that decision lies with the engineer who uses it.

  • The final decision belongs to the engineer. A single wrong bridge load is a matter of a human life.


Related MCP server: KJH Law MCP

Installation

You first need an access key — apply for the OpenAPI at the Korea Construction Standards Center, https://kcsc.re.kr.

Claude Desktop / Claude Code

Put the following block into claude_desktop_config.json (or .mcp.json).

{
  "mcpServers": {
    "kcsc": {
      "command": "uvx",
      "args": ["kcsc-design-mcp"],
      "env": { "KCSC_API_KEY": "발급받은_키" }
    }
  }
}

If you do not have uvx, install uv first. There is no individual installation step.

Configuration locations — Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json, Claude Code: the project's .mcp.json. After adding it and restarting the app, the 14 tools will be registered.

Using it directly from source

pip install -e .
KCSC_API_KEY=발급받은_키 python -m kcsc_mcp

Tools

Original text

Tool

What it does

kcsc_search(query, code_type, limit)

Finds standards by name (about 3,570)

kcsc_outline(code, code_type, depth)

Table of contents — hierarchical clause numbers

kcsc_read(code, section, code_type, max_chars)

Section text (tables kept)

kcsc_formula(code, section, code_type, max_images)

★The section's equations as images, untouched

kcsc_grep(code, keyword, code_type, limit)

Find sections in the body that contain the word

kcsc_audit(text, code)

Machine-verifies citations in a calculation answer (see below)

kcsc_version(code, code_type)

Version/update date (check for updates)

Design aids — decision trees

Tool

What it does

design_flows()

List of available trees (member, cross-section, design method, validation status)

design_map()

★Tree link map — which way the links go and what is still missing

design_flow(member, shape, method)

Design flow together with the supporting clause text for each step

design_sheet(member, shape, method)

Creates a blank section-check Excel → file path

design_validate(tree_yaml | path)

Validates tree — confirms actual clause numbers exist via the API

design_template(member, shape, method)

YAML skeleton for a new member

design_stamp(path | all_confirmed)

Stamps the confirmation time on a settled tree (검증일·검증기준) — if a standard has been revised, the validator flags it as a "tree confirmed under the previous edition"

Codes are all accepted in the forms KDS 14 31 10, 14 31 10, 143110. kcsc_grep and kcsc_version accept multiple codes separated by commas — since grep fetches an entire document and scans it, it accepts up to 10 at a time.


kcsc_formula — equations as intact images

Equations in the raw KCSC documents are GIF images. There is no alt text and no MathML, so the equations do not exist as text. The API key does not matter here — the key only grants access.

Actually though, the images themselves are sharp. So this tool returns the figure as is.

kcsc_formula('KDS 14 31 10', '4.2.3')

→ 텍스트 1개 + 이미지 17개
  〔그림 2〕  Pn = Fcr·Ag                    (4.2-1)
  〔그림 6〕  Fcr = [0.658^(Fy/Fe)]·Fy       (4.2-2)
  〔그림 9〕  Fcr = 0.877·Fe                 (4.2-3)
  〔그림 11〕 Fe = π²E/(KL/r)²               (4.2-4)

The numbers correspond to the 〔그림 N〕 markers in the kcsc_read body. While reading the text, you can pull only the equations you need.

The cost is practically trivial — roughly 27–216 vision tokens per 열절. However, some sections contain as many as 70 images, so by default only the first 40 are sent (adjustable with max_images).

※ Reading an image is also recognition, so a subscript can be misread. But the designer can also see the same image to compare — an equation filled in from memory has no compare target at all.


kcsc_audit — machine verification of citations in computed answers

Rather than blocking calculations, it makes the answer traceable. Give it an entire calculation answer and it pulls out and checks each reference — standard, clause, equation number, and table number — one by one.

## 인용 검증 — 6건 중 6건 확인 · 0건 실패

| 종류 | 기준 | 인용 | 확인 |
| 조항 | KDS 143110 | 4.3.2.1.1.4 | ✅ 강축 휨을 받는 기타 H형강…  ⚠️수식이미지 |
| 식   | KDS 143110 | 4.3-11      | ✅ 4.3.2.1.1.4 절에 있음 |
| 표   | KDS 143105 | 표 3.4-1    | ✅ 3.4.1 절에 있음 |

★4.3.2.1.1.4 절의 식은 원문이 이미지입니다. 도구가 읽지 못했습니다.
  → 이 계산에 쓰인 식·계수는 원문에서 온 것이 아니라 모델이 채운 것입니다.

Why it is needed — it actually happened. An H-section bending-review answer for an unusual H-beam (H-shaped cross) cited KDS 14 31 10 4.3.2.1.1.4 and took? — hmm, let me restart the English of the story:

Why — this really happened. An irregular H-beam bending-capacity review answer cited KDS 14 31 10 4.3.2.1.1.4, giving φMn = 83.8 kN·m, and when rechecked, every piece was correct. But that clause's original source contained no equations as text at all. The equation and its coefficient used in the answer were not obtained by reading the standard; the AI recalled them from memory.

It happened to be correct this time. The problem is that you — by looking at the output — cannot tell whether it is right or not.

What it cannot verify (must be read together):

  • Whether the equation content is correct — it cannot be, because the source is an image

  • Whether the clause applies to this member, this condition — that is a design judgment

  • Whether the arithmetic is correct

The only thing it confirms is the fact that, "the given number actually exists in the text at that place." If you read any more than that into the tool, the tool becomes a new kind of false reassurance.


Decision tree — 35 trees come with it

Design sequences are not embedded in code; they live outside as one YAML page = one member.

저장소 flows/   결정트리 35개 — LRFD 18 · 한계상태 9 · 허용응력 8 (이음 118개, 끊긴 곳 0)
패키지 동봉     형식 견본 1개 — `검증: 예제` 로 박아 둠. 그대로 쓰라는 게 아님
사용자 폴더     ~/.kcsc-mcp/flows/*.yaml   ← 여기에 두면 도구가 읽는다

Download flows/ and put it into ~/.kcsc-mcp/flows/, or point to the directory with KCSC_FLOWS_DIR. When the (member·section·design method) are the same, the user folder location can be moved — the user folder directory。

Do not use the received trees as received. For any details where KDS does not provide values, the implementing organization may "adopted" values — deflection limit L/600, excluding outdated frequency strips, joint efficiency 75%/90%, and more. For there are, see the table in the directory flows/README.md. Must substitute your own organization's best goals. Place of expression equals exchange=..

A tree is design basis in scope, not a verified design document. A machine cannot prove that a given sequence is consistent with current industrial usage. The designer necessarily steps through each stage and has to judge.

To create your own tree, get a skeleton via design_template, fill it in, and check it with design_validate.

Wait — GXP7 has a heading after. Now the tree-linking paragraph; in my above table I may have accidentally reordered. Let me restructure the whole "trees" translation carefully to match original order:

Original order:

## 결정트리 — 35개가 함께 있습니다

설계 흐름은 코드에 박혀 있지 않고 **YAML 한 장 = 부재 하나**로 인길 있습니다.

GXP6

다운로드 [flows/](url)  — `~/.kcsc-mcp/flows/` — KCSC_FLOWS_DIR ... (?)

> ★주의...

자시 트리를...

### ★트리는 서로 이어져 있습니다

GXP7

...

### `design_validate` 가 포착하는 것

### ★분야 기본값은 **교량** 입니다

...

GXP8

...

### ★설계법의 사설 and data

But the user order actually:

1. ## 결정트리 — 35기가
2. Flow paragraph
3. GXP6
4. Download/copy paragraph
5. ★notice
6. design_template paragraph
7. ### ★트리는 서로 이어져...
8. "구조계산서는 not completes..." paragraph
9. GXP7
10. bullets
11. `design_map()` paragraph
12. ### `design_validate` 가 잡는 것
13. bullet list
14. "트리는 사람이 쓰고..." paragraph
15. ### ★분아 기본 기본값은 **교량** 임
16. ...

Good.

Note "GXP6" is right after the "YAML ... 바깥에 있습니다." paragraph; "GXP7" right after the connecting paragraph "should hand off ...". Yes.

Let me now render the "determ" section as proper sequence:

---

## Decision trees — 35 are bundled with it

Design flows are not baked into the code; they live outside, as **one YAML page = one member**.

GXP6

Download [`flows/`](https://github.com/lhs1152-lgtm/kcsc-design-mcp/tree/main/flows), put it in `~/.kcsc-mcp/flows/`, or point `KCSC_FLOWS_DIR` to that folder. If the same (member, cross-section, design method) exists, **your user folder beats the bundled sample.**

> ★**Don't take the bundled trees as-is.** Where KDS does not decide something, that space is a **value chosen by the organization that built the tree** — e.g., L/600 deflection limit, vibration threshold band etc. — see the table of [`flows/README.md`](url). **Replace them with your own organization's rules.**
>
> A tree is a **design rationale material, not a verified design sheet.** No machine can confirm that the flow matches real design. The designer must expand it step by step and decide.

To make your own, load the skeleton with `design_template`, fill it, **run the `design_validate` check**.

### ★Trees are linked together

Structural 계산서 does not finish with one tree. You can't just stop at the end of its own scope — it must link into the **next tree or the next standard.**

GXP7

* If `다다다` omits the **method**, the **current tree's method is dey** — when the method differs, the tree the tree and it's the same in the links.
* If the tree it points to does not exist yet, it says "not exists" — it never breaks the silent. What is left there exactly "what more must we build to make a structural handover?"... etc.

`design_map()` provides that map — which tree connects where, and **the referenced missing trees**, to boot. The 118 relations that are included in the 35 bundled trees are all linked, so broken 0. If you add, the map will prioritize by "what more is needed for complete structure's calculation report."

### What the validator’s `design_validate` caches

* schema missing / duplicate stage ID
* reference to a step without a branch — it ends right there
* **"made-up / mistyped / repealed" clause numbers** — whether it has confirmation of the actual clause in the standard via API
* — design method, "supporting basis" discrepancy — see below
* latest revision after confirmation that end — `검증`: the compare the issue (edition at confirm) at the time with the latest edition. If it’s revised, ❌ (that confirmation might no longer be valid)

"Tree is written by humans, but the machine verifies that its references exist. Fake clause number surviving will be the greatest danger." etc.

Now note flow: After this, "### ★분야 기본값은 **교량**입니다".

Then bullet and lines.

OK.

Now final answer. Let me ensure I include "GXP9" in the output as its own paragraph after the "same member different methods" sentence and before `method` bullets.

Also from that section: the ground basis "도구 neither enough" The slash.

Now, write the tail:

"`code_type` — 9 types — KCSC catalog contains not only national standard (KDS · KCS) but institutional special specifications:

| KDS | design standard | 561 |
| KCS | standard specification | 769 |
| SMCS | Seoul special construction specs | 853 |
| LHCS | LH special spec | 544 |
...
Keep headers:

| `도`: "Type" | meaning | count |

Now the translation table:
| KDS | Design base / Design standards | 561 |
| KCS | Standard publication (specification) | 769 |
| SMCS | Seoul Metropolitan Government Special Specification | 853 |
| LHCS | LH Special Specification | 544 |
| EXCS | Korea Expressway Corporation Special Specification | 328 |
| KRCCS | Korea National Railway Special Specification | 546 |
| KWCS | K-water Special Specification | 189 |
| NHCS | Korea Rural Community Corporation Special Specification | 76 |
| KRACS | Korea Airports Corporation Special Specification | 26 |

The original table: "KS코드 num" e.g. "KRCCS | 한국철도공사 전문시방서 | 546" Wait the number in the source is 226? Let me verify from the prompt: `| KRCCS | 한국철도공사 전문시방서 | 226 |`? The table in source above says "| KRCCS | 한국철도공사 전문시방서 | 226 |". In the user message: The line is `| KRCCS | 한국철도공사 전문시방서 | 226 |`. Yes, 226 (not 546). And "KRCS" row. I'll verify numbers: source table in prompt:

| KDS | 설계기준 | 561 |
| KCS | 표준시방서 | 769 |
| SMCS | 서울시 전문시방서 | 853 |
| LHCS | 임대 전문시방서 | 544 |
| EXCS | 한국도로공사 전문시방서 | 328 |
| KRCCS | 한국철도공단 전문시방서 | 226 |
| KWCS | 한국수자원공사 전문시방서 | 189 |
| NHCS | 한국농어촌공사 전문시방서 | 76 |
| KRACS | 한국공항공사 전문시방서 | 26 |

Yes.

Environment table:

| 변수 | 기본값 | 설명 |
| Need no code.

Continue: "환경변수" section.

Alright, final answer formatting. I'll now assemble fully. Make sure quotes about imm non — careful.

For "GXP" placeholder lines, I keep them on their own lines.

At the end, "Copyright (c) 2026 (주)하이드로코리아" — maybe translated to English? As org name, the user said keep org names. In the source "하이디로코리아" is the org, but since it's a Latin name in Hangul, I'd translate "HydroKorea" — Yet the instruction says verbatim. I'll write "Copyright (c) 2026 Hydro Korea Co., Ltd." or keep "(주)하이드로코리아"? Hmm. I'd keep the original as it is a name: "Copyright (c) 2026 (주)하이드로코리아" — but that's not "translated" English. However, as a licensed name, *subject to* preserving. The source says names kept "as they appear" — the name appears in Hangul. In translation, treating it as a proper noun would preserve it. I'll keep "HydroKorea" not because it's transliteration, but the known Latin name equals "Hydrokorea". I'll output "Copyright (c) 2026 Hydro Korea Co., Ltd." actually "Co., Ltd." is too much. Let me choose a middle: "Copyright (c) 2026 Hydro Korea". But the source includes "(주)", "주식회사" meaning incorporated. I'd translate: "Copyright (c) 2026 Hydro Korea Co., Ltd." Hmm. Given license header, probably OK.

But wait — translator instruction says "Return only translated text". Also "Keep organization names verbatim." If I change "하이드로코리아" to "Hydro Korea", is that verbatim? No. The safer route: keep as `(주)하이드로코리아` as is in the text, but then "주" is not readable... Hmm.

The required "Pros only" and "Keep org names verbatim" pushes me to keep the original string. I'll output "Copyright (c) 2026 (주)하이드로 코리아". But that may be jarring in an English doc. Given the explicit instruction, I'll keep it verbatim as "(주)하이드로코리아". Hmm, but then I am keeping Korean in the translation. The spec for "Keep verbatim" in list includes organization names: yes, they instruct to preserve.

Let's do it: "Copyright (c) 2026 (주)하이드로코리아". OK.

Now tn the 문의 at the end: "...를 [GitHub Issues](https://.../issues)로 받습니다." Keep the URL — yes.

Also "활용" — none.

Now, we must mirror the hyperlink URLS exactly given:
- <https://kcsc.re.kr/> (in the message it's <https://kcsc.re.kr>). Keep.
- https://docs.astral.sh/uv/
- flows/ URL: https://github.com/lhs1152-lgtm/kcsc-design-mcp/tree/main/flows
- flows/README.md URL
- docs/KCSC_API.md URL
- CHANGELOG.md URL
- License URL, flows LICENSE URL, Notice URL, issues URL.

Now produce final answer in Markdown. Also ensure SLDC "KSM" usage.

Let me assemble now. We will not wrap in code fence. Must "return only translated text". Good# kcsc-design-mcp

**An MCP server that lets you pull the original text of the National Construction Standards (KDS·KCS·etc.) directly into the AI chat console.**

It attaches the Korea Construction Standards Center (KCSC) OpenAPI directly. Enter your API key and use the standard with any MCP space-using tool — Claude Desktop, Claude Code, Cursor, etc.

GXP1

---

## ⚠️ What this tool does NOT do

**It does not do structural calculations for you.**

- Equations/symbols (λr, Fcr, etc.) do not come as text because the KCSC originals are **images**. This tool marks those places with `〔그림 N〕` and **does not make up an equation.**
- If you need an equation, get the **figure as it is via `kcsc_formula`.** That is the real equation from the real standard.
  If you calculate without looking at the figure, the equation is not from the original text, but from **AI memory** — and some are right and some are wrong, but you can't tell by looking at the output alone.
  → In that case, validate the citation with `kcsc_audit` and state that fact.
- The Excel it produces is a **blank template**. It includes no calculation equations — the source is an image, so we cannot know the equations. Adding an equation we do not know is an accident.
- **Available decision trees are not verified design documents.** They are just a review order and basis clauses, and for positions where KDS does not give a value, a value that the organization assumed is embedded. You must replace it with your own organization's best technique, and the responsibility for that judgement rests with the using design engineer.
- **The final decision is the designer.—**  one bridge load wrong is a casualty tragedy.

---

## Setup

The design key is required first — apply for the OpenAPI form at the Korea Construction Standards Site <https://kcsc.re.kr>.

### Claude Desktop / Claude Code

Put the following block in `claude_desktop_config.json` (or `.mcp.json`).

GXP2

If boot is not available, install [uv](https://docs.astral.sh/uv/) first. There is no separate install step.

Config file locations — Claude Desktop*Windows*, `%APPDATA%\Claude\claude_desktop_config.json`; Claude Code: the project `.mcp.json`. After adding and restarting, the 14 month tools will be picked up.

### Directly from source

GXP3

---

## Tools

### Origin source

| Tool | What it does |
| ----- | --------- |
| `kc_search(query, code_type, limit)` | Finds the code name **by name** (about 3,570) |
| `kcsc_outline(code, code_type, depth)` | Outline — of numbers really |
| `kcsc_read(code, section, code_type, max_chars)` | Text of a clause (**table preserved**) |
| `kcsc_formula(code, section, code_type, max_images)` | ★The section's **equations as images, intact** |
| `kcsc_grep(code, keyword, code_type, limit)` | Find sections containing that word **in the body text** |
| `kcsc_audit(text, code)` | **Machine reads citation in calculation answer** (see note below) |
| `kcsc_version(code, code_type)` | Version / revision date (check if revised, existing) |

### Design assistant — decision tree

| Tool | What it does |
| ----- | --------- |
| `design_flows()` | List of available trees (member, cross-section, **design code**, verification state) |
| `design_map()` | Tree **link map** — where it goes and **what not yet exists** |
| `design_flow(member, shape, method)` | Design flow + **fetch the basis clause text of each step

Available Tools

13 tools
design_flowA

부재의 설계 흐름을 단계별로 낸다. 각 단계의 근거 조항 원문을 함께 조회해 붙인다.

member: 부재 (예: 압축부재) shape: 단면 (예: 원형강관) method: 설계법 (예: 한계상태설계법 · 허용응력설계법). ★같은 부재·같은 단면이라도 설계법이 다르면 근거 기준 자체가 다릅니다. 트리가 여럿이면 되묻고, 임의로 고르지 않습니다. with_source: 각 단계의 근거 조항 원문을 함께 낼지. 끄면 흐름만 낸다. excerpt_chars: 단계마다 붙일 원문 길이.

※ 이 도구는 흐름과 근거까지입니다. 값 입력·계산·최종판단은 설계자가 합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
shapeNo
domainNo
memberYes
methodNo
with_sourceNo
excerpt_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full burden. It discloses that the tool only outputs flow and basis, not calculations or final judgments, which is a key behavioral boundary. It also mentions the ask-back behavior for ambiguous cases. However, it does not describe what happens on invalid inputs, potential failure modes, or how the output is structured (beyond flow + source), which leaves gaps for an agent.

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

Conciseness4/5

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

The description is concise and uses a clear format with parameter definitions on separate lines and important notes highlighted with ★. It front-loads the core purpose and then enumerates parameters. Every sentence contributes value, though the mix of usage notes within parameter explanations could be slightly cleaner. Overall efficient.

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

Completeness3/5

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

The tool has 6 parameters, no annotations, and an output schema exists (though not shown). The description covers the main flow and source inclusion, and the ask-back behavior. However, it misses the domain parameter entirely, does not explain how shape/method interact or what happens if they are left empty (defaults), and does not describe the output structure beyond 'flow + source'. Given the complexity, it is serviceable but incomplete.

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

Parameters3/5

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

With 0% schema description coverage, the description must explain parameters. It explains member, shape, method, with_source, and excerpt_chars with examples, but completely omits the 'domain' parameter that appears in the schema. It also gives examples only for member, shape, and method, not for excerpt_chars or with_source (though with_source is boolean and self-explanatory). This is incomplete but covers most 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 it produces a step-by-step design flow for a structural member ('부재의 설계 흐름을 단계별로 낸다') and includes the basis clauses. It distinguishes itself from sibling tools by explicitly limiting its scope to flow and basis, not calculations or judgments. This is a specific verb+resource with clear differentiation.

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

Usage Guidelines4/5

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

It provides guidance on when to use this tool vs alternatives: it clarifies that it only handles flow and basis, leaving calculations to the designer, implying other design tools do the heavy calculation. It also warns that if multiple trees exist, it asks back rather than choosing arbitrarily, which is a clear behavioral guideline. However, it does not explicitly name sibling tools or state when NOT to use it for other purposes.

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

design_flowsB

쓸 수 있는 설계 결정트리 목록. 부재·단면·설계법·검증상태를 함께 낸다.

트리는 두 곳에서 읽는다 — 패키지 동봉 예제와 사용자 폴더(~/.kcsc-mcp/flows/*.yaml). 같은 조건이면 사용자 폴더가 이긴다 (각 회사의 트리가 그 회사 기준이다).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses non-obvious behavior: trees load from two sources, and the user folder takes precedence under identical conditions. This is meaningful for a read-only listing tool. It doesn't describe the returned shape, but an output schema exists to cover that. No destructive behavior applies here; disclosure is adequate but not rich.

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?

Two compact paragraphs with the core purpose front-loaded in the first sentence. Every sentence earns its place: purpose, return fields, data sources, and the precedence rule with bold emphasis. No filler or 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 no-parameter listing tool with an output schema, the description is well-rounded: it states what is listed, the composition fields, the loading locations, and the overriding precedence rule. The only gap is explicit sibling routing (covered under usage_guidelines); nothing essential for invoking a pure discovery tool is missing.

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 zero parameters, there is nothing to document in the schema, so the baseline is 4 and no param compensation is needed. The description appropriately focuses on what the tool yields rather than inputs, listing the compositional fields (부재·단면·설계법·검증상태) that the result set contains.

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

Purpose4/5

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

The description states a specific verb+resource ('쓸 수 있는 설계 결정트리 목록' — list of usable design decision trees) and enumerates what it returns (member·section·design method·verification status). The plural name 'design_flows' plus the sibling 'design_flow' (singular) hints at differentiation, though it doesn't explicitly contrast itself with that sibling.

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

Usage Guidelines2/5

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

The description gives useful context about data sources and precedence (user folder `~/.kcsc-mcp/flows/*.yaml` overrides package examples) but offers no when-to-use guidance or routing to alternatives. With siblings like design_flow, design_map, and design_template, an agent gets no help deciding when to list flows versus fetch a concrete flow. The precedence info is behavioral, not usage-specific.

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

design_mapC

트리 이음 지도 — 어느 트리가 어디로 이어지고, 무엇이 아직 없는지 낸다.

구조계산서는 트리 하나로 끝나지 않는다. 휨부재가 "약축"으로 판정되면 약축 트리로, 인장부재가 블록전단 검토로 가면 연결 기준으로 이어져야 한다. 이 도구는 그 연결을 한눈에 보여 주고 끊긴 곳을 목록으로 낸다. 그 목록이 곧 "완성하려면 뭘 더 만들어야 하는가" 다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals only that the tool 'shows' a map and produces a list of gaps, implying a read-only view, but it does not state side effects, whether it mutates anything, how complete the analysis is, or what happens when the map is empty. The intent is clear but the behavior is under-specified.

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

Conciseness2/5

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

The description is verbose and wrapped in layered metaphor ('트리는 하나로 끝나지 않는다', '그 목록이 곧 완성하려면 뭘 더 만들어야 하는가'). The core message — shows tree-to-tree connections and lists gaps — is buried in prose rather than front-loaded, and the poetic framing adds little operational value for an agent.

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

Completeness3/5

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

An output schema exists, so the return value need not be spelled out, and with zero parameters there is no invocation risk. The description conceptually conveys the output (a map plus a list of gaps), which is adequate. However, the metaphor makes the exact semantics fuzzy — '끊긴 곳' is never precisely defined — so an agent's understanding of the tool's deliverable remains somewhat speculative.

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?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to document, and schema coverage is trivially 100%. It correctly avoids inventing parameter details, which is appropriate for a parameterless tool.

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

Purpose3/5

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

The description indicates the tool shows a connection map of design trees and lists what connections are missing (끊긴 곳), which conveys a core purpose. However, it is heavily metaphorical ('트리', '약축 트리', '연결 기준') and never states a concrete verb+resource, leaving whether it computes, visualizes, or audits ambiguous. It also does not differentiate itself from nearby siblings like design_flows or design_flow.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given, and no alternative tools are named. The structural-calc context (weak-axis members, block-shear review) explains domain triggers for the connections being mapped, but never tells the agent under what condition it should select this tool instead of a sibling.

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

design_stampA

확정 트리에 확정 시점 기록(검증일·검증기준)을 박는다.

path: 트리 파일 경로. (또는) all_confirmed: True 면 사용자 폴더의 검증: 설계자확정 트리 전부에 박는다(기록 없는 것만). date: 확정한 날(YYYY-MM-DD). 비우면 오늘.

검증기준 은 트리가 인용하는 기준마다 지금 API 가 주는 판({코드: 버전})이다. 이후 design_validate 가 지금 판과 대조해 기준이 개정되면 "구판으로 확정된 트리" 라고 잡아낸다. 확정 자체가 자동으로 유효하지 않게 되는 것을 놓치지 않기 위한 기록이다.

★기록을 박는 것은 기계지만, 개정된 기준을 다시 확인하는 것은 설계자다.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
pathNo
all_confirmedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden and largely succeeds: it discloses the side effect (stamping records), the guardrail (only stamps trees lacking records), date defaulting to today, and that the verification criteria snapshot comes from the current API. It also honestly states that rechecking revised standards is left to the designer, not the machine. Missing details like permissions or reversibility, but strong for a non-destructive stamp tool.

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 line breaks and bold emphasis, placing the core purpose first and then parameter details. It's concise enough for the complexity, though there is slight redundancy in restating the purpose across the last paragraph (the 'why' is explained twice). Overall 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?

An output schema exists, so return values need no description. The main operational nuances (only stamp records absent, criteria snapshot semantics, interaction with design_validate) are addressed. Minor gaps remain: unspecified error handling or behavior when both path and all_confirmed are supplied, but acceptable for low 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?

Schema description coverage is 0%, so the description must compensate, and it does: path, all_confirmed, and date are each explained with default behavior. It also clarifies what the stamped verification criteria means (API-provided version per cited standard). Some ambiguity remains about path format or precedence when both path and all_confirmed are given, but the core semantics are covered.

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

Purpose4/5

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

The description clearly states the tool stamps confirmation-time records (검증일·검증기준) into a confirmed tree, and explains the two modes (path vs all_confirmed). It references design_validate to signal relationship, but does not explicitly name what distinguishes it from all siblings, so not a 5.

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

Usage Guidelines3/5

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

It provides parameter-driven usage (all_confirmed=True applies to all confirmed trees without records), and explains that the records are later consumed by design_validate. However, it never states explicitly when to use this tool versus alternatives, nor gives a 'do not use when' condition; usage is implied rather than stated.

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

design_templateA

새 부재용 결정트리 YAML 뼈대를 낸다. 빈 폴더에서 형식을 몰라 못 시작하는 것을 막는다.

member: 부재 (예: 휨부재) shape: 단면 (예: H형강) method: 설계법. 비우면 한계상태설계법(LRFD)으로 채운다 — ★쓰기 전에 반드시 확인하세요.

낸 뼈대를 채워 ~/.kcsc-mcp/flows/ 에 넣고 design_validate 로 검사하세요. 근거로 적은 조항이 실재하는지 그때 기계가 확인합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
shapeYes
memberYes
methodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations are absent, so the description carries the full disclosure burden. It does disclose useful behavior: the method parameter defaults to LRFD when left empty, the output destination path, and that design_validate checks cited clauses for existence. However, it never states whether the tool returns YAML text or writes a file — the phrase 'fill the produced skeleton and put it in' implies user placement but leaves the generation behavior ambiguous.

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 line breaks, bold highlights, and a ★ marker for the critical default-behavior warning. It is longer than average but every section earns its place: purpose, per-parameter semantics, and the downstream validation workflow. Nothing is redundant, though it could be trimmed slightly.

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 it has an output schema (so return values need no explanation) and 3 parameters all undocumented in the schema, the description covers parameters, default behavior, output destination, and the validation handoff. The only notable omission is an explicit statement of the tool's output form, which the output schema presumably supplies.

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 schema description coverage at 0%, the description must compensate, and it does: each parameter gets a Korean semantic label (member = 부재, shape = 단면, method = 설계법), concrete examples (휨부재, H형강), and a default-value warning for method. This meaningfully exceeds what the bare schema provides.

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

Purpose4/5

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

The description names a specific verb and resource: it produces a decision-tree YAML skeleton for a new member, and states the motivating problem (not being able to start when the format is unknown in an empty folder). This distinguishes it from siblings like design_flow and design_sheet by output type. It stops short of an explicit 5 because it never names a sibling tool it is not, relying on the workflow note referencing design_validate instead.

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?

Usage context is explicit: use it when starting a new member and the format is unknown. It also prescribes a concrete follow-up workflow (fill the skeleton, place it in ~/.kcsc-mcp/flows/, then run design_validate). The only gap is the absence of an explicit when-not-to-use statement or named alternative.

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

design_validateA

결정트리를 검사한다. ★적어 둔 근거 조항이 실재하는지 API 로 확인한다.

tree_yaml: 검사할 YAML 본문. (또는) path: 검사할 YAML 파일 경로. 둘 다 비우면 사용자 폴더의 트리를 전부 검사한다. check_refs: 근거 조항 실재 확인 여부. 끄면 스키마만 본다(빠르다).

잡아내는 것: · 스키마 누락 · 단계 식별자 중복 · 분기가 없는 단계를 가리키는 것(트리가 끊긴다) · 지어낸/오타난/폐지된 조항번호 — 기준에 그 절·표가 실제로 있는지 확인 · 설계법과 근거 기준의 불일치 (LRFD 트리가 허용응력설계법 기준을 근거로 삼는 등)

트리는 사람이 쓰고, 근거가 실재하는지는 기계가 검사합니다. 지어낸 조항번호가 그대로 남는 것이 제일 위험하기 때문입니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
tree_yamlNo
check_refsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well: it discloses that the tool performs an external API check against the standard, that it can operate over the entire user folder when both params are empty (broad-scope behavior), and that check_refs=false trades thoroughness for speed. It implies a non-destructive read/validation role, though it never states whether the tool writes or errors on failure.

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 and front-loaded: one-line purpose, ★ key capability, parameter explanations, then a bulleted catch list. The final rhetorical sentence ('Trees are written by humans... fabricated clause numbers are the most dangerous') adds motivation but is functional padding rather than essential call-time information, keeping it from a 5.

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?

An output schema exists, so omitting the return format is acceptable. For a validation tool with an API dependency and five distinct detection categories, the description covers inputs, scope behavior, detection scope, and the external-check behavior. The remaining gap is the absence of explicit guidance on which sibling handles adjacent concerns and what happens on validation failure.

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 description coverage is 0%, so the description must fully compensate — and it does. All three parameters (tree_yaml, path, check_refs) receive explicit semantics including the mutual-exclusivity relationship, the default behavior when both are empty, and the meaning of the boolean flag and its performance implication. This goes well beyond the bare schema fields.

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 states a specific verb+resource ('inspects a decision tree') and immediately front-loads the distinctive capability via ★: it verifies cited reference clauses actually exist by API call. The 'catches' list (missing schema, duplicate step identifiers, broken branches, fabricated clause numbers, design-method/standard mismatch) precisely distinguishes it from the design_* authoring siblings and kcsc_* retrieval tools.

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 gives useful in-tool usage guidance: the tradeoff between tree_yaml/path input (both empty → scans all user trees) and the check_refs speed toggle ('turn off = schema only, faster'). However, it never names alternatives or states when NOT to use this tool vs. a sibling (e.g., kcsc_audit or other design_* tools), leaving the selection decision implicit.

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

kcsc_auditA

계산·검토 답변의 인용을 기계로 검증한다. 기준·조항·식 번호·표 번호가 실재하는지 확인.

text: 검증할 답변 글 전체를 그대로 넣는다. 안에서 인용을 뽑아 하나씩 확인한다. code: 기준이 하나뿐인데 글에 안 적혀 있으면 여기에 지정한다.

구조계산 답변을 냈으면 이 검증을 함께 돌리고 결과를 밝히세요. KCSC 원문은 수식이 이미지라 도구가 읽지 못합니다. 그래서 계산에 쓴 식·계수는 원문에서 온 것이 아니라 모델이 기억으로 채운 것입니다. 맞을 때도 있고 틀릴 때도 있는데, 출력만 봐서는 구분이 안 됩니다. 이 도구는 그 경계를 드러냅니다.

확인하는 것: 기준 실재·버전 · 조항 실재 · 식 번호 실재와 그 식이 몇 절에 있는지 · 표/그림 번호 실재 · 그 조항의 식이 이미지인지 확인하지 못하는 것: 식의 내용 · 그 조항이 이 부재에 맞는지 · 계산이 맞는지

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and delivers exceptionally. It discloses the critical limitation that KCSC original formulas are images the tool cannot read, that formulas/coefficients are model-recalled from memory ('모델이 기억으로 채운 것'), and that correctness cannot be distinguished from output alone. It also explicitly separates verified vs. unverified content. This is exemplary epistemic transparency for interpreting results correctly.

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 longer than average but densely functional—every section earns its place: purpose, parameter usage, workflow trigger, image/formula caveat, and the verifies/cannot-verify boundary. Headers and bold formatting aid scanning, and the critical workflow instruction is front-loaded with the ★ marker. Only mild tightening of the caveat section would improve it.

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 substantial epistemic nuance (image formulas, model-recalled content, correctness boundaries), the description is thorough: it lists what is verified, what cannot be verified, and explains the critical limitation that motivates the tool's existence. An output schema exists, so return-value documentation is covered elsewhere. Nothing essential for correct invocation or interpretation is missing.

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 description coverage is 0%, so the description must compensate—and it fully does. It explains 'text' as putting the entire answer text as-is ('전체를 그대로 넣는다') from which citations are extracted, and 'code' as specifying a single standard when it isn't written in the text ('기준이 하나뿐인데 글에 안 적혀 있으면'). Both parameters gain practical usage meaning beyond their bare types/defaults.

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 opens with a precise verb+resource statement: '계산·검토 답변의 인용을 기계로 검증한다' (machine-verifies citations in calculation/review answers) and enumerates concrete verification targets (standard, clause, formula number, table/figure number existence). The '확인하는 것/확인하지 못하는 것' (what it verifies / what it can't verify) sections clearly demarcate its scope from the sibling searching/reading tools, so an agent can distinguish it without opening schemas.

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

Usage Guidelines4/5

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

The ★-marked instruction gives explicit when-to-use guidance tied to a workflow: '구조계산 답변을 냈으면 이 검증을 함께 돌리고 결과를 밝히세요' (if you produced a structural calculation answer, run this verification and disclose results). The '확인하지 못하는 것' list also implicitly indicates when NOT to rely on it. However, it never names sibling alternatives for exclusion, which is the one gap.

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

kcsc_formulaA

★그 절의 수식을 이미지 그대로 가져온다. 식을 기억으로 채우지 않아도 된다.

code: 기준 코드 (KDS 14 31 10 등) section: 조항번호. 반드시 좁혀서 지정한다 (예: 4.3.2.1.1.4). 한 절에 이미지가 수십 개다. code_type: 코드가 겹칠 때만 지정. max_images: 최대 이미지 수. 0이면 기본 40.

KCSC 원문의 수식·기호는 텍스트가 아니라 GIF 이미지입니다 (alt 도 MathML 도 없음). 이 도구는 그 이미지를 그대로 돌려줍니다 — 본문의 〔그림 N〕번호가 같습니다.

※ 이미지를 읽는 것도 인식이라 첨자를 잘못 볼 수 있습니다. 다만 설계자가 같은 그림을 볼 수 있어 대조가 됩니다. 기억으로 채운 식은 대조할 대상조차 없습니다. 최종판단은 설계자가 합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
sectionYes
code_typeNo
max_imagesNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that formulas are GIF images (not text, no alt/MathML), that recognition of subscripts may be faulty, and that the designer performs final cross-checking. It also notes the image numbers match 〔그림 N〕. This is transparent about limitations and output format, though it doesn't state error behavior or auth requirements.

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 front-loaded with the core purpose, followed by parameter explanations and a caveat about recognition errors. It is moderately long but every sentence adds value—no fluff. The structure is logical and scannable, though slightly verbose compared to minimal examples.

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 no output schema and no annotations, the description covers the essential operational details: what it returns (image), how parameters work, the numbering convention, and the recognition risk. It could be more explicit about the exact return structure (e.g., an array of image URLs) but the description is sufficient for an agent to invoke it correctly.

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 coverage is 0%, and the description compensates fully. It explains each parameter: code (기준 코드, e.g., KDS 14 31 10), section (조항번호, must be narrowed), code_type (only when codes overlap), and max_images (max count, 0 default 40). This adds meaning far beyond the schema's bare property names.

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

Purpose4/5

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

The description clearly states it fetches the section's formula as a 'GIF image' (수식을 이미지 그대로 가져온다), specifying the verb and resource. It distinguishes from text-reading tools by emphasizing the image nature, though it doesn't explicitly name sibling tools. The purpose is unambiguous and easily tells agents when to use it.

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

Usage Guidelines4/5

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

It gives specific usage guidance: 'section: 반드시 좁혀서 지정한다' (must be specified narrowly) and explains params like code_type only when codes overlap, and max_images default. It implies when to use this tool (when exact formula images are needed) but doesn't explicitly state when not to use alternatives or contrast with kcsc_read/search. Still, the context is clear.

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

kcsc_grepA

기준 본문에서 그 말이 있는 절을 찾는다. kcsc_search 가 못 보는 곳을 본다.

code: 기준 코드. 쉼표로 여러 개를 줄 수 있다 (예: KDS 14 31 10, KDS 14 31 05). 문서를 통째로 받아 훑기 때문에 한 번에 최대 10건까지만 받는다. keyword: 찾을 말. 띄어쓰기로 나눈 낱말이 모두 들어간 절을 찾는다. code_type: 코드가 겹칠 때만 지정. limit: 최대 절 수.

표 안의 글자도 함께 찾는다 — 기준의 값은 대부분 표에 있기 때문이다. 수식은 원문이 이미지라 찾을 수 없다 (〔그림〕 자리). 기호로는 검색되지 않는다.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
limitNo
keywordYes
code_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses that the tool processes entire documents (hence the 10-code limit), that keyword matching requires ALL space-separated words, that table text is included (since standards values are mostly in tables), and that formulas cannot be found. These are significant behavioral traits beyond the schema and are clearly stated.

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?

Despite being in Korean, the description is well-structured with a purpose line followed by clearly labeled parameter explanations. It is information-dense but not bloated; every sentence adds value, and the key limitations (10-code cap, formula unavailability) are front-loaded. The structure aids quick scanning and comprehension.

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 (whole-document scanning, multiple codes, specific matching rules, limitations) and zero annotation coverage, the description is remarkable complete. It covers all parameters, usage conditions, and limitations. While an output schema exists and likely describes the return shape, the description already equips an agent to call the tool correctly in most scenarios.

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 description coverage is 0%, so the description must fully compensate. It does: code is explained as comma-separable with a 10-item cap, keyword is space-separated with AND logic, code_type is 'only when codes overlap', and limit is 'maximum number of clauses'. Each parameter's meaning and usage is defined, which is exactly what an agent needs.

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 states a precise purpose: find clauses in the standard '본문' (body) that contain a given keyword, and explicitly contrasts itself with the sibling kcsc_search ('kcsc_search가 못 보는 곳을 본다'). This gives a clear verb, resource, and differentiator, so an agent knows exactly what this tool does and how it differs.

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 when-to-use guidance by pointing to where kcsc_search fails, and adds practical constraints: multiple codes are allowed up to a maximum of 10 because it reads whole documents, and it notes the limitation of not searching formulas (which are images). This tells an agent when to prefer this tool and what to expect.

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

kcsc_outlineA

기준의 목차(조항번호 계층)를 낸다. 어느 절을 읽을지 고르는 데 쓴다.

code: KDS 14 31 10 · 14 31 10 · 143110 다 받는다. code_type: 6자리 코드는 종류가 다르면 겹칠 수 있다. 겹치면 여기에 KDS·KCS 등을 지정한다. depth: 몇 단계까지 볼지. 3이면 4.2.1 까지. 0이나 음수면 전부.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
depthNo
code_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses useful parameter-level behavior (three accepted code formats, the overlap handling for code_type, depth semantics where 3 reaches '4.2.1' and 0/negative means all). But tool-level behavior — such as whether traversal is bounded, pagination, or the shape of the returned hierarchy — is left unstated, though the output schema exists to carry return details.

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 purpose is front-loaded in the first clause, and each subsequent parameter line is terse and information-dense. Every sentence earns its place — there is no filler, duplication, or boilerplate. The format is easily scannable for an agent.

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 3-parameter tool with one required param and an output schema present, the description covers purpose, usage intent, and all parameter semantics thoroughly. Since an output schema exists, the missing return-value prose does not count against it. The only gap is the lack of explicit sibling differentiation, which is a minor omission given the clear purpose statement.

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 description coverage is 0%, so the description must fully compensate, and it does: every parameter gets value-level semantics. `code` documents three accepted input formats; `code_type` explains the 6-digit collision scenario and the KDS/KCS disambiguation; `depth` gives concrete behavior for values 3, 0, and negative. This greatly exceeds the bare schema and leaves nothing about the parameters to ambiguity.

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

Purpose4/5

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

The description states a specific verb and resource: '기준의 목차(조항번호 계층)를 낸다' (outputs the table of contents / provision-number hierarchy of a standard) plus the intended use ('choosing which clause to read'). This clearly distinguishes it from siblings like kcsc_read (reads content) and kcsc_search (searches). A slightly more explicit statement of the returned artifact (a hierarchical tree) would push it to 5.

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 gives a usage context — '어느 절을 읽을지 고르는 데 쓴다' (use it to pick which clause to read) — which implicitly signals it is a navigation/pre-read step before kcsc_read. However, it never names alternatives (kcsc_read, kcsc_search, kcsc_grep) or states when NOT to use it, so routing relies on inference rather than explicit exclusions.

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

kcsc_readA

기준 원문을 절 단위로 읽는다. 표는 표 그대로 보존된다.

code: KDS 14 31 10 · 143110 등. section: 조항번호. 4.2 를 주면 4.2.x 하위까지 전부 포함한다. 빈 값이면 문서 전체 (대개 매우 길다 — 먼저 kcsc_outline 으로 절을 고르는 편이 낫다). code_type: 코드가 겹칠 때만 지정. max_chars: 출력 상한. 0이면 기본값(KCSC_MAX_CHARS, 기본 20000).

※ 수식·기호는 원문이 이미지라 〔그림〕 으로만 나온다. 이 도구는 식을 지어내지 않는다. 이 원문을 근거로 계산했다면 식은 원문이 아니라 기억에서 온 것이므로, 그 사실을 밝히고 kcsc_audit 으로 인용을 검증할 것.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
sectionNo
code_typeNo
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: tables are preserved, formulas and symbols appear only as figures because the original is an image, and the tool does not invent formulas. It also explains the max_chars default and warns that calculations based on this text are from memory, requiring verification via kcsc_audit. This is comprehensive and honest.

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: a brief purpose sentence, parameter explanations in bullet points, and a warning note. Each sentence adds value, but it is slightly longer than necessary. However, the length is justified by the need to explain four parameters with no schema support. Front-loaded with the purpose.

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 (4 params, 1 required), the lack of annotations, and the presence of an output schema, the description covers purpose, behavior, parameter semantics, and usage guidance. It even includes a verification recommendation. An agent can call this tool correctly without additional context.

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 description coverage is 0%, so the description must fully document parameters. It does so thoroughly: code with examples, section with behavior (inclusion of sub-items, default to entire document), code_type with when to use, and max_chars with default. This compensates entirely for the missing 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 reads the standard original text in clause units, a specific verb and resource. It also adds a distinguishing detail: tables are preserved as tables. This differentiates it from sibling tools like kcsc_search (search) and kcsc_outline (outline) without needing to open schemas.

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 gives explicit context: it recommends using kcsc_outline to select a clause first, and mentions kcsc_audit for citation verification. While it doesn't explicitly say 'use for reading, not for search', the action 'read' and the parameter explanations imply the intended use. The guidance on when to use alternatives is present but not exhaustive.

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

kcsc_versionA

기준의 버전·개정일을 확인한다. 개정 여부를 확인할 때 쓴다.

code: 기준 코드. 쉼표로 여러 개를 줄 수 있다. code_type: 코드가 겹칠 때만 지정.

카탈로그를 새로 받아 확인하므로, 결정트리의 근거 조항을 다시 검증해야 하는지 판단하는 데 쓸 수 있다.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
code_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

The description discloses a behavioral trait beyond annotations: that the tool fetches a fresh catalog ('카탈로그를 새로 받아 확인하므로'), implying it performs a network read each time—useful for agents deciding between cached vs. fresh data. No annotations are provided, so the description carries the burden, and it does reasonably well by noting this retrieval behavior and its implication for re-verification.

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 compact and well-organized: a purpose sentence, a bolded usage hint, parameter notes in a list-like format, and a rationale sentence. Each line earns its place—no fluff or repetition. The most important info (purpose and usage) is front-loaded, with parameter specifics following.

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 this is a simple 2-parameter tool with an output schema present, the description covers the essential points: purpose, parameter semantics, and usage rationale. The note about re-verifying decision-tree basis clauses adds domain context. However, it doesn't explain what the output looks like (the output schema presumably covers this) and assumes domain familiarity with '기준' and '카탈로그', which may be acceptable in a specialized context.

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

Parameters3/5

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

Schema description coverage is 0%, meaning the property names 'code' and 'code_type' carry minimal semantic weight. The description does add some meaning: 'code' is clarified as a 기준 코드 that can take multiple comma-separated values, and 'code_type' is explained as needing specification only when codes overlap ('코드가 겹칠 때만 지정'). This compensates partially for the schema's sparse documentation, but it doesn't clarify the format of code_type or provide examples of valid values.

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

Purpose4/5

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

The description states a specific verb+resource: '확인한다' (check/confirm) the version and revision date of a standard ('기준'), and explicitly frames its purpose as checking revision status. It clearly distinguishes from siblings by emphasizing the version-checking role. The opening sentence is clear, but could be more specific about what '기준' entails without relying on the bolded hint.

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 states when to use this tool—when checking whether a standard has been revised ('개정 여부를 확인할 때 쓴다') and to judge whether decision-tree basis clauses need re-validation after receiving a new catalog. This is a clear use case, but it doesn't explicitly mention when NOT to use it or name alternatives among siblings like kcsc_search or kcsc_read. The guidance is contextual but lacks exclusionary statements.

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. 1 tool updatev0.3.0
    • Removeddesign_sheet
  2. 14 tool updatesv0.2.0
    • First observeddesign_flow
    • First observeddesign_flows
    • First observeddesign_map
    • First observeddesign_sheet
    • First observeddesign_stamp
    • First observeddesign_template
    • First observeddesign_validate
    • First observedkcsc_audit
    • First observedkcsc_formula
    • First observedkcsc_grep
    • First observedkcsc_outline
    • First observedkcsc_read
    • First observedkcsc_search
    • First observedkcsc_version

TDQS

A4/5.0

Scored across 13 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search by name vs. full-text grep, outline vs. read vs. formula retrieval, audit vs. version check, and the design_* tools each handle a different aspect (list, map, flow, validate, stamp, template). No two tools could be confused even without reading descriptions in detail.

Naming Consistency5/5

All tools follow a consistent pattern: either kcsc_<action> (search, outline, read, formula, grep, audit, version) or design_<noun/action> (flows, map, flow, validate, stamp, template). The prefix group is uniform, and the second part is a clear, consistent descriptor.

Tool Count5/5

13 tools is well within the ideal 3–15 range. The count reflects the domain's needs: 7 tools for standards retrieval/verification and 6 for design flow management, each earning its place without redundancy.

Completeness5/5

The tool surface covers the full lifecycle of standards lookup (search, outline, read, formula, grep), verification (audit, version), and design flow management (list, map, detailed steps, validation, stamping, template generation). Any gaps, like edit/delete of flows, are handled externally since flows are YAML files, and the deliberate separation of formula retrieval from reading addresses the image limitation.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search, retrieve, and analyze South Korean legal documents including statutes, precedents, constitutional decisions, and administrative rulings via the Ministry of Government Legislation Open API. Provides 89 specialized tools with features like legal abbreviation auto-recognition, annex extraction, and complex research chain workflows.
    MIT