{"serverId":"mcp-registry/info.vetclinic/directory","tools":[{"name":"estimate_procedure_cost","fixed":{"name":"estimate_procedure_cost","description":"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.","inputSchema":{"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},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":457,"tokensAfter":457},{"name":"find_specialists_by_procedure","fixed":{"name":"find_specialists_by_procedure","description":"Convenience: combines get_procedure + state filter. Returns the ranked specialist finder list for a procedure in a given state.","inputSchema":{"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"get_clinic","fixed":{"name":"get_clinic","description":"Fetch a single clinic's full record by slug: credentials, inline reviews, procedures performed, contact action, canonical URL.","inputSchema":{"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":139,"tokensAfter":139},{"name":"get_procedure","fixed":{"name":"get_procedure","description":"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.","inputSchema":{"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"list_procedures","fixed":{"name":"list_procedures","description":"Published procedure catalog. Returns slug, display_name, also_known_as, specialty_slug for every procedure with a live article.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":69,"tokensAfter":69},{"name":"list_specialties","fixed":{"name":"list_specialties","description":"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.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":93,"tokensAfter":93},{"name":"search_clinics","fixed":{"name":"search_clinics","description":"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.","inputSchema":{"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":347,"tokensAfter":347}],"toolsChanged":7,"tokensSaved":0,"todo":[{"tool":"find_specialists_by_procedure","params":["limit"]},{"tool":"quote_for_case","params":["procedure_slug"]},{"tool":"search_clinics","params":["limit"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}