VetClinic.info — Veterinary Specialty Directory
Find US veterinary specialists. Search clinics, read procedure articles, estimate costs.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"directory": {
"url": "https://vetclinic.info/mcp"
}
}
}원격 엔드포인트
https://vetclinic.info/mcpstreamable-http할 수 있는 일
도구 목록
도구 (8)
🟢search_clinics(city, specialty, state, limit)
Find veterinary specialty clinics by city + specialty. Returns a ranked shortlist with credentials, address, rating, review count, and a contact action. Promoted listings rank first. `state` is genuinely optional: omit it and the city is resolved across states; if that city slug exists in more than one state the error carries a `data.candidates` array (state, state_name, clinic_count) to re-call with.
입력 스키마
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City slug (e.g. \"denver\", \"austin\", \"new-york\"). Display names (\"Denver\", \"New York\") are accepted and normalised."
},
"specialty": {
"type": "string",
"description": "Specialty slug (e.g. \"orthopedic-surgery\", \"oncology\", \"emergency-critical-care\", \"generalist\"). Closed set; use list_specialties."
},
"state": {
"type": "string",
"description": "Optional 2-letter state slug (\"co\", \"tx\", \"ca\"). Omit it unless you know it — it is only needed to disambiguate a city slug shared by several states, and the error response tells you when that happens."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
}
},
"required": [
"city",
"specialty"
]
}🟢get_clinic(slug, city, state)
Fetch a single clinic's full record by slug: credentials, inline reviews, procedures performed, contact action, canonical URL.
입력 스키마
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Clinic slug. Clinic slugs are unique per city, not globally — pair with city + state for disambiguation."
},
"city": {
"type": "string",
"description": "City slug."
},
"state": {
"type": "string",
"description": "State slug."
}
},
"required": [
"slug",
"city",
"state"
]
}🟢get_procedure(slug, state)
Fetch a procedure article with cost band, contraindications, emergency signals, FAQ, citations. When state is supplied, also returns a ranked clinic finder pre-filtered to that state.
입력 스키마
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Procedure slug (e.g. \"tplo\", \"hemilaminectomy\", \"lymphoma-chop\")."
},
"state": {
"type": "string",
"description": "Optional 2-letter state slug to pre-filter the finder."
}
},
"required": [
"slug"
]
}🟡list_specialties
Closed-set enum of recognized veterinary specialty slugs. Returns slug, display_name, and credentialing_board.sameAs (when applicable). Always call this before search_clinics if uncertain about specialty mapping.
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢list_procedures
Published procedure catalog. Returns slug, display_name, also_known_as, specialty_slug for every procedure with a live article.
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢find_specialists_by_procedure(procedure, state, limit)
Convenience: combines get_procedure + state filter. Returns the ranked specialist finder list for a procedure in a given state.
입력 스키마
{
"type": "object",
"properties": {
"procedure": {
"type": "string",
"description": "Procedure slug."
},
"state": {
"type": "string",
"description": "2-letter state slug."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 12
}
},
"required": [
"procedure",
"state"
]
}⚪estimate_procedure_cost(procedure_slug, zip, case_factors)
Anonymous cost estimate. Returns $low–$high range computed from regional + case factors. Deterministic on identical inputs. PII fields are rejected — use quote_for_case for the PII path.
입력 스키마
{
"type": "object",
"properties": {
"procedure_slug": {
"type": "string"
},
"zip": {
"type": "string",
"pattern": "^[0-9]{5}$"
},
"case_factors": {
"type": "object",
"properties": {
"species": {
"enum": [
"dog",
"cat"
]
},
"weight_band": {
"enum": [
"xs",
"s",
"m",
"l",
"xl"
]
},
"age_band": {
"enum": [
"puppy",
"young-adult",
"adult",
"senior"
]
},
"severity": {
"enum": [
"mild",
"moderate",
"severe"
]
},
"urgency": {
"enum": [
"elective",
"urgent",
"emergency"
]
},
"comorbidities": {
"type": "array",
"items": {
"enum": [
"cardiac",
"renal",
"endocrine",
"obesity"
]
}
}
},
"required": [
"species",
"weight_band",
"age_band",
"severity",
"urgency"
],
"additionalProperties": false
}
},
"required": [
"procedure_slug",
"zip",
"case_factors"
],
"additionalProperties": false
}⚪quote_for_case(procedure_slug, zip, case_factors, owner_name, owner_email, ...)
Composite tool. Always computes an estimate. When owner_email is also present, additionally submits a confirmation-gated lead and dispatches a confirmation email to the owner (requires X-Agent-Attribution header). When PII is absent, behaves identically to estimate_procedure_cost and returns status="estimate_only".
입력 스키마
{
"type": "object",
"properties": {
"procedure_slug": {
"type": "string"
},
"zip": {
"type": "string",
"pattern": "^[0-9]{5}$"
},
"case_factors": {
"type": "object",
"description": "Same shape as estimate_procedure_cost.case_factors."
},
"owner_name": {
"type": "string",
"description": "Optional. Required if owner_email is present."
},
"owner_email": {
"type": "string",
"format": "email",
"description": "Optional. When present, triggers the lead-capture write path and requires X-Agent-Attribution."
},
"owner_phone": {
"type": "string",
"description": "Optional."
},
"case_notes": {
"type": "string",
"description": "Optional. Free-text notes from the owner for the receiving clinic."
}
},
"required": [
"procedure_slug",
"zip",
"case_factors"
]
}커뮤니티
증거