Overview
Three read-only tools answer the questions patients can’t answer themselves at booking time.
All three are free: they never charge the user, never start a consultation, and work without an active care request. Estimates come from insurers’ published machine-readable rate files and Medicare’s fee schedules, plus public CMS data about providers.
Coverage. US only. Supported: Anthem, any Blue Cross Blue Shield plan through BlueCard, Blue Shield of California, UnitedHealthcare (including UMR, Oxford, and Surest), Cigna, Aetna, Blue Cross Blue Shield of IL/TX/OK/NM/MT (HCSC), and Original Medicare. Medicare Advantage plans are declined with the reason: their rates are not published. Kaiser, Medicaid, and Medi-Cal are not supported.
The same lookups are served as a public HTTP API with no login at
https://api.arlohealth.ai/api/pricing.v1, with identical response shapes. The Pricing API guide is the field-by-field reference for reading responses, including the Original Medicare section. This page covers what is specific to the MCP tools.How plan matching works
With an Arlo account the plan can come from two places:- Linked insurance records. When the patient has connected records, the plan resolves from their coverage automatically (
plan.payerSource: "linked_coverage"). If the records carry more than one active coverage,plan.coverageSelectionsays which one was used; passplanHints.payerNameto pin a different one. planHints. Identifiers from the patient:payerName,employerName,planName,groupNumber(HCSC only), orunavailable: trueto stop the asks.
patientId (from get_user_profile) to price for a family member.
The response’s plan block says what the estimate is based on. Read matchTier and basis before relaying any number:
plan.planHintsReceived reports whether your hints matched. When matched: false, don’t re-ask the patient for the same value.
Choosing the service
There is no free-text service input. You pass a CPT/HCPCScode from the supported catalog (about 170 common outpatient services), because codes carry patient facts the server cannot infer: age band, new versus established patient, screening versus diagnostic, body part, contrast.
- The response echoes a
serviceblock withappliesTo(the fact baked into the code) andrelatedCodes(siblings selected by a different fact). VerifyappliesToagainst the actual patient before relaying numbers, and switch codes when a sibling fits better. - When the code isn’t supported, or none was given, the response returns the full
supportedServicescatalog. Pick the closest code and re-call. service.priceNotecarries pricing semantics that change what the number means (per-15-minute therapy units, ACA preventive care usually $0 out of pocket, a facility fee that excludes the physician’s bill). Relay it whenever present.
search_care_prices
Find nearby in-network care options with estimated negotiated prices under the user’s plan. This is area discovery (“what does this cost around here”), not a clinic directory.Parameters
Reading the results
Results are grouped intofacilities, places of care (billing NPIs grouped by street address), and ordered by sortBasis: places with observed billing for the service first, each tier cheapest first. Present results place-first with the providers inside. Each provider carries:
Facility-level:
activityNote (no provider here shows recent billing; verify the location is open), observedServiceBilling, and latitude / longitude / locationPrecision for maps. Top-level: totalFound (eligible providers in the area), rateFetchNote (the page is the nearest subset, a cheaper option may exist farther out), and signalDefinitions.
check_network_status
Check whether a specific provider or facility is in-network for the user’s plan, and optionally what they charge for a service.Parameters
Interpreting network status
inNetwork: true: the provider appears with negotiated rates in the plan’s published network files.networkEvidencecounts how many of the plan’s network memberships back it (1 to 2 is thin, 10 or more is broad).inNetwork: false: “not found in the published files.” Read the match’snotefor how strong that is. Never state a hard “out of network.” When every match isfalse, that is still not a verdict: the entity that actually bills may not carry the consumer name. Resolve the billing NPI (theprovider_identityask says how) and re-call.identityCaution: a same-name person far from the given location. Verify before relaying anything.matchNote: a match appended by re-searching the name inside the plan’s files. Often the system’s main billing entity at another address.rateNote: in-network, but the published files carry no rate for the code. Don’t read a missing rate as “not covered.”
Which entity bills
On a rated match, readbillingOutlook first:
A
warning on the outlook is binding: a brand-name match does not establish the biller. billingCandidates lists one entry per legal entity that could bill (billingOrg, tin, rate or range, evidence tags), cheapest first. A past bill’s Tax ID matches tin and settles it; the billing NPI from an EOB is what you re-call with. When billingNote is present, surface the fork instead of a single price.
When several matches share a legal name, facilityType, subpart, parentOrganization, and the top-level organizations tree say which kind of entity each is (the hospital, its FQHC subpart, student health). Never pick the cheapest same-name entity as the answer.
Example
get_provider_evidence
Public-data evidence about one provider: Medicare-derived experience (procedure volume, with a national percentile only when high), facility outcome context, what Medicare actually paid this provider per service, or an explained absence. On widget hosts it renders an evidence card for the patient.When to call
Only once the conversation is focused on one specific provider: the patient asks about a particular doctor, or is choosing between named finalists (call once per provider). It needs the NPI, so resolve it first withcheck_network_status or from search_care_prices results.
Parameters
Returns
Binding rules
- Relay each signal’s
displaysentence as written, or summarize without changing its meaning. Never compress a percentile into “best doctor” or any ranking language. level: "facility"signals describe the facility, never the clinician.- Absence of data is never negative evidence. Pediatric, commercial-only, and newer practices legitimately lack Medicare data;
absenceandoptoutsignals explain this. - An
exclusionsignal is a federal exclusion-list notice. Relay it plainly. - Medicare anchors are reference points, not the patient’s price and not a fair-price claim. The patient’s rate comes from
search_care_pricesorcheck_network_status. - There is no composite score, and evidence never re-ranks price results.