5cfb8a1이 .gitignore에 docs/를 넣고 68개 파일을 지웠다. 그런데
AgentBuilderContractExampleTest, ToolBundleContractExampleTest,
ArchitectureDocumentContractTest는 docs/ 아래 계약 예제와 architecture
문서를 입력으로 직접 읽는다. 그 결과 clean clone에서 테스트 10건이
입력을 찾지 못해 실패했다.
제외 범위를 원래 의도대로 좁힌다. 에이전트 산출물(AGENTS.md, .agents/,
.codex/, docs/superpowers/)은 계속 제외하고 저장소 문서는 추적한다.
문서는 삭제 직전 상태(3de052a)를 기준으로 복원하고, 그 위에 main 코드와
대조해 어긋난 부분을 고쳤다.
- ADR-0007을 Superseded로 바꾸고 ADR-0013을 새로 쓴다. route당 Tool
Service N개가 최종안이며, PortalToolRegistryClient가 이미 route별로
N개를 유지하고 있는데 ADR-0007은 "bundles는 항상 한 항목"을 Accepted
상태로 주장하고 있었다. ADR-0009 결정 4도 부분 대체한다.
- ADR-0008 파일 헤더가 Accepted였으나 ADR-0009가 이미 대체한 상태였다.
- 6078852의 endpoint 소유권 반전이 반영되지 않은 서술을 계약 v0.2,
bundle 설정 예제, Tool 적재 안내에서 고친다.
- Portal registry 계약 v0.1과 route key 규약을 새로 문서화한다. 둘 다
구현은 있는데 계약 문서가 없었다.
- MCP SDK 2.0.0 SBOM을 추가한다.
번호 주석: ADR-0011과 0012는 feature/mcp-integration이 Tool inputSchema
정책에 쓰고 있어 비워 둔다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
98 lines
3.1 KiB
JSON
98 lines
3.1 KiB
JSON
{
|
|
"bundleId": "insurance-processing",
|
|
"revision": "sha256:9f2c4a17b83e5d06c1f9a2e7b45d8c30ff1a6b92e4c7d5083a1b6e9f2c4d7a850",
|
|
"tools": [
|
|
{
|
|
"name": "processing.contract.inquiry",
|
|
"title": "계약 조회",
|
|
"description": "계약번호로 계약의 기본 정보를 조회합니다. 사용자가 특정 계약의 상태, 보험료, 계약일을 물어볼 때 사용합니다. 테스트 전용이며 실제 고객 계약 데이터는 처리하지 않습니다.",
|
|
"inputSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"contractNo": {
|
|
"type": "string",
|
|
"description": "조회할 계약번호입니다.",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"required": ["contractNo"],
|
|
"additionalProperties": false
|
|
},
|
|
"annotations": {
|
|
"title": "계약 조회",
|
|
"readOnlyHint": true,
|
|
"destructiveHint": false,
|
|
"idempotentHint": true,
|
|
"openWorldHint": false
|
|
},
|
|
"_meta": {
|
|
"version": "1.2.0",
|
|
"endpoint": "/mcp/processing.contract.inquiry",
|
|
"timeoutMillis": 3000,
|
|
"enabled": true
|
|
}
|
|
},
|
|
{
|
|
"name": "processing.payment.history",
|
|
"title": "수납 이력 조회",
|
|
"description": "계약번호로 수납 이력을 조회합니다. 사용자가 납입 내역이나 미납 여부를 물어볼 때 사용합니다.",
|
|
"inputSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"contractNo": {
|
|
"type": "string",
|
|
"description": "조회할 계약번호입니다.",
|
|
"minLength": 1
|
|
},
|
|
"months": {
|
|
"type": "integer",
|
|
"description": "조회할 최근 개월 수입니다.",
|
|
"minimum": 1,
|
|
"maximum": 36
|
|
}
|
|
},
|
|
"required": ["contractNo"],
|
|
"additionalProperties": false
|
|
},
|
|
"annotations": {
|
|
"readOnlyHint": true,
|
|
"destructiveHint": false,
|
|
"idempotentHint": true,
|
|
"openWorldHint": false
|
|
},
|
|
"_meta": {
|
|
"version": "1.0.1",
|
|
"endpoint": "/mcp/processing.payment.history",
|
|
"timeoutMillis": 5000,
|
|
"enabled": true
|
|
}
|
|
},
|
|
{
|
|
"name": "processing.notice.send",
|
|
"title": "안내 발송",
|
|
"description": "계약자에게 안내 메시지를 발송합니다. 사용자가 명시적으로 발송을 요청한 경우에만 사용합니다.",
|
|
"inputSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"contractNo": { "type": "string", "minLength": 1 },
|
|
"template": { "type": "string", "enum": ["PAYMENT_DUE", "CONTRACT_EXPIRY"] }
|
|
},
|
|
"required": ["contractNo", "template"],
|
|
"additionalProperties": false
|
|
},
|
|
"annotations": {
|
|
"readOnlyHint": false,
|
|
"destructiveHint": false,
|
|
"idempotentHint": false,
|
|
"openWorldHint": false
|
|
},
|
|
"_meta": {
|
|
"version": "0.9.0",
|
|
"endpoint": "/mcp/processing.notice.send",
|
|
"timeoutMillis": 10000,
|
|
"enabled": false
|
|
}
|
|
}
|
|
]
|
|
}
|