Skip to main content
Glama
EricSeokgon

egovframe-scaffold-mcp

by EricSeokgon

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

generate_egovframe_report

Generate eGovFrame project reports in Markdown or JSON, covering installed components or a 5.x transition readiness assessment with dependency, security, and SBOM analysis.

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

TableJSON 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

TableJSON Schema
NameRequiredDescriptionDefault
bytesYes
notesYes
dryRunYes
writtenYes
sectionsYes
assessmentNo
outputPathNo
projectDirYes
absolutePathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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"
      +}
  2. 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"
      +}
  3. Addedv0.19.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond annotations: outputPath writes only a new project-relative file and rejects existing ones (transaction), otherwise nothing on disk changes; offline=false performs OSV network lookups; resolve=true needs build-tool/repo access; and it explicitly disclaims cost/effort estimation. This is far richer than the readOnly/openWorld flags and is consistent with them.

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

Conciseness4/5

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

The purpose and section breakdown are front-loaded, and every clause carries actionable content (determinism of the A–D formula, no cost estimation, disk behavior). It is a dense single paragraph, which is slightly heavy but not padded.

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?

An output schema exists so return values need not be described, and the description still covers the decision-relevant behavior: section selection, network/build-access implications, file-writing contract, and the explicit non-scope (no cost/effort). Nothing needed to call it correctly is missing for an 11-parameter tool.

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 schema already documents each parameter, but the description adds genuine cross-parameter meaning: sections concatenation behavior, resolve implying transitive resolution, offline implying OSV vulnerability lookups, and outputPath's create-only semantics. That is more than a restatement, so it exceeds the baseline-3 case.

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?

States a specific verb and resource (generate a project report / migration-readiness assessment) and enumerates the report's contents by section, including the two modes (components, assessment). This lets an agent distinguish it from siblings like generate_egovframe_sbom and generate_egovframe_ci 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 Guidelines4/5

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

Explains when each section applies (sections=["assessment"] triggers the 5.x readiness report; components is default; both together concatenate) and the conditions under which resolve/offline matter. It gives clear context but never explicitly routes against an alternative sibling tool (e.g. diagnose_egovframe_project), which is the only missing piece.

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