Skip to main content
Glama

완성 페이지 KWCAG 재검사

validate_page
Destructive

Validates rendered pages against KWCAG 2.2 in a real browser, translating axe-core results into 33 criteria and flagging items that need manual review.

Instructions

조립·변환이 끝난 페이지를 실제 브라우저로 열어 KWCAG 2.2 기준으로 재검사한다. axe-core 전수 실행을 KWCAG 33항목으로 번역하고, 보류된 명도 대비는 직접 실측하며, 수동 확인이 필요한 항목은 확인 절차와 함께 명시한다 — 자동 판정은 접근성 이슈의 일부이므로 이 도구의 통과가 심사 통과를 뜻하지 않는다. 템플릿을 프레임워크로 변환한 뒤, 페이지를 조립한 뒤, 콘텐츠를 채운 뒤에 호출하라. url(dev 서버·배포본) 또는 filePath(로컬 HTML)를 권장한다 — 상대 경로 자산이 그대로 해석된다. 파일을 쓴다: outDir(기본 reports/) 아래 화면별 폴더에 리포트(md)·원시 데이터(json)·스크린샷 2장을 남기고 SUMMARY.md를 갱신한다. keepRuns를 주면 보존 개수를 넘은 이전 검사 기록을 지운다. 이 기록을 Stop 훅과 gate 명령이 읽어 작업 종료를 판정한다. 요소 하나의 색·배치·폰트만 확인할 때는 inspect_page를 쓴다. 반환: 마크다운 — 결론 한 줄(위반 수·검사 무효·공통부 누락), 직전 대비, KRDS 사용 문제, 리소스 오류, 산출물 경로, 리포트 전문.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "validate_page"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlNo검사할 페이지 URL(http/https) — dev 서버·배포본. url·filePath·html 중 정확히 하나만 준다
htmlNoHTML 문자열 — 상대 경로 자산이 깨지므로 최후 수단(임시 파일로 써서 검사한다). url·filePath·html 중 정확히 하나만 준다
outDirNo리포트·스크린샷 저장 디렉터리(기본 reports/, 프로젝트 루트 기준) — 화면별 하위 폴더에 검사 이력이 쌓인다. gate·Stop 훅은 reports/를 읽으니 바꾸지 않는 것을 권장
screenNo화면 이름 — 검사 기록 폴더 이름이 된다. 같은 화면을 호스트·포트를 바꿔 검사해도 이력이 이어지고, 상태 화면(actions)은 다른 이름으로 따로 기록하라 — 예: "apply-form", "apply-form-오류". 없으면 url·파일 이름에서 만든다
actionsNo검사 전에 실행할 상호작용(순서대로, 실제 클릭·키 입력) — 모달 열림·탭 전환·오류 표시 같은 상태 화면을 검사할 때. click·fill은 selector, fill은 value, press는 key(Enter·Escape·ArrowRight 등, selector를 주면 그 요소에 초점 뒤), wait는 selector(보일 때까지) 또는 ms. 예: [{type:"click",selector:"#apply"},{type:"wait",selector:".form-hint-invalid"}]. 한 단계라도 실패하면 검사 무효로 기록돼 gate가 막는다. 임시 빌드로 초기값을 바꾸지 말고 이것을 쓴다
filePathNo검사할 로컬 HTML 파일 경로 — 상대 경로는 프로젝트 루트(MCP 서버 실행 위치) 기준. url·filePath·html 중 정확히 하나만 준다
keepRunsNo화면별로 남길 최근 검사 수 — 첫 회(기준 증빙)는 항상 따로 남기므로 결과는 첫 회 + 최근 N회(최대 N+1개)다. 미지정이면 환경 변수 KRDS_A11Y_KEEP_RUNS, 그것도 없으면 전부 보존
sourceDirNourl(dev 서버·배포본)을 검사할 때 그 화면을 만드는 소스 폴더(프로젝트 루트 기준) — 예: "src", ["src", "public"], JSP는 "src/main/webapp". 넘기면 gate가 검사 뒤 소스가 바뀌었는지(낡음)를 판정해 재검사를 요구한다. 없으면 url 검사의 낡음은 판정 불가

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changedv0.2.0
    • addedInput schema / properties / actions / items / properties / key / description
      Added value: +"press의 키 이름(Playwright 표기) — 예: \"Enter\", \"Escape\", \"ArrowRight\""
    • addedInput schema / properties / actions / items / properties / ms / description
      Added value: +"wait의 대기 시간(밀리초, 최대 30000)"
    • addedInput schema / properties / actions / items / properties / ms / maximum
      Added value: +30000
    • addedInput schema / properties / actions / items / properties / ms / minimum
      Added value: +0
    • changedInput schema / properties / actions / items / properties / ms / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / actions / items / properties / selector / description
      Added value: +"대상 CSS 셀렉터 — 예: \"#apply\", \".open-modal\""
    • addedInput schema / properties / actions / items / properties / type / description
      Added value: +"동작 — click·fill은 selector 필요, press는 key, wait는 selector 또는 ms"
    • addedInput schema / properties / actions / items / properties / value / description
      Added value: +"fill로 넣을 값"
    • changedInput schema / properties / filePath / description
      Previous value: -"검사할 로컬 HTML 파일 경로"New value: +"검사할 로컬 HTML 파일 경로 — 상대 경로는 프로젝트 루트(MCP 서버 실행 위치) 기준. url·filePath·html 중 정확히 하나만 준다"
    • changedInput schema / properties / html / description
      Previous value: -"HTML 문자열 — 상대 경로 자산이 깨지므로 최후 수단"New value: +"HTML 문자열 — 상대 경로 자산이 깨지므로 최후 수단(임시 파일로 써서 검사한다). url·filePath·html 중 정확히 하나만 준다"
    • changedInput schema / properties / outDir / description
      Previous value: -"리포트·스크린샷 저장 디렉터리 (기본 reports/) — 화면별 하위 폴더에 검사 이력이 쌓인다"New value: +"리포트·스크린샷 저장 디렉터리(기본 reports/, 프로젝트 루트 기준) — 화면별 하위 폴더에 검사 이력이 쌓인다. gate·Stop 훅은 reports/를 읽으니 바꾸지 않는 것을 권장"
    • changedInput schema / properties / sourceDir / description
      Previous value: -"url(dev 서버·배포본)을 검사할 때 그 화면을 만드는 소스 폴더 — 예: \"src\", [\"src\", \"public\"], JSP는 \"src/main/webapp\". 넘기면 gate가 검사 뒤 소스가 바뀌었는지(낡음)를 판정해 재검사를 요구한다. 없으면 url 검사의 낡음은 판정 불가"New value: +"url(dev 서버·배포본)을 검사할 때 그 화면을 만드는 소스 폴더(프로젝트 루트 기준) — 예: \"src\", [\"src\", \"public\"], JSP는 \"src/main/webapp\". 넘기면 gate가 검사 뒤 소스가 바뀌었는지(낡음)를 판정해 재검사를 요구한다. 없으면 url 검사의 낡음은 판정 불가"
    • changedInput schema / properties / url / description
      Previous value: -"검사할 페이지 URL (http/https)"New value: +"검사할 페이지 URL(http/https) — dev 서버·배포본. url·filePath·html 중 정확히 하나만 준다"
    • addedInput schema / properties / url / pattern
      Added value: +"^https?:\\/\\/"
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and readOnlyHint=false; the description earns that by disclosing exactly what is written (per-screen folder with md report, raw json, 2 screenshots, plus SUMMARY.md update) and what is deleted (runs beyond keepRuns). It also discloses a critical caveat: a pass here does not mean audit pass, because automated judgment covers only part of accessibility issues. It further notes the records are read by the Stop hook and gate command, explaining downstream side effects.

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?

It is long and dense, but front-loaded with purpose, then caveat, then invocation timing, then side effects, then the sibling pointer and return shape. Nearly every clause carries decision-relevant content; only the return-format sentence is somewhat compacted into a dense list.

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 8 optional parameters, no output schema, and a destructive, open-world operation, the description supplies what the structured data cannot: artifact layout, gate/hook dependency, retention deletion, ambiguity (pass ≠ audit pass), and the return value's shape (one-line conclusion, delta vs previous, KRDS issues, resource errors, artifact paths, full report). Nothing an agent needs to invoke it correctly 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: url/filePath are preferred because relative-path assets resolve, while html breaks them; keepRuns is framed as deletion of prior run records beyond a retention count. It does not add syntax detail for screen, sourceDir, or actions beyond the schema, so it is informative rather than exhaustive.

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 and resource: re-inspect a fully assembled/converted page in a real browser against KWCAG 2.2, running axe-core fully and translating results into 33 KWCAG items, with manual contrast measurement. It also draws the boundary against the sibling inspect_page ('요소 하나의 색·배치·폰트만 확인할 때는 inspect_page'). An agent can identify and distinguish this from all listed siblings without opening any schema.

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

Usage Guidelines5/5

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

It gives explicit call ordering ('템플릿을 프레임워크로 변환한 뒤, 페이지를 조립한 뒤, 콘텐츠를 채운 뒤에 호출하라'), recommends url or filePath with a reason (relative assets resolve) and reserves html as a last resort. It names the alternative tool and the condition that selects it ('inspect_page'). When and when-not guidance is complete.

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