FindADoctor.si

New Zealand

Quickstart

Two calls: search for a short list, then open the evidence for the doctors you are seriously considering. The MCP server and the HTTP API have the same tools and return the same JSON. This is the New Zealand service; the United States has its own at /us/docs/. One MCP address serves both countries.

No sign-up. Short lists are free; full evidence has a daily allowance.

1. Connect

Address
MCP (Streamable HTTP), every country: pass country: "NZ"https://api.findadoctor.si/mcp
MCP (Streamable HTTP), New Zealand onlyhttps://api-nz.findadoctor.si/mcp
HTTP APIhttps://api-nz.findadoctor.si/api/v1/… (GET, JSON)
OpenAPI 3.1 (parameters and response fields)https://api-nz.findadoctor.si/openapi.json
MCP server cardhttps://api-nz.findadoctor.si/mcp/server-card
Guide for agentshttps://api-nz.findadoctor.si/llms.txt

MCP clients that support remote servers connect to either MCP URL above. No sign-in or key is needed. An optional account key (by invitation), sent as Authorization: Bearer, raises the daily allowance.

With the address for every country, decide the country first: where the person wants to see a doctor, from the place they mention or what you know about where they live. If nothing settles it (no place given, or a place name used in more than one country, such as Hamilton, with no other clue), ask the person before searching; do not guess, and do not search every country. Pass country: "NZ" to search_doctors, list_specialties and about_database (left out, they use the United States, for clients that connected before New Zealand was added). get_doctor reads the country from the nz_ id. search_gp_practices and public_waitlist are New Zealand only and need no country. The New Zealand-only address needs no country at all.

In Claude (Free, Pro, Max, Team and Enterprise; the Free plan allows one custom connector): Customize → Connectors → + Add → Add custom connector, enter a name and the MCP URL, and Continue. Under Authentication choose No sign in (or add an account key under Request headers as Authorization: Bearer), then Add. On Team and Enterprise an Owner adds it first under Organization settings → Connectors, and members then Connect it. Turn it on in a chat with + → Connectors. Claude’s guide.

In ChatGPT, where your plan and workspace allow custom MCP servers: Plugins → + → Add custom MCP server, enter a name and the MCP URL, set authentication, then Create as a plugin and install it; in a chat, type @ and pick it. Choose no authentication. OpenAI’s guide.

In Claude Code, Codex CLI, Gemini CLI and other MCP clients: add a remote (Streamable HTTP) MCP server with the URL above.

Give at least one of need, specialty, place or name. need is a condition, procedure or focus in plain English; place is a New Zealand city, suburb, or region or Health NZ district.

GET https://api-nz.findadoctor.si/api/v1/search?need=hip%20replacement&place=Christchurch

Each result has doctor_id, name, specialties, vocational scope, cities, sectors (private, public), specialist_since (the year the Medical Council first registered them as a specialist in New Zealand, when known), recognition (a New Zealand honour or a University of Auckland academic title, when there is one), match_basis (with a need: stated_focus, services_listed, shared_service_listed, specialty, specialty_for_symptom, profile_text or partial; shared_service_listed means only a hospital department or large group page the doctor is linked to lists it, so they may not do it themselves; specialty_for_symptom means the need is a symptom few doctors list, such as back pain or dizziness, and the doctor’s specialty usually sees it), place_match (with a place: city_or_address; city_in_region when you gave a region or Health NZ district and the doctor’s town is in it; address_contains, maybe a street name; or region_page_only, often a doctor visiting from elsewhere), detail_has (what get_doctor adds for this doctor) and, when there are any, warnings (for example not practising on the Medical Council register). Doctors who are only on the Medical Council register, with no Healthpoint listing, have listing: "medical_council_register_only": their name, specialty and registration dates are known, but no clinic, phone, fees or focus areas, so search the web for where they practise. When a Healthpoint listing we could not match to the register and a register-only entry share a first and last name, both carry possibly_same_person_as (the other entry’s doctor_id): they may be one doctor, so do not present them as two.

A trimmed example (the doctors’ names and ids are made up; … marks shortened text):

{
  "provider": { "name": "FindADoctor.si New Zealand", "url": "https://findadoctor.si/nz/", "data_version": "nz-public-2026-10-15.5" },
  "before_answering": "This is the free short list: who the doctors are, not the evidence. Before recommending anyone, call get_doctor …",
  "total_matches": 26,
  "offset": 0,
  "results": [
    {
      "rank": 1,
      "doctor_id": "nz_4k9m2x7qph3t",
      "name": "Dr Example Doctor",
      "kind": "Specialist",
      "specialties": ["Orthopaedics"],
      "vocational_scope": "Orthopaedic Surgery",
      "cities": ["Christchurch", "Timaru"],
      "sectors": ["private"],
      "match_basis": "stated_focus",
      "detail_has": ["7 focus areas they list", "clinic phone numbers and addresses", "Medical Council register entry"]
    }
  ],
  "next_step": "Call get_doctor with doctor_ids (up to 10 at once) for the doctors you are considering. …",
  "note": "Confirm phone numbers, fees, insurer status and availability with the clinic before booking. Not medical advice; in an emergency call 111."
}

Results are ranked first by how directly the doctor’s own listing matches the need: doctors who list all its words, then (for a symptom) specialty_for_symptom, then doctors who list some of the words, then words only in profile text. Within each, results are ranked by place_match; with experienced_first=true, by specialist_since (earliest first) after that. Doctors only on the register come after all listed doctors. Not by quality or outcomes: years as a specialist are seniority, not skill. need_note names the specialties added for a symptom (a grouping by common sense, not a diagnosis), or says that no doctor lists all the words. When you search a town or suburb, place_note says how many more doctors match with the wider region as the place (in another town of the region, or only on Healthpoint’s region page, often public-hospital doctors whose page names only the hospital) and which place to search to include them. With specialty, specialty_read_as lists the specialty names searched, and specialty_note explains when a child-specific wording was searched as the general specialty with child=true. Up to 10 results per search; paging stops at 30. Narrow the need or the place instead of paging.

3. Open the evidence

GET https://api-nz.findadoctor.si/api/v1/doctors?ids=nz_4k9m2x7qph3t,nz_8w2c5n1kd7ra

Up to 10 doctor ids per call. Without an account, each network address can open 5 different doctors' evidence a day; with an account key (by invitation), 100. Opening the same doctor again the same day is free. Doctors that do not fit in one reply come back under not_returned_yet, already counted, so ask again for them at no extra cost.

Each doctor can have: specialties, title and qualifications; focus areas and subspecialties they list; languages; whether their services see children; every private and public service with clinic addresses, phone numbers and websites, the procedures and conditions the service lists, fee categories, ages, hours and how to get referred; whether a service or the doctor’s own page says Southern Cross Affiliated Provider or nib First Choice; the Medical Council register entry (status, scope of practice, conditions, practising certificate dates); and source links with read dates. The doctor’s own profile text is not reproduced: give the person the Healthpoint link (sources.healthpoint).

Phone numbers, fees and insurer status change. Tell the person to confirm them with the clinic, and cover with their insurer (often prior approval), before booking.

Each doctor can also have experience: every vocational scope with the date it was granted and years since, years as a specialist in New Zealand (provisional scopes not counted), earliest registration date on the register entry, primary medical degree year, New Zealand honours (with the list and citation), University of Auckland academic title and hospital appointments, and an approximate count of papers with a New Zealand affiliation in Europe PMC (with a link to the list). Seniority signals, not a measure of quality.

4. General practices

search_doctors is for specialists: general practitioners are left out unless you ask for the specialty General Practice. To find a GP, search practices instead:

GET https://api-nz.findadoctor.si/api/v1/gp-practices?place=Hamilton&enrolling=yes&age=34

Each practice has enrolling (yes, restricted, no, does not apply for urgent care, or unknown), its own note on who it takes, locations with phone numbers, the first fee table on the page, usually for enrolled patients (or with age, just the row for that age), online booking, hours and the GPs listed there. Each result’s kind says what sort of practice it is (for example nurse-led, online, or a student health clinic). kind=urgent_care finds accident and urgent medical care and after-hours clinics. Practices are not doctors: searching them does not count toward the daily doctor allowance. Enrolment and fees change often, so tell the person to phone the practice.

5. Public waiting lists

GET https://api-nz.findadoctor.si/api/v1/waitlist?specialty=Orthopaedic&district=Canterbury

Health NZ figures by district and specialty, for the latest month and the same month a year earlier: people waiting for a first specialist assessment and for planned treatment, and the share waiting over 120 days. Useful when the person is weighing public against private care. Health NZ names some specialties differently in the two lists (for example Orthopaedics for a first assessment and Orthopaedic Surgery for treatment); asking for either returns both.

Tools

MCP toolHTTPWhat it does
search_doctorsGET /api/v1/searchFree short list for a need, specialty, place or name.
get_doctorGET /api/v1/doctors?ids=… or /api/v1/doctors/{doctor_id}Evidence for up to 10 doctors. Counted per day.
search_gp_practicesGET /api/v1/gp-practicesGeneral practices (or urgent care) by place: taking new patients or not, fees by age, GPs listed. Not counted.
list_specialtiesGET /api/v1/specialtiesSpecialty names used here (Healthpoint categories) with doctor counts.
public_waitlistGET /api/v1/waitlistHealth NZ public waiting lists by district and specialty.
about_databaseGET /api/v1/aboutSources, read dates, coverage counts and known gaps.

search_doctors parameters

ParameterMeaning
needCondition, procedure or focus in plain English, e.g. ACL reconstruction, endometriosis, cataract surgery. Matched against the focus areas doctors list, then the procedures their services list, their specialty, and their own profile text and hospital web page (used for matching only, not shown).
specialtyA specialty name from list_specialties, a word from one, or a plain word, e.g. orthopaedic, ENT, eye, skin. Matched word by word (endings may differ, so cardiologist finds Cardiology; not fragments inside words); the reply’s specialty_read_as lists the names searched.
placeA New Zealand city, suburb, or region or Health NZ district, e.g. Christchurch, North Shore, Hawke's Bay, Capital and Coast (the district names public_waitlist uses work). Macrons are optional (Whangarei finds Whangārei).
nameThe doctor’s name or part of it, to check a named doctor. Titles such as Dr or Prof are ignored and word order does not matter (Dr Jane Smith finds Jane Mary Smith); exact names come first.
sectorany (default), private (the doctor lists a private service) or public (a Health NZ service).
childtrue when the patient is a child: among doctors in the same place who match the need equally well, those in paediatrics or who list children in their focus come first, then those whose services say they see children; doctors whose services list only adult ages are left out. Most listings do not say, so those doctors stay in.
languageA language other than English that the doctor or a small clinic lists, e.g. Mandarin, Hindi, Samoan.
genderfemale or male. Only when the person asks. Gender is recorded for only a small share of doctors (when their Healthpoint page states it); the others are left out, and gender_note says how many.
southern_cross_affiliatedtrue keeps doctors whose own Healthpoint page or at least one of whose service pages says Southern Cross Affiliated Provider. Cover still depends on the policy.
experienced_firsttrue puts doctors who have been specialists longest first, among doctors who match the need and place equally well. Only when the person asks for an experienced or senior doctor.
limit, offsetUp to 10 results per page; paging stops at 30 results.

get_doctor parameters

ParameterMeaning
doctor_idsUp to 10 doctor_ids from search results (HTTP: ids, comma-separated).
doctor_idOne doctor_id.

A doctor keeps the same doctor_id when the database is rebuilt, including when a doctor who was only on the Medical Council register is later found on Healthpoint. If an id does change, the old id still returns the doctor, and the reply’s id_changed gives the current id to use from then on.

search_gp_practices parameters

ParameterMeaning
placeA New Zealand city, suburb or region, as for search_doctors.
namePart of the practice’s name. Give place or name.
enrollingany (default), yes (taking new enrolments) or yes_or_restricted (also practices taking only some people).
ageThe person’s age (0 to 120): each practice shows only the fee row for that age.
languageA language other than English the practice lists.
kindgp (default: general practices), urgent_care (accident and urgent medical care, after hours) or any.
limit, offsetUp to 10 practices per page.

public_waitlist parameters

ParameterMeaning
specialtye.g. Orthopaedic, ENT, General Surgery, eye. An exact name is matched first, then names that contain each word, then the same without words like “surgery” and with common plain words mapped (eye → Ophthalmology, heart surgery → Cardiothoracic, cardiologist → Cardiology, internal medicine → General Medicine), then part of a name; both of Health NZ’s names for the same specialty are returned.
districtHealth NZ district, e.g. Auckland, Canterbury, Capital and Coast. Part of a name also matches, so Canterbury includes South Canterbury. A city or region is read as its district (Wellington → Capital and Coast, Dunedin → Southern) and the reply’s district_read_as says so. Macrons are optional.

Errors

StatusMeaningWhat to do
400A parameter is missing or invalidThe message names what to change.
401The account key is not validSend a valid key, or none.
403A web page on another site asked for doctor details from a visitor’s browser (cross_site)Call from your agent or server, not from another site’s page.
404No doctor with that idUse a doctor_id from a search.
429Rate limit or daily doctor allowance used upTell the person; the message says when it resets.
503Busy or startingRetry shortly.

Limits per connection: Limits. What the data holds and where it comes from: Data.