Skip to main content
Glama
EricSeokgon

egovframe-scaffold-mcp

by EricSeokgon

프로젝트 리포트 · 전환 준비도 평가서

generate_egovframe_report

Generates Markdown or JSON reports to assess eGovFrame projects: installed components, dependency/security checks, SBOM summary, and 5.x migration readiness grades.

Instructions

프로젝트 리포트를 Markdown(또는 format=json)으로 만듭니다. sections="components"는 설치 공통컴포넌트·참조 테이블·가이드 문서 링크·이슈, sections=["assessment"]는 5.x 전환 준비도 평가서 — (1) 개요(빌드 도구·RTE 세대·parent·Java·공통컴포넌트) (2) 전환 범위(migrate 진단 요약: 자동/수동·종류별·재조립 권고·예상 수동 작업 상위 N) (3) 의존성(기준 판정 집계·조치 목록, resolve=true 면 전이 포함, offline=false 면 OSV 취약점) (4) 보안 설정 점검 (5) SBOM 요약(sbomPath 에 있으면) (6) 등급과 근거 — 전환 난이도·공급망 상태를 각각 A–D 로 매기고 산식(요인·구간·점수)을 리포트에 그대로 적어 사람이 재계산할 수 있게 합니다. 비용·공수는 산정하지 않습니다. outputPath 를 주면 프로젝트 안에 새 파일로만 저장하고(기존 파일 거부, transaction), 그 외에는 디스크를 바꾸지 않습니다.

Input Schema

NameRequiredDescriptionDefault
topNNoassessment: 예상 수동 작업 목록 상위 N
dryRunNotrue 면 outputPath 가 있어도 쓰지 않고 내용만
formatNo출력 형식(json 은 assessment 데이터 포함)markdown
offlineNoassessment: true(기본)면 네트워크 없이, false 면 OSV 로 알려진 취약점 조회(공급망 등급 확정에 필요)
resolveNoassessment: 빌드 도구로 전이 의존성까지 해석해 판정(빌드 도구·저장소 접근 필요)
sbomPathNoassessment: 요약할 SBOM 의 프로젝트 상대 경로(없으면 '없음'으로 표시, 생성하지 않음)sbom/bom.cdx.json
sectionsNo포함할 절: components(설치 컴포넌트 리포트, 기본) · assessment(전환 준비도 평가서) — 둘 다 주면 이어 붙임
outputPathNo프로젝트 상대 .md 경로. 주면 새 파일로 저장(기존 파일이 있으면 거부)
projectDirYes리포트를 만들 프로젝트 디렉터리(절대경로 권장)
resolveScopeNoresolve 범위runtime
resolveTimeoutMsNo해석 명령 타임아웃(ms)

Output Schema

NameRequiredDescriptionDefault
bytesYes
notesYes
dryRunYes
writtenYes
sectionsYes
assessmentNo
outputPathNo
projectDirYes
absolutePathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed105 schema fields changedv1.6.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / properties / assessment / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / dependencies / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / dependencies / properties / actions / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / dependencies / properties / actions / items / properties / line / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / actions / items / properties / line / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / declared / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / declared / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / findings / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / findings / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / assessment / properties / dependencies / properties / resolution / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / dependencies / properties / resolution / properties / artifacts / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / resolution / properties / artifacts / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / resolution / properties / differs / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / resolution / properties / differs / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / resolution / properties / direct / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / resolution / properties / direct / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / resolution / properties / transitive / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / resolution / properties / transitive / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / summary / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / summary / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / summary / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / assessment / properties / dependencies / properties / transitive / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / transitive / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / assessment / properties / dependencies / properties / vulnerabilities / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / dependencies / properties / vulnerabilities / properties / dependencies / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / vulnerabilities / properties / dependencies / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / vulnerabilities / properties / ids / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / dependencies / properties / vulnerabilities / properties / ids / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / assessment / properties / dependencies / properties / vulnerabilities / properties / items / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / grades / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / grades / properties / migration / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / grades / properties / migration / properties / factors / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / grades / properties / migration / properties / factors / items / properties / points / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / grades / properties / migration / properties / factors / items / properties / points / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / grades / properties / migration / properties / max / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / grades / properties / migration / properties / max / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / grades / properties / migration / properties / score / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / grades / properties / migration / properties / score / minimum
      Added value: +-9007199254740991
    • removedOutput schema / properties / assessment / properties / grades / properties / supplyChain / $ref
      Removed value: -"#/properties/assessment/properties/grades/properties/migration"
    • addedOutput schema / properties / assessment / properties / grades / properties / supplyChain / additionalProperties
      Added value: +{}
    • addedOutput schema / properties / assessment / properties / grades / properties / supplyChain / properties
      Added value: +{
      +  "caveats": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "factors": {
      +    "items": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "band": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "label": {
      +          "type": "string"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "points": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "value": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "label",
      +        "value",
      +        "points",
      +        "band"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "grade": {
      +    "enum": [
      +      "A",
      +      "B",
      +      "C",
      +      "D"
      +    ],
      +    "type": "string"
      +  },
      +  "max": {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  "scale": {
      +    "type": "string"
      +  },
      +  "score": {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  }
      +}
    • addedOutput schema / properties / assessment / properties / grades / properties / supplyChain / required
      Added value: +[
      +  "grade",
      +  "score",
      +  "max",
      +  "factors",
      +  "scale",
      +  "caveats"
      +]
    • addedOutput schema / properties / assessment / properties / grades / properties / supplyChain / type
      Added value: +"object"
    • changedOutput schema / properties / assessment / properties / migration / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / migration / properties / auto / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / auto / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / byKind / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / byKind / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / byKind / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / assessment / properties / migration / properties / files / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / files / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / items / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / items / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manual / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manual / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manualByKind / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manualByKind / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manualByKind / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / assessment / properties / migration / properties / manualTop / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / migration / properties / manualTop / items / properties / count / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manualTop / items / properties / count / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manualTop / items / properties / files / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manualTop / items / properties / files / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manualTotalGroups / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / manualTotalGroups / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / removedApiRefs / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / migration / properties / removedApiRefs / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / assessment / properties / overview / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / overview / properties / components / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / overview / properties / components / properties / count / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / overview / properties / components / properties / count / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / overview / properties / filesScanned / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / overview / properties / filesScanned / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / assessment / properties / overview / properties / java / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / overview / properties / parent / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / rehearsal / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / rehearsal / properties / afterAutomation / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / assessment / properties / rehearsal / properties / afterPomAlignment / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / assessment / properties / sbom / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / sbom / properties / components / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / sbom / properties / components / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / assessment / properties / sbom / properties / minimum / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / sbom / properties / vex / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / sbom / properties / vex / properties / states / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / sbom / properties / vex / properties / states / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / sbom / properties / vex / properties / states / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / assessment / properties / sbom / properties / vex / properties / vulnerabilities / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / sbom / properties / vex / properties / vulnerabilities / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / sbom / properties / vulnerabilities / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / sbom / properties / vulnerabilities / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / assessment / properties / security / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / security / properties / checks / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / assessment / properties / security / properties / checks / items / properties / evidence / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / assessment / properties / security / properties / checks / items / properties / evidence / items / properties / line / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / security / properties / checks / items / properties / evidence / items / properties / line / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / security / properties / missing / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / security / properties / missing / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / security / properties / na / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / security / properties / na / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / assessment / properties / security / properties / ok / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / assessment / properties / security / properties / ok / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / assessment / properties / tool / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / bytes / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / bytes / minimum
      Added value: +-9007199254740991
  2. Changed1 schema field changedv0.45.0
    • addedOutput schema / properties / assessment / properties / rehearsal
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "afterAutomation": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "afterPomAlignment": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "at": {
      +      "type": "string"
      +    },
      +    "origin": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "projectUnchanged": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "at",
      +    "afterAutomation",
      +    "afterPomAlignment",
      +    "projectUnchanged",
      +    "origin"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changedv0.40.0
    • addedOutput schema / properties / assessment / properties / sbom / properties / minimum
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "missing": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "verdict": {
      +      "enum": [
      +        "ready",
      +        "needs-work"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "verdict",
      +    "missing"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / assessment / properties / sbom / properties / vex
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "path": {
      +      "type": "string"
      +    },
      +    "present": {
      +      "type": "boolean"
      +    },
      +    "states": {
      +      "additionalProperties": {
      +        "type": "integer"
      +      },
      +      "type": "object"
      +    },
      +    "timestamp": {
      +      "type": "string"
      +    },
      +    "vulnerabilities": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "path",
      +    "present"
      +  ],
      +  "type": "object"
      +}
  4. Changed11 schema fields changedv0.36.1
    • addedInput schema / properties / dryRun
      Added value: +{
      +  "default": false,
      +  "description": "true 면 outputPath 가 있어도 쓰지 않고 내용만",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / format
      Added value: +{
      +  "default": "markdown",
      +  "description": "출력 형식(json 은 assessment 데이터 포함)",
      +  "enum": [
      +    "markdown",
      +    "json"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / offline
      Added value: +{
      +  "default": true,
      +  "description": "assessment: true(기본)면 네트워크 없이, false 면 OSV 로 알려진 취약점 조회(공급망 등급 확정에 필요)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / outputPath
      Added value: +{
      +  "description": "프로젝트 상대 .md 경로. 주면 새 파일로 저장(기존 파일이 있으면 거부)",
      +  "type": "string"
      +}
    • addedInput schema / properties / resolve
      Added value: +{
      +  "default": false,
      +  "description": "assessment: 빌드 도구로 전이 의존성까지 해석해 판정(빌드 도구·저장소 접근 필요)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / resolveScope
      Added value: +{
      +  "default": "runtime",
      +  "description": "resolve 범위",
      +  "enum": [
      +    "runtime",
      +    "all"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / resolveTimeoutMs
      Added value: +{
      +  "default": 300000,
      +  "description": "해석 명령 타임아웃(ms)",
      +  "maximum": 1800000,
      +  "minimum": 10000,
      +  "type": "integer"
      +}
    • addedInput schema / properties / sbomPath
      Added value: +{
      +  "default": "sbom/bom.cdx.json",
      +  "description": "assessment: 요약할 SBOM 의 프로젝트 상대 경로(없으면 '없음'으로 표시, 생성하지 않음)",
      +  "type": "string"
      +}
    • addedInput schema / properties / sections
      Added value: +{
      +  "default": [
      +    "components"
      +  ],
      +  "description": "포함할 절: components(설치 컴포넌트 리포트, 기본) · assessment(전환 준비도 평가서) — 둘 다 주면 이어 붙임",
      +  "items": {
      +    "enum": [
      +      "components",
      +      "assessment"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / topN
      Added value: +{
      +  "default": 20,
      +  "description": "assessment: 예상 수동 작업 목록 상위 N",
      +  "maximum": 200,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "absolutePath": {
      +      "type": "string"
      +    },
      +    "assessment": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "dependencies": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "actions": {
      +              "items": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "action": {
      +                    "type": "string"
      +                  },
      +                  "artifactId": {
      +                    "type": "string"
      +                  },
      +                  "baseline": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "basis": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "file": {
      +                    "type": "string"
      +                  },
      +                  "groupId": {
      +                    "type": "string"
      +                  },
      +                  "line": {
      +                    "type": "integer"
      +                  },
      +                  "origin": {
      +                    "enum": [
      +                      "declared",
      +                      "transitive"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "enum": [
      +                      "ok",
      +                      "outdated",
      +                      "managed",
      +                      "legacy",
      +                      "replace",
      +                      "vendor",
      +                      "unknown",
      +                      "unversioned"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "version": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "groupId",
      +                  "artifactId",
      +                  "version",
      +                  "status",
      +                  "baseline",
      +                  "basis",
      +                  "origin",
      +                  "file",
      +                  "line",
      +                  "action"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "declared": {
      +              "type": "integer"
      +            },
      +            "findings": {
      +              "type": "integer"
      +            },
      +            "notes": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "offline": {
      +              "type": "boolean"
      +            },
      +            "osvError": {
      +              "type": "string"
      +            },
      +            "resolution": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "artifacts": {
      +                  "type": "integer"
      +                },
      +                "differs": {
      +                  "type": "integer"
      +                },
      +                "direct": {
      +                  "type": "integer"
      +                },
      +                "error": {
      +                  "type": "string"
      +                },
      +                "ran": {
      +                  "type": "boolean"
      +                },
      +                "scope": {
      +                  "enum": [
      +                    "runtime",
      +                    "all"
      +                  ],
      +                  "type": "string"
      +                },
      +                "success": {
      +                  "type": "boolean"
      +                },
      +                "transitive": {
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "ran",
      +                "success",
      +                "scope",
      +                "artifacts",
      +                "direct",
      +                "transitive",
      +                "differs"
      +              ],
      +              "type": "object"
      +            },
      +            "summary": {
      +              "additionalProperties": {
      +                "type": "integer"
      +              },
      +              "type": "object"
      +            },
      +            "transitive": {
      +              "type": "integer"
      +            },
      +            "unknown": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "vendor": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "vulnerabilities": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "dependencies": {
      +                  "type": "integer"
      +                },
      +                "ids": {
      +                  "type": "integer"
      +                },
      +                "items": {
      +                  "items": {
      +                    "additionalProperties": true,
      +                    "properties": {
      +                      "dependency": {
      +                        "type": "string"
      +                      },
      +                      "ids": {
      +                        "items": {
      +                          "type": "string"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "version": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "dependency",
      +                      "version",
      +                      "ids"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "queried": {
      +                  "type": "boolean"
      +                }
      +              },
      +              "required": [
      +                "queried",
      +                "dependencies",
      +                "ids",
      +                "items"
      +              ],
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "offline",
      +            "findings",
      +            "declared",
      +            "transitive",
      +            "summary",
      +            "actions",
      +            "unknown",
      +            "vendor",
      +            "vulnerabilities",
      +            "notes"
      +          ],
      +          "type": "object"
      +        },
      +        "generatedAt": {
      +          "type": "string"
      +        },
      +        "grades": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "migration": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "caveats": {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "factors": {
      +                  "items": {
      +                    "additionalProperties": true,
      +                    "properties": {
      +                      "band": {
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "label": {
      +                        "type": "string"
      +                      },
      +                      "note": {
      +                        "type": "string"
      +                      },
      +                      "points": {
      +                        "type": "integer"
      +                      },
      +                      "value": {
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "label",
      +                      "value",
      +                      "points",
      +                      "band"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "grade": {
      +                  "enum": [
      +                    "A",
      +                    "B",
      +                    "C",
      +                    "D"
      +                  ],
      +                  "type": "string"
      +                },
      +                "max": {
      +                  "type": "integer"
      +                },
      +                "scale": {
      +                  "type": "string"
      +                },
      +                "score": {
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "grade",
      +                "score",
      +                "max",
      +                "factors",
      +                "scale",
      +                "caveats"
      +              ],
      +              "type": "object"
      +            },
      +            "supplyChain": {
      +              "$ref": "#/properties/assessment/properties/grades/properties/migration"
      +            }
      +          },
      +          "required": [
      +            "migration",
      +            "supplyChain"
      +          ],
      +          "type": "object"
      +        },
      +        "migration": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "auto": {
      +              "type": "integer"
      +            },
      +            "byKind": {
      +              "additionalProperties": {
      +                "type": "integer"
      +              },
      +              "type": "object"
      +            },
      +            "files": {
      +              "type": "integer"
      +            },
      +            "items": {
      +              "type": "integer"
      +            },
      +            "manual": {
      +              "type": "integer"
      +            },
      +            "manualByKind": {
      +              "additionalProperties": {
      +                "type": "integer"
      +              },
      +              "type": "object"
      +            },
      +            "manualTop": {
      +              "items": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "count": {
      +                    "type": "integer"
      +                  },
      +                  "example": {
      +                    "type": "string"
      +                  },
      +                  "files": {
      +                    "type": "integer"
      +                  },
      +                  "from": {
      +                    "type": "string"
      +                  },
      +                  "kind": {
      +                    "type": "string"
      +                  },
      +                  "reason": {
      +                    "type": "string"
      +                  },
      +                  "to": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "from",
      +                  "to",
      +                  "count",
      +                  "files",
      +                  "example",
      +                  "reason"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "manualTotalGroups": {
      +              "type": "integer"
      +            },
      +            "notes": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "reassemble": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "removedApiRefs": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "items",
      +            "auto",
      +            "manual",
      +            "files",
      +            "byKind",
      +            "manualByKind",
      +            "reassemble",
      +            "removedApiRefs",
      +            "manualTop",
      +            "manualTotalGroups",
      +            "notes"
      +          ],
      +          "type": "object"
      +        },
      +        "notes": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "overview": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "aiLayer": {
      +              "type": "boolean"
      +            },
      +            "buildSystem": {
      +              "enum": [
      +                "maven",
      +                "gradle",
      +                "unknown"
      +              ],
      +              "type": "string"
      +            },
      +            "components": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "count": {
      +                  "type": "integer"
      +                },
      +                "ids": {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "count",
      +                "ids"
      +              ],
      +              "type": "object"
      +            },
      +            "database": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "filesScanned": {
      +              "type": "integer"
      +            },
      +            "hasManifest": {
      +              "type": "boolean"
      +            },
      +            "isEgovProject": {
      +              "type": "boolean"
      +            },
      +            "java": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "status": {
      +                  "enum": [
      +                    "ok",
      +                    "outdated",
      +                    "unknown"
      +                  ],
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "value",
      +                "status"
      +              ],
      +              "type": "object"
      +            },
      +            "parent": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "artifactId": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "groupId": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "kind": {
      +                  "enum": [
      +                    "web",
      +                    "boot",
      +                    "other",
      +                    "none"
      +                  ],
      +                  "type": "string"
      +                },
      +                "status": {
      +                  "enum": [
      +                    "ok",
      +                    "outdated",
      +                    "n/a"
      +                  ],
      +                  "type": "string"
      +                },
      +                "version": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "groupId",
      +                "artifactId",
      +                "version",
      +                "kind",
      +                "status"
      +              ],
      +              "type": "object"
      +            },
      +            "rteVersion": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "sourceEra": {
      +              "enum": [
      +                "3.x",
      +                "4.x",
      +                "5.x",
      +                "unknown"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "buildSystem",
      +            "isEgovProject",
      +            "rteVersion",
      +            "sourceEra",
      +            "parent",
      +            "java",
      +            "database",
      +            "components",
      +            "aiLayer",
      +            "hasManifest",
      +            "filesScanned"
      +          ],
      +          "type": "object"
      +        },
      +        "projectDir": {
      +          "type": "string"
      +        },
      +        "sbom": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "components": {
      +              "type": "integer"
      +            },
      +            "note": {
      +              "type": "string"
      +            },
      +            "path": {
      +              "type": "string"
      +            },
      +            "present": {
      +              "type": "boolean"
      +            },
      +            "specVersion": {
      +              "type": "string"
      +            },
      +            "timestamp": {
      +              "type": "string"
      +            },
      +            "vulnerabilities": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "present",
      +            "path",
      +            "note"
      +          ],
      +          "type": "object"
      +        },
      +        "security": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "checks": {
      +              "items": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "evidence": {
      +                    "items": {
      +                      "additionalProperties": true,
      +                      "properties": {
      +                        "file": {
      +                          "type": "string"
      +                        },
      +                        "line": {
      +                          "type": "integer"
      +                        },
      +                        "text": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "file",
      +                        "line",
      +                        "text"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "hint": {
      +                    "type": "string"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "enum": [
      +                      "ok",
      +                      "missing",
      +                      "n/a"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "title": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "title",
      +                  "status",
      +                  "evidence",
      +                  "hint"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "missing": {
      +              "type": "integer"
      +            },
      +            "na": {
      +              "type": "integer"
      +            },
      +            "ok": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "ok",
      +            "missing",
      +            "na",
      +            "checks"
      +          ],
      +          "type": "object"
      +        },
      +        "tool": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "baselineSurveyedAt": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "rulesSurveyedAt": {
      +              "type": "string"
      +            },
      +            "rulesTag": {
      +              "type": "string"
      +            },
      +            "targetRuntime": {
      +              "type": "string"
      +            },
      +            "version": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "version",
      +            "rulesTag",
      +            "rulesSurveyedAt",
      +            "baselineSurveyedAt",
      +            "targetRuntime"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "projectDir",
      +        "generatedAt",
      +        "tool",
      +        "overview",
      +        "migration",
      +        "dependencies",
      +        "security",
      +        "sbom",
      +        "grades",
      +        "notes"
      +      ],
      +      "type": "object"
      +    },
      +    "bytes": {
      +      "type": "integer"
      +    },
      +    "dryRun": {
      +      "type": "boolean"
      +    },
      +    "notes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "outputPath": {
      +      "type": "string"
      +    },
      +    "projectDir": {
      +      "type": "string"
      +    },
      +    "sections": {
      +      "items": {
      +        "enum": [
      +          "components",
      +          "assessment"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "written": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "projectDir",
      +    "sections",
      +    "dryRun",
      +    "written",
      +    "bytes",
      +    "notes"
      +  ],
      +  "type": "object"
      +}
  5. Addedv0.19.0

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the annotations: it specifies that outputPath writes only a new file, refuses existing files, and is transactional, while otherwise leaving the disk untouched — the exact write semantics an agent needs for a tool with readOnlyHint=false and destructiveHint=false. It also discloses when network and build-tool/repo access are required (offline=false, resolve=true) and that no cost estimates are produced.

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?

Purpose is front-loaded in the first clause and every following parenthetical carries substantive information given a complex 11-parameter, multi-section tool. It is dense to the point of being a single long block, which slightly hurts scannability, but little text is wasted.

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 an output schema exists, the description needn't explain return values, and it covers section content, persistence semantics, and network/offline implications thoroughly. The remaining gap is operational sequencing — whether cheap diagnostics should precede an assessment run — which it leaves implicit.

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 baseline is 3, but the description adds real meaning: it defines what the assessment sections (1)–(6) contain, that format=json carries assessment data, that resolve=true pulls in transitive dependencies, that offline=false triggers OSV lookups, and that a missing sbomPath renders as '없음' without generating one. It stops short of explaining topN and resolveTimeoutMs, which the schema already covers.

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?

States a specific verb and artifact (프로젝트 리포트를 Markdown/json으로 생성) and enumerates exactly what each section contains, so an agent knows the tool produces a report rather than performing diagnosis. It does not, however, name neighboring report-producing tools (e.g. generate_egovframe_sbom, prepare_egovframe_delivery) to disambiguate.

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?

Explains the components-vs-assessment choice through the `sections` parameter and notes the scope limit (비용·공수는 산정하지 않습니다), which implies when the tool is and isn't appropriate. There is no explicit statement of prerequisites (e.g. run diagnose/migrate first) or of which sibling tool to use instead when the agent only wants raw diagnostics.

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