insurance-claim-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@insurance-claim-mcp이 영수증의 KCD 코드와 진료비로 예상 보험금을 계산해줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
insurance-claim-mcp
약봉투·진료비 영수증의 정보(KCD 질병코드, 처치, 진료비)를 가입 보험 약관과 대조해 예상 보험금을 안내하는 MCP(Model Context Protocol) 서비스입니다.
정보 제공용 예상치입니다. 실제 지급 여부와 금액은 보험사 심사에 따라 달라집니다.
mcp-name: io.github.seothief/insurance-claim-mcp
빠른 시작 (설치형 MCP 서버)
uv가 있으면 설치 없이 바로 실행됩니다. 데이터는 내 PC의 ~/.insurance-claim-mcp/(SQLite)에만 저장됩니다.
{
"mcpServers": {
"insurance-claim": { "command": "uvx", "args": ["insurance-claim-mcp"] }
}
}Claude Code: claude mcp add insurance-claim -- uvx insurance-claim-mcp
PostgreSQL을 쓰려면 uvx --from "insurance-claim-mcp[postgres]" insurance-claim-mcp와 DATABASE_URL을 지정합니다.
에이전트용 사용 지침은 skills/insurance-claim-mcp/SKILL.md, 마켓 등록 절차는 docs/PUBLISHING.md를 참고하세요.
Related MCP server: jhnrd
English (US supplemental plans)
Estimates what US hospital indemnity, accident and critical illness plans pay, from the plan's schedule of benefits and the ICD-10-CM codes on the hospital bill. The math runs in a deterministic, fail-closed rule engine: a benefit the schedule doesn't confirm comes back NOT_EVALUATED, never a guess.
claude mcp add insurance-claim -- uvx insurance-claim-mcpSupported benefits: hospital admission, daily confinement (max days, elimination period), ICU days, critical illness lump sum (ICD-10-CM prefixes, % of face amount), accident fracture schedule, and ER visits. Agent instructions: skills/us-supplemental-claims/SKILL.md. Data stays local (~/.insurance-claim-mcp/). Estimates only, not claim decisions.
핵심 설계 및 아키텍처
LLM 추론 + 결정론적(Deterministic) 규칙 엔진 분리
비정형 데이터(보험증권·병원 영수증 이미지) 판독과 사용자 대화는 AI 클라이언트가 수행하고, 환각(Hallucination)이 없어야 하는 약관 대조 및 예상 보험금 계산은 서버 규칙 엔진이 전담합니다.
Fail-Closed 안전장치: 약관 원문 검증(
verified=true)이 완료되지 않았거나 보험증권(POLICY_CERTIFICATE) 출처가 확인되지 않은 특약은 추측 계산하지 않고NOT_EVALUATED(0원)로 반환합니다.
MCP 3대 구성요소(Tools · Resources · Prompts) 표준 구현
Tools (11개): 사용자 등록(
register_user), 보험 등록/갱신(register_user_policy), 미매핑 특약 재질의 확정(resolve_user_rider), 예상 보험금 계산(evaluate_claim) 등 상태 변경 및 연산 수행Resources (3개): 온보딩 가이드(
insurance://guide/onboarding), 표준 담보 규칙 카탈로그(insurance://rules/standard), 보험사 공식 서류 요청 안내 동적 템플릿(insurance://guide/document-request/{policy_type}/{product_name})
Prompts (1개): 단계별 보험 등록 및 영수증 평가를 유도하는 표준 AI 비서 지침(
insurance_assistant_prompt) 및ai_follow_up_prompt기반 역질문 오케스트레이션MCP 전용 인터페이스 및 서버리스 최적화
보험 업무는 **FastMCP (
Streamable HTTP /mcp및 로컬stdio)**로만 제공합니다. Cloud Run 상태 확인용/api/health,/api/version외에는 REST API, OpenAPI 스키마, 웹 브리지 또는 소개 페이지를 제공하지 않습니다.Cloud Run 서버리스 스케일링 환경을 위해
stateless_http=True및combine_lifespans를 적용하고, 리버스 프록시 뒤에서/mcp307 리다이렉트 시 발생하는 HTTPS→HTTP 다운그레이드를 ASGI 미들웨어 경로 정규화로 해결했습니다.
이용 가이드
최종 사용자(보험 가입자)와 설정자·운영자를 위한 종합 사용법은 이용 가이드를 참조하세요.
로컬 실행
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.lock.txt
.\.venv\Scripts\python.exe -m uvicorn claim_service.main:app --app-dir src --port 8080상태 확인:
GET /api/health,GET /api/version(인증 불필요)설치가 실패하거나
pip이 없는 경우(No module named pip,pip._vendor누락): 로컬 개발 환경 설치MCP 엔드포인트 (Streamable HTTP):
POST /mcp(또는/mcp/)MCP 로컬 실행 (stdio):
.\.venv\Scripts\python.exe -m claim_service.mcp.server
데이터베이스 및 보안
기본: 로컬 SQLite (
claim_service.db, 프로젝트 루트에 생성되며.gitignore로 커밋 제외)클라우드: 환경변수
DATABASE_URL을 PostgreSQL URL로 지정 (예:postgresql+psycopg://...)평가 요청(질병코드, 진료비)은 저장하지 않고 계산 결과만 반환합니다.
MCP HTTP 접근은 사용자별 API 키(
X-User-Key헤더 또는Bearer)로 인증합니다. 키 원문은 발급 시 한 번만 표시되고 서버에는 SHA-256 해시만 저장됩니다. 키 인증은 요청을 소유 사용자에 귀속시킵니다(PIN 입력 대체). PIN 보호 계정은PBKDF2-HMAC-SHA256(120,000회 반복) 해시로 검증을 유지합니다. 키 발급·폐기는 사용자별 API/MCP 키 가이드, 연결 설정은 클라이언트 연결 가이드, 종합 사용법은 이용 가이드를 참조하세요.
테스트 및 정적 분석
.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe -m ruff check src tests scripts
.\.venv\Scripts\python.exe -m mypy src배포
main에 CI를 통과한 변경을 병합하면 GitHub Actions가 Cloud Run에 자동 배포하고
/api/health, /api/version을 확인합니다. 수동 배포는 GitHub의
Actions → Deploy to Cloud Run → Run workflow 한 번으로 실행할 수 있습니다.
최초 설정에 필요한 GitHub 변수, Workload Identity Federation 및 권한은
배포 설정 안내를 참조하세요. 운영 배포는 이 로컬 작업에서 실행하지 않습니다.
진행 현황
라이선스
Available Tools
11 toolsdelete_user_policyDelete User PolicyC
해지한 보험 계약을 삭제합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| user_id | Yes | ||
| policy_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a destructive operation. It never says the deletion is irreversible, whether related riders/claims are affected, what authorization is required, or what the response confirms – the 'terminated only' precondition is the single behavioral fact conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, but its brevity comes from omission rather than efficiency. For a destructive mutation tool this is under-specification, not concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 needn't be explained, but a three-parameter destructive tool with a security PIN input and zero annotations needs far more: authorization context, reversibility, side effects, and the meaning of 'pin'. The description supplies none of this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, and the description names none of them. user_id and policy_id can be inferred from the tool name, but the optional 'pin' parameter (nullable, default null) is completely unexplained in both schema and description, leaving an opaque security-sensitive input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('해지한 보험 계약을 삭제합니다' – deletes a terminated insurance contract) and adds a real scoping constraint that only terminated/cancelled contracts qualify. It doesn't refer to the tool's own name (user policy vs insurance contract) or distinguish it from siblings like list_user_policies or register_user_policy, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance implied is that the contract must already be terminated, which is useful but incomplete. There is no statement of prerequisites, permissions, when to choose deletion over alternatives, or what to do if the policy is still active.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_claimEvaluate ClaimB
영수증/처방전 정보로 예상 보험금을 계산합니다. 입력된 진료 정보는 저장되지 않습니다.
Estimate benefits from a bill. US plans: send icd10_code, is_inpatient, inpatient_days, icu_days, is_injury, is_emergency. Claim data is never stored.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| claim | Yes | Values extracted from receipts/prescriptions. Used for one evaluation and never stored. | |
| user_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses one valuable behavioral trait — claim data is never stored, stated twice (Korean and English) — but says nothing about whether this is a pure calculation vs. a submission, what the pin requirement means, permission/auth needs, or behavior on unrecognized codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded: purpose first, then the plan-specific field list, then the privacy note. The Korean and English sentences are near-duplicates, which is acceptable localization rather than waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the privacy note plus US field guidance cover the essentials. Still, for a nested-object input with 12+ claim fields and no annotations, the description leaves the non-US path and most cost/classification fields unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description enumerates six US-plan fields, which genuinely adds meaning by grouping them per plan type (icd10 vs kcd_code). But at 33% schema coverage many fields go undocumented in both places — cost_covered, cost_uncovered, hospital_type, treatment_code/name, prescribed_drugs, pin — so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource — estimate insurance benefits from receipt/prescription data — which is unambiguous. It does not differentiate against siblings (register_user_policy, resolve_user_rider, etc.), though those are clearly a different family so confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'US plans: send icd10_code, is_inpatient...' is a conditional input guideline that implies kcd_code is for the Korean path, which is useful. However, there is no explicit when-to-use/when-not-to-use statement, no prerequisite for user_id registration or the pin parameter, and no routing against sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_request_guideGet Document Request GuideB
보험사에 요청해야 할 증권과 약관 목록, 요청 문구, 공식 요청 경로를 돌려줍니다.
For US_* policy types, returns an English checklist for the schedule of benefits.
| Name | Required | Description | Default |
|---|---|---|---|
| policy_type | Yes | ||
| product_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does disclose one useful trait: for US_* policy types it returns an English schedule-of-benefits checklist. It does not state read-only/no-side-effects or any auth or rate-limit context, leaving gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core return contents and then the US_* variant. Efficient, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return structure needn't be explained, and the US_* conditional is covered. However, with 0% schema coverage and zero annotations, the unexplained parameters and missing usage/precondition context leave the definition only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, but it only hints that policy_type drives output language/format for US_* values. product_name is never explained, and the enum values are uninterpreted, leaving most parameter meaning to be inferred.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: it returns a list of securities/terms to request from the insurer, request wording, and official request channels. This is distinguishable from the user/profile/policy siblings, though it doesn't explicitly name an alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus other guide-like tools (e.g. get_onboarding_guide) or what prerequisites exist. The only implicit condition is the US_* policy-type switch, which is about output rather than when-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_onboarding_guideGet Onboarding GuideA
서비스 시작 시 가장 먼저 호출합니다. 온보딩 절차와 bound_user_id를 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses the return payload (onboarding procedure plus bound_user_id), which implies a read-only, side-effect-free call, but it never explicitly states read-only behavior, whether the guide is static or user-specific, or any auth/prerequisite requirements around bound_user_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste, and the critical ordering instruction ('call first') is front-loaded ahead of the return-value note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and is flagged, so the description needn't enumerate return fields in depth; mentioning the procedure and bound_user_id is sufficient orientation. Combined with the entry-point guidance, an agent has enough to invoke it correctly, with only the user-scoping/statefulness question left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline of 4 applies: the empty schema is self-explanatory and the description correctly adds no parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a concrete verb+resource (retrieves the onboarding guide) and states what it returns: the onboarding procedure and bound_user_id. The 'call first at service start' framing positions it as the entry point, which meaningfully separates it from siblings like register_user or get_user_profile, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear positive guidance: call this first when starting the service. That is an actionable ordering instruction an agent can follow. It stops short of naming alternatives or stating when not to call it (e.g., after onboarding is already complete), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileGet User ProfileC
사용자의 온보딩 상태, 등록 보험 수, 미매핑 특약을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| user_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. '조회합니다' implies a read, but nothing is said about whether the operation is safe, whether the pin is required for authentication, or what happens when a user has no onboarding record. The presence of a sensitive 'pin' parameter with zero explanation is a notable disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no waste, but it is arguably under-specified rather than concise. There is no front-loaded statement of what the tool returns as a whole (a profile object) beyond the enumerated fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 needn't be spelled out, but the tool has two parameters with zero schema documentation and no annotations, and the description closes none of that gap. The unexplained 'pin' parameter alone makes the definition incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does not — it never mentions user_id or pin. The 'pin' property (nullable string, default null) is particularly mysterious: is it a credential, an optional filter, or a legacy field? An agent cannot determine how or whether to supply it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('조회합니다' = retrieve user profile) and enumerates the three data points returned: onboarding status, registered policy count, unmapped riders. That is far more informative than the bare name/title, but it makes no attempt to distinguish this from siblings like list_user_policies or list_standard_rules, which overlap in subject matter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus the ten sibling tools, no prerequisites, and no exclusions. The agent must infer from the tool name alone that this is the profile-summary entry point while list_user_policies is the detailed-policy tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_standard_rulesList Standard RulesB
Return the standard coverage rules. verified is False until checked against policy text.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one meaningful trait: `verified` is False until checked against policy text, warning the agent about data trustworthiness. It does not otherwise state that this is a safe read-only listing or comment on result size/caching, so the disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by a single high-value caveat about the `verified` field. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 needn't be explained, and the zero-parameter signature is simple. However, the description never clarifies what 'standard' rules are relative to the user-policy siblings or confirms read-only semantics in the absence of annotations, leaving a modest gap for an agent routing between the two list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Schema coverage is also 100% regardless.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return the standard coverage rules'), which is enough to distinguish it from mutation siblings like register_user_policy. It stops short of explicitly contrasting with list_user_policies, so the 'standard' vs 'user' distinction is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, no preconditions, and no exclusions. The agent must infer from the name that this is the no-argument baseline-rules lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_user_policiesList User PoliciesC
사용자의 활성 보험 계약 및 특약 목록을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| user_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a genuine behavioral constraint — only '활성' (active) contracts and riders are returned, not terminated ones — which is real information beyond the name. However, it says nothing about authorization, what the pin parameter implies for access, or any limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient to the point of under-specification, but nothing in the text wastes space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be described. But with no annotations, 0% parameter coverage, and an unexplained optional pin, a two-parameter retrieval tool needs more than one sentence to be safely invocable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across two parameters, so the description must compensate and largely fails. '사용자의' hints at a user identifier, but the pin parameter — optional, nullable, defaulting to null — is never explained at all, leaving the agent to guess whether it gates access or is a verification secret.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (조회합니다 = retrieve) and a specific resource (사용자의 활성 보험 계약 및 특약 = the user's active insurance contracts and riders), adding the rider dimension that the name 'policies' does not convey. It is clear enough to distinguish from mutation siblings like register_user_policy or delete_user_policy, though it never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use context, no prerequisites, and no mention of the related siblings (e.g. list_standard_rules, resolve_user_rider, get_user_profile). An agent must infer from the name alone that this is the read path for per-user policy data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_userRegister UserC
신규 사용자를 등록합니다. 타인과 겹치지 않도록 4자리 이상의 PIN을 함께 설정합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| user_id | Yes | ||
| birth_year | No | ||
| display_alias | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a persistent write ('등록합니다') but never states permission requirements, behavior when user_id already exists, whether the operation is idempotent, or what happens to the returned record — significant gaps for a creation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the primary action front-loaded and no filler. It is tight, though the brevity contributes to the documentation gaps noted elsewhere rather than being purely a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explained, but with four undocumented parameters, no annotations, and no sibling differentiation, the definition leaves an agent unable to call this tool confidently beyond supplying a user_id and a 4-digit PIN.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document all four parameters. It adds real meaning only for 'pin' (minimum 4 characters, should not collide with others), while user_id, birth_year, and display_alias receive no explanation of format, validation, or purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('신규 사용자를 등록합니다' – register a new user), which is clearly distinct from siblings like register_user_policy or update_user_rider. It does not explicitly route away from those siblings, but the creation scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus register_user_policy or the onboarding guide tools, and no mention of prerequisites such as whether the user must not already exist. Usage must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_user_policyRegister User PolicyA
보험을 등록하거나 갱신합니다. 미매핑 특약은 resolve_user_rider로 확정하세요.
Register or update a policy. US plans: policy_type US_HOSPITAL_INDEMNITY / US_ACCIDENT / US_CRITICAL_ILLNESS, amounts in dollars, schedule terms in each rider's rule_config_override.
source_type: 보험증권에서 읽은 계약이면 POLICY_CERTIFICATE와 issuer, issued_on(YYYY-MM-DD)을 함께 보냅니다. 계약과 특약 모두 POLICY_CERTIFICATE일 때만 계산됩니다.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| issuer | No | ||
| riders | Yes | ||
| company | Yes | ||
| user_id | Yes | ||
| issued_on | No | ||
| policy_type | Yes | ||
| source_type | No | USER_STATED | |
| product_name | Yes | ||
| enrolled_year | No | ||
| replace_riders | No | ||
| silson_generation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the load. It does disclose a real behavioral rule: calculations only apply when both the contract and riders are POLICY_CERTIFICATE. However, it never explains what 'update' does to an existing policy, what the replace_riders flag (default false) destroys, or whether the operation requires a PIN — significant gaps for a 12-parameter mutation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key facts (register/update, resolve_user_rider pointer) are front-loaded, but the entire content is duplicated verbatim in Korean and English, and the source_type rule is stated twice within the English block alone. Roughly half the tokens are redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. Still, for a mutation tool with no annotations and 12 parameters, the description leaves the overwrite/replace semantics and the meaning of several optional fields unresolved, so an agent could call it correctly structurally but not confidently behaviorally.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it does partially, clarifying source_type, issuer, issued_on format, the US policy_type values, dollar amounts, and rule_config_override placement. But roughly half the parameters (pin, replace_riders, enrolled_year, silson_generation, coverage_amount units per rider) receive no explanation anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('보험을 등록하거나 갱신합니다 / Register or update a policy') and enumerates the US policy_type variants, so the agent knows exactly what resource is being created or modified. It does not distinguish itself from siblings like update_user_rider or register_user beyond one pointer to resolve_user_rider.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete routing rule: unmapped riders should be confirmed via resolve_user_rider first. It also conditions the source_type/issuer/issued_on combination on reading from a contract, which tells the agent when to supply those fields. No explicit when-not or exclusion against update_user_rider is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_user_riderResolve User RiderC
미매핑 특약의 매핑을 확정합니다 (MAPPED, CUSTOM, IGNORED).
rule_config_override: 증권/약관에서 확인한 이 특약만의 지급 요건(예: {"target_kcd_prefixes": ["S72"]}). POLICY_CERTIFICATE 출처 특약에서 계산에 반영됩니다.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| user_id | Yes | ||
| rider_id | Yes | ||
| mapped_rule_id | No | ||
| mapping_status | Yes | ||
| coverage_amount | No | ||
| custom_rule_config | No | ||
| rule_config_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for what is clearly a mutation that finalizes state. It says nothing about the effect on downstream calculation, whether re-resolution is allowed or destructive, why a 'pin' credential is required, or how MAPPED vs CUSTOM vs IGNORED differ in consequences. The only added behavior is that rule_config_override applies to POLICY_CERTIFICATE-sourced riders.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and waste-free. The second is dense and awkwardly punctuated, embedding a raw JSON example mid-sentence, and it explains the least-used optional parameter while ignoring the required ones.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with zero annotation coverage and no schema descriptions, the description is far too thin; an output schema exists so return values needn't be covered, but permissions, reversibility, and the role of most parameters are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 8 parameters, and the description explains only rule_config_override (with an example) plus, implicitly, the mapping_status enum. Six parameters — pin, user_id, rider_id, mapped_rule_id, coverage_amount, custom_rule_config — are undocumented in both schema and description, including the critical distinction between custom_rule_config and rule_config_override.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb+resource (confirm the mapping of an unmapped rider) and enumerates the three resulting statuses (MAPPED, CUSTOM, IGNORED). The scoping word '미매핑' (unmapped) partially separates it from sibling update_user_rider, though the distinction is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implicitly scoped: the tool is for riders that are not yet mapped. There is no explicit guidance on when to call it versus update_user_rider, no prerequisites (e.g. that the rider must already exist for the user), and no exclusions such as re-resolving an already mapped rider.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_user_riderUpdate User RiderC
특약 1건의 가입금액을 변경합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| user_id | Yes | ||
| rider_id | Yes | ||
| coverage_amount | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the entire behavioral burden, yet it discloses almost nothing: not whether the change is reversible, not that a pin is a required authentication/verification credential, and not whether existing coverage is overwritten. It does at least signal a targeted mutation of one field on one record, which is marginally more than the tool name alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is efficient. The brevity is arguably under-specification rather than over-writing, so it is penalized under other dimensions, but the structure itself is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating, likely authenticated operation (optional pin) with no annotations and zero schema description coverage, the description omits essentially all context an agent needs beyond the bare action. An output schema exists, so return values need not be explained, but the auth and side-effect story is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters. The description implies coverage_amount and rider_id by naming the coverage amount of one rider, but says nothing about user_id scoping or the optional pin field, whose purpose (PIN verification for a sensitive mutation) is completely undocumented anywhere. With a 0% coverage schema the description should compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (가입금액을 변경합니다 – change the coverage amount) and a specific resource (특약 1건 – a single rider), so the agent knows exactly what operation is performed. It does not, however, differentiate itself from nearby siblings such as resolve_user_rider or register_user_policy, which an agent could plausibly confuse with a rider mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus resolve_user_rider or register_user_policy, no preconditions, and no exclusions. The only implicit guidance is '1건' (a single rider), which hints at single-record scope but does not route the agent among alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v0.2.0- First observed
delete_user_policy - First observed
evaluate_claim - First observed
get_document_request_guide - First observed
get_onboarding_guide - First observed
get_user_profile - First observed
list_standard_rules - First observed
list_user_policies - First observed
register_user - First observed
register_user_policy - First observed
resolve_user_rider - First observed
update_user_rider
TDQS
Scored across 11 tools
Most tools map to a distinct resource+action (onboarding, user, policy, rider, rules, claim evaluation). The main overlap is register_user_policy, which explicitly says it registers *or updates* a policy, blurring its boundary with update_user_rider and resolve_user_rider. The three guide/list tools (get_onboarding_guide, get_document_request_guide, list_standard_rules) are related but distinguishable by descriptions.
Every tool follows a clean snake_case verb_noun pattern: get_*, list_*, register_*, resolve_*, update_*, delete_*, evaluate_*. Verbs are used consistently for their action type with no camelCase or stylistic mixing.
11 tools sit squarely in the well-scoped range and each covers a meaningful piece of the claim workflow (onboarding, user, policies, riders, rules, evaluation). No obviously redundant or filler tools.
The surface covers onboarding, user registration/profile, policy CRUD, rider resolution/updating, standard rules, and stateless claim evaluation, so core lifecycle is present. Minor gaps exist: no delete-user or profile-update operation, no standalone rider deletion, and no persisted claim history, but these are workable around.
Maintenance
Related MCP Connectors
Inspect payment policy, retrieve and verify receipts, or create post-payment observation receipts.
Explains codes, insurance terms and math on a medical Explanation of Benefits or bill. Read-only.
1Calculate Actuarial Value (AV) & metal tier of a health insurance plan from any document.
Deterministic CMS NCCI/MUE claim scrubbing and CARC/RARC denial explanations, cited to source.
Related MCP Servers
AlicenseAqualityCmaintenanceProvides live US healthcare cost data including procedure cost estimates, provider pricing, insurance coverage rules, and medical bill analysis using real hospital transparency and CMS data.1256 npmMIT- FlicenseNot gradedqualityAmaintenanceRead-only, key-less MCP for Japanese home-visit-nursing reimbursement rules: every requirement carries its source and that source's standing (statute / agency / secondary), and anything unconfirmed is published as unconfirmed. It returns evidence, never a billing decision.1-
- AlicenseAqualityBmaintenanceUS federal student loan repayment math for AI agents, from a parity-verified engine rather than estimated. RAP, IBR, ICR, PAYE and tiered Standard payments with forgiveness timing and tax on forgiveness, plus the plans a borrower is excluded from and the rule why, such as Parent PLUS not qualifying for RAP. No key to start; keyed answers at mcp.finology.tech/mcp add citations.377 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables insurance claims review assistance by querying a knowledge graph of Korean standard insurance terms, restoring applicable policy versions by enrollment date, and returning coverage/exclusion determinations with cited provisions.MIT