> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arlohealth.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SKILL.md

> Drop-in skill for Grok Bot, Claude Code, and Codex. Same text as GET /api/pricing.v1/skill.md

Save the block below as `arlo-care-pricing/SKILL.md`, or point your platform at `https://api.arlohealth.ai/api/pricing.v1/skill.md`. Nothing in it is secret: no key, no login.

````markdown theme={null}
---
name: arlo-care-pricing
description: Look up what a US medical service costs under someone's insurance, whether a doctor or clinic is in their network, and what public data says about a provider. Free API from Arlo Health, no login or key.
when-to-use: the user asks what a medical service costs, whether a doctor, clinic, or hospital takes their insurance, wants to compare prices near them, or asks about a specific provider (US only)
allowed-tools: bash
metadata:
  author: Arlo Health
  short-description: US care prices, network status, and provider evidence, no auth
---

# Arlo care pricing

Free JSON API. Base URL: `https://api.arlohealth.ai/api/pricing.v1`
Always send `-H "User-Agent: arlo-care-pricing-skill/1.0"`.

## Before the first call in a conversation

1. Read the guide. It explains every field and the rules for relaying numbers:
   `curl -s -H "User-Agent: arlo-care-pricing-skill/1.0" https://api.arlohealth.ai/api/pricing.v1/guide.md`
2. Get the service catalog and pick the CODE yourself. There is no free-text service search:
   `curl -s -H "User-Agent: arlo-care-pricing-skill/1.0" https://api.arlohealth.ai/api/pricing.v1/catalog`

## Get these from the user

Ask for the first three up front. Ask for the rest only when the response asks (`needsMoreInfo`) or the user has them handy.

- **Insurer name** (required): Anthem, any Blue Cross Blue Shield plan, Blue Shield of California, UnitedHealthcare/UMR/Oxford/Surest, Cigna, Aetna, Original Medicare. Kaiser, Medicare Advantage, Medicaid, and Medi-Cal are not supported; say so.
- **For Medicare**: Original Medicare (red, white and blue card, maybe with a Medigap supplement) or a Medicare Advantage plan through an insurer? Pass their words as `payerName` ("Original Medicare", "AARP Medicare Supplement", "Medicare Advantage"). A bare "Medicare" is priced as Original Medicare with a `medicare_type` ask; confirm before the numbers stand. Employer, plan name, and group number do nothing for Medicare.
- **Location**: ZIP or coordinates. For a named clinic, the clinic's city or ZIP.
- **The exact service**: confirm age, new vs established patient, screening vs symptom-driven, body part, contrast. These choose the code.
- **Employer the plan is through, or the plan name on the card**: turns ranges into the plan's exact rates.
- **Group number**: only useful for Blue Cross Blue Shield of IL, TX, OK, NM, MT. Do not ask otherwise.
- **Provider name + city**, or the **NPI** (provider's website, a past bill, or npiregistry.cms.hhs.gov).
- **From a past bill or Explanation of Benefits**: the billing provider's NPI and Tax ID. They settle which legal entity bills for a clinic.
- **Which coverage** if they have more than one.
- If they cannot provide plan details, pass `planUnavailable=true` so the API stops asking.

Never ask for member ID, date of birth, or a Social Security number. They do not change the answer.

## Which endpoint

- The user names a clinic, brand, hospital, or doctor: `network-status` FIRST.
- "What does X cost near me" with no named provider: `search`.
- The user is asking about one specific provider and you have the NPI: `provider-evidence`.

## Calls

```
curl -s -H "User-Agent: arlo-care-pricing-skill/1.0" \
  "https://api.arlohealth.ai/api/pricing.v1/search?code=99213&zip=94607&limit=10&payerName=Anthem"

curl -s -H "User-Agent: arlo-care-pricing-skill/1.0" \
  "https://api.arlohealth.ai/api/pricing.v1/network-status?providerName=One%20Medical&zip=94107&code=99213&payerName=Anthem"

curl -s -H "User-Agent: arlo-care-pricing-skill/1.0" \
  "https://api.arlohealth.ai/api/pricing.v1/provider-evidence?npi=1003041625&code=45378"
```

Other query parameters: `employerName`, `planName`, `groupNumber`, `planUnavailable`, `latitude`, `longitude`, `radiusKm`, `limit`, `npi`. POST with a JSON body works the same, with the plan fields nested under `planHints`.

## Reading responses (binding)

- Relay `disclaimer` every time. Estimates come from insurers' published rate files and are never a guarantee. The number is the negotiated rate, not what the user pays out of pocket.
- HTTP 200 is not "done." If `needsMoreInfo` is present, ask the user what it asks, then call again with the answer.
- Read `plan.matchTier` and `plan.basis`: exact-plan tiers give a `rate`; `payer_fallback` gives a `rateRange`, so lead with `typicalRate` or the median and say it is a range; `medicare_schedule` gives Medicare's approved amount as `rate` with `patientShare` (what the person owes; 0 on screenings and labs) and `medicareStatus` (enrolled, accepts assignment, opted out); `no_payer` means the insurer is not supported.
- Original Medicare: quote the approved amount and `patientShare` together, relay `statusNote` and the top-level `medicare.note` once, and say results are ordered by distance, not price. Imaging or procedures at a hospital add a separate facility charge that is not included. `service.medicareNote` names the code to use instead when Medicare does not pay this one (annual physical -> Annual Wellness Visit G0438/G0439).
- Verify `service.appliesTo` fits the user before quoting. Switch to a `relatedCodes` sibling if it fits better.
- Relay `service.priceNote`, per-result `note`, and `rateAssessment` whenever present.
- `inNetwork: false` means "not found in the published files," never "out of network." Say to verify with the provider. If every match is false, find the billing NPI and call again before any verdict.
- Never quote a single number when `billingOutlook.mode` is `partitioned`, a row has `multiEntity: true`, or `billingCandidates` has more than one entry. Present the fork and the outlook's `ask`; a past bill's Tax ID picks the right candidate.
- When several matches share a legal name, use `facilityType`, `subpart`, `parentOrganization`, and the top-level `organizations` tree to say which kind of entity each is (hospital, FQHC subpart, student health). Never pick the cheapest same-name entity as the answer; relay `identityNote` when present.
- Present `search` results place-first (facility name or address) with providers inside. Mention `rateFetchNote` when present: a cheaper option may exist farther out.
- Never rank providers or call anyone the best. Relay evidence `display` sentences as written. Absence of evidence is never negative.

## Boundaries

US only. Not medical advice. For care, point the user to https://arlohealth.ai.
On HTTP 429 or 503, say the lookup is temporarily unavailable and try again later. Do not invent prices.
````
