Find US veterinary specialists. Search clinics, read procedure articles, estimate costs.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Anonymous cost estimate. Returns $low–$high range computed from regional + case factors. Only procedure_slug is required: anything omitted gets a stated default listed in "assumptions" (no zip → the state, else the national range). Deterministic on identical inputs. PII fields are rejected — use quote_for_case for the PII path.
From list_procedures, e.g. tplo-surgery.
US ZIP (5-digit or ZIP+4). Optional.
City slug. Optional.
US state code or name. Optional; used for the regional adjustment when there is no zip.
All optional. Defaults (stated in the result): dog, m, adult, moderate, elective. Plain words and numbers are understood.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Anonymous cost estimate. Returns $low–$high range computed from regional + case factors. Only procedure_slug is required: anything omitted gets a stated default listed in "assumptions" (no zip → the state, else the national range). Deterministic on identical inputs. PII fields are rejected — use quote_for_case for the PII path.
| Argument | Type | Description |
|---|---|---|
| zip | string | US ZIP (5-digit or ZIP+4). Optional. |
| city | string | City slug. Optional. |
| state | string | US state code or name. Optional; used for the regional adjustment when there is no zip. |
| case_factors | object | All optional. Defaults (stated in the result): dog, m, adult, moderate, elective. Plain words and numbers are understood. |
| procedure_slug* | string | From list_procedures, e.g. tplo-surgery. |
{
"type": "object",
"required": [
"procedure_slug"
],
"properties": {
"zip": {
"type": "string",
"description": "US ZIP (5-digit or ZIP+4). Optional."
},
"city": {
"type": "string",
"description": "City slug. Optional."
},
"state": {
"type": "string",
"description": "US state code or name. Optional; used for the regional adjustment when there is no zip."
},
"case_factors": {
"type": "object",
"properties": {
"species": {
"type": "string",
"description": "dog or cat (canine/feline understood)."
},
"urgency": {
"type": "string",
"description": "elective, urgent or emergency."
},
"age_band": {
"type": "string",
"description": "puppy, young-adult, adult or senior."
},
"severity": {
"type": "string",
"description": "mild, moderate or severe."
},
"age_years": {
"type": "number"
},
"weight_kg": {
"type": "number"
},
"weight_lb": {
"type": "number"
},
"weight_band": {
"type": "string",
"description": "xs <5 kg · s 5–15 · m 15–30 · l 30–50 · xl >50."
},
"comorbidities": {
"type": "array",
"items": {
"type": "string"
},
"description": "cardiac, renal, endocrine, obesity."
}
},
"description": "All optional. Defaults (stated in the result): dog, m, adult, moderate, elective. Plain words and numbers are understood."
},
"procedure_slug": {
"type": "string",
"description": "From list_procedures, e.g. tplo-surgery."
}
},
"additionalProperties": false
}Convenience: combines get_procedure + state filter. Returns the ranked specialist finder list for a procedure in a given state.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| state* | string | 2-letter state slug. |
| procedure* | string | Procedure slug. |
{
"type": "object",
"required": [
"procedure",
"state"
],
"properties": {
"limit": {
"type": "integer",
"default": 12,
"maximum": 25,
"minimum": 1
},
"state": {
"type": "string",
"description": "2-letter state slug."
},
"procedure": {
"type": "string",
"description": "Procedure slug."
}
}
}Fetch a single clinic's full record by slug: credentials, inline reviews, procedures performed, contact action, canonical URL.
| Argument | Type | Description |
|---|---|---|
| city* | string | City slug. |
| slug* | string | Clinic slug. Clinic slugs are unique per city, not globally — pair with city + state for disambiguation. |
| state* | string | State slug. |
{
"type": "object",
"required": [
"slug",
"city",
"state"
],
"properties": {
"city": {
"type": "string",
"description": "City slug."
},
"slug": {
"type": "string",
"description": "Clinic slug. Clinic slugs are unique per city, not globally — pair with city + state for disambiguation."
},
"state": {
"type": "string",
"description": "State slug."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Procedure slug (e.g. "tplo", "hemilaminectomy", "lymphoma-chop"). |
| state | string | Optional 2-letter state slug to pre-filter the finder. |
{
"type": "object",
"required": [
"slug"
],
"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."
}
}
}Published procedure catalog. Returns slug, display_name, also_known_as, specialty_slug for every procedure with a live article.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Composite tool. Always computes an estimate. When owner_email is also present, the case is accepted on arrival: routed at once to a board-certified specialist near the owner (or held while we match one), and the owner gets a receipt email. Requires X-Agent-Attribution when PII is supplied. When PII is absent, behaves identically to estimate_procedure_cost and returns status="estimate_only".
| Argument | Type | Description |
|---|---|---|
| zip | string | US ZIP. Optional. |
| city | string | City slug. Optional; helps route to a practice near the owner. |
| state | string | US state code or name. Optional. |
| case_notes | string | Optional. Free-text notes from the owner for the receiving clinic. |
| owner_name | string | Optional. The email's local part is used if omitted. |
| owner_email | string | Optional. When present, submits the quote request (accepted on arrival) and requires X-Agent-Attribution. |
| owner_phone | string | Optional. |
| case_factors | object | Same shape as estimate_procedure_cost.case_factors. Optional. |
| procedure_slug |
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 result has `needs_state: true`, no clinics, and a `candidates` array (state, state_name, clinic_count, and the exact `next_call` arguments) to re-call with.
| Argument | Type | Description |
|---|---|---|
| city* | string | City slug (e.g. "denver", "austin", "new-york"). Display names ("Denver", "New York") are accepted and normalised. |
| limit | integer | |
| state | string | 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 result tells you when that happens. |
| specialty* | string | Specialty slug (e.g. "orthopedic-surgery", "oncology", "emergency-critical-care", "generalist"). Closed set; use list_specialties. |
{
"type": "object",
"required": [
"city",
"specialty"
],
"properties": {
"city": {
"type": "string",
"description": "City slug (e.g. \"denver\", \"austin\", \"new-york\"). Display names (\"Denver\", \"New York\") are accepted and normalised."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"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 result tells you when that happens."
},
"specialty": {
"type": "string",
"description": "Specialty slug (e.g. \"orthopedic-surgery\", \"oncology\", \"emergency-critical-care\", \"generalist\"). Closed set; use list_specialties."
}
}
}| string |
{
"type": "object",
"required": [
"procedure_slug"
],
"properties": {
"zip": {
"type": "string",
"description": "US ZIP. Optional."
},
"city": {
"type": "string",
"description": "City slug. Optional; helps route to a practice near the owner."
},
"state": {
"type": "string",
"description": "US state code or name. Optional."
},
"case_notes": {
"type": "string",
"description": "Optional. Free-text notes from the owner for the receiving clinic."
},
"owner_name": {
"type": "string",
"description": "Optional. The email's local part is used if omitted."
},
"owner_email": {
"type": "string",
"format": "email",
"description": "Optional. When present, submits the quote request (accepted on arrival) and requires X-Agent-Attribution."
},
"owner_phone": {
"type": "string",
"description": "Optional."
},
"case_factors": {
"type": "object",
"description": "Same shape as estimate_procedure_cost.case_factors. Optional."
},
"procedure_slug": {
"type": "string"
}
}
}