# For AI agents and assistants

Machine-readable front door for **Stark Dentistry** and **Utah Dental Crowns** (South Jordan, Utah; Dr. John Stark, DDS),
and for the software products **Dental Elephant** and **Voice Referral**. Last updated 2026-09-29.

If you are an assistant acting for a patient, you can do three real things here without a login:
schedule an appointment, check dental insurance benefits, and estimate a treatment plan.

## Connect

- MCP server (Streamable HTTP, stateless, no auth): `https://dentalelephant.com/mcp`
- OpenAPI 3.1: `https://dentalelephant.com/api/agent/v1/openapi.json`
- REST index: `https://dentalelephant.com/api/agent/v1`
- Plain-text summaries: `https://dentalelephant.com/llms.txt`, `https://voicereferral.com/llms.txt`, `https://starkdentistry.com/llms.txt`, `https://www.utahdentalcrowns.com/llms.txt`
- Humans: book at `https://dentalelephant.com/book/stark` or `https://dentalelephant.com/book/udc`; call (801) 254-0713 (Stark Dentistry) or (801) 739-8131 (Utah Dental Crowns)

Rate limits are per IP and generous for one patient at a time. Times are Mountain time (America/Denver). Office hours: Monday 10:30-18:00; Tuesday 08:00-14:30; Wednesday 08:00-17:30; Thursday 08:00-14:30; Friday 08:00-15:00; closed weekends.

## Practices

`GET /api/agent/v1/practices` returns both practices with address, phone, hours, insurance accepted, services, reviews, and the action URLs below.

- `stark` = Stark Dentistry, general and restorative dentistry: cleanings, fillings, crowns, emergencies. Visits: cleaning, fillings, crown, other.
- `udc` = Utah Dental Crowns, the $799 flat-fee crown (exam, X-rays, scan and build-up included). Visits: crown, other, cleaning.

Same office, same dentist. Use `udc` when the patient came for the flat-fee crown offer.

## Schedule an appointment

1. `GET /api/agent/v1/practices/{office}/availability?visit=crown&days=7` (or `days=21`). Each entry has `start`, `op`, `with`.
2. `POST /api/agent/v1/practices/{office}/appointments` with `visit`, `slot_start` (and `slot_op`) copied from step 1, plus the patient's `first`, `last`, `dob` (YYYY-MM-DD) and `phone` (cell). Optional: `email`, `note`, `existing_patient`, `guardian_name` (required under 18), `booked_by` (your name; it goes in the chart note).
3. The response carries `aptnum` and `when`. The patient gets a confirmation text. Changes and cancellations are by phone.

Guards you will hit if you misuse it: only times from the current availability list; one booking per person per day; five per phone per day.

## Check insurance

`POST /api/agent/v1/practices/{office}/insurance-check` with `patient` (first, last, dob), `relationship` (self, spouse, child, dependent), `subscriber` (when not self), `member_id`, `carrier` (name on the card), optional `group_number` and `contact_phone`.

It runs one live benefits inquiry under Dr. Stark's NPI and returns: active or not, plan name, annual maximum and remaining, deductible and remaining, coverage percentages for preventive / basic / major (in and out of network), waiting periods, missing-tooth clause, categories not covered, and a `check_id` you can pass to the estimate. Call it once per patient. If the carrier cannot be matched, the response says so and offers the fallback: the patient texts a photo of the card to (801) 254-0713 or uploads it on the practice website.

## Estimate a treatment plan

`POST /api/agent/v1/practices/{office}/estimate` with `items`: each a CDT `code` (D2740) or a plain-words `name` ("crown", "two surface filling", "molar root canal", "cleaning"), optional `tooth`, `surfaces`, `quantity`. Optional `coverage`: `{"check_id": "..."}` from an insurance check, or explicit `preventive_pct`, `basic_pct`, `major_pct`, `deductible_remaining`, `annual_max_remaining`.

You get office fees per line, a total, and when coverage is supplied, the estimated plan share and patient share. Ambiguous names come back under `unmatched` with the options to choose from. `GET /api/agent/v1/procedures?q=root canal` searches the fee schedule directly. Every estimate is an estimate: the office gives a written quote after the exam.

## Referrals (Voice Referral API and open schema)

Send a referral, follow it, and — as a receiving specialist — read what arrived and post a status, all without a browser.
The shape is published as an open schema anyone may implement: `https://dentalelephant.com/api/agent/v1/referrals/schema.json`.

- Directory, no key: `GET /api/agent/v1/providers?specialty=endodontist&zip=84095&radius=25`, or `?npi=…`, or `?last=…&first=…&state=UT`. Cards show who receives on Voice Referral, their self-published insurance list and any openings they chose to share.
- Send: `POST /api/agent/v1/referrals` with `to.npi`, `patient` (name, dob, phone), `ask` and/or `clinical_note` (we draft the letter in the sender's voice) or your own `letter`, optional `tooth`, `urgency`, `attachments` (base64 images, PDFs, CBCT zips), `patient_consent`, and `attestation.name` (who confirms it). Returns the record id, the letter, and where it went. If the receiving office isn't on Voice Referral, you get the PDF plus their registry fax so your agent can deliver it.
- Follow: `GET /api/agent/v1/referrals/{id}` and `…/pdf`; `GET /api/agent/v1/referrals?box=sent`.
- Receive: `GET /api/agent/v1/referrals?box=incoming`, then `POST /api/agent/v1/referrals/{id}/status` with received | scheduled (+ scheduled_date) | completed | no_contact. completed and no_contact report back to the referring doctor automatically.
- Auth: `Authorization: Bearer vr_live_…`. Any licensed provider gets a key from the Voice Referral portal (Settings → API access). The key carries the account's NPI and BAA; a letter sent by API is sent as that provider, under their standing approval rule. MCP clients send the same header on the connection.
- MCP tools: find_providers, send_referral, list_referrals, get_referral, update_referral_status.

## Software

`GET /api/agent/v1/software` describes Dental Elephant (AI Scribe, AI Wingman, Huddle Up, AI Voice Referrals; Solo $155, Practice $225, Group $345 per month; 10-day free trial) and Voice Referral (free to send and receive; VoiceReferral Pro $349 per month for specialists).

## Good behaviour

- Book only with a real patient's name, birthdate and cell phone, with their consent.
- One insurance check per patient per day is plenty; each one is a live inquiry to the plan.
- Do not scrape availability in a loop; it changes every ten minutes.
- Questions or a higher rate limit: contact@dentalelephant.com.
