# Waity > Waity gives AI agents live wait times for places with a line: the posted wait now, the usual wait for this hour, when it should drop, and shorter options nearby. Current coverage (it grows; GET /v1/categories has details): live waits for er, urgent-care, dmv, airport, border. Full guide: https://api.waity.ai/llms-full.txt. OpenAPI: https://api.waity.ai/openapi.json. Use of Waity is subject to the Terms of Service (https://waity.ai/terms) and Privacy Policy (https://waity.ai/privacy). ## Connect - MCP: https://api.waity.ai/mcp, tools find_waits, get_wait, get_history. For a connector that takes only a URL: https://api.waity.ai/mcp?key=. - REST: GET https://api.waity.ai/v1/places, /v1/places/{id} and /v1/places/{id}/history (past waits; needs a key). Send the user's location as the header X-Waity-Location: lat,lng. ## find_waits, GET /v1/places Give one of: a location (lat and lng; REST near=lat,lng or the header), q (a place name, city, airport code, ZIP, or a plain ask like "ER near Brooklyn"), or ids. Optional: category, open, sort (distance, wait, total), limit (1-25), view (minimal, full). If you don't know where the user is, ask for their city or ZIP (or lat and lng) before calling. When Waity guesses a location: only for REST GET /v1/places with a "near me" q and no location, from a residential (home broadband) network, with a browser or curl-like User-Agent (curl, wget, HTTPie, Postman, Insomnia, a browser opening the URL). Never for MCP, get_wait, datacenter or cloud networks, VPNs, mobile networks, unknown networks, scripts in a web page, or bots, HTTP libraries and AI agents. query.resolved.source is then ip. To make sure it never happens, send a location or the header X-Waity-Location: none. ## get_wait, GET /v1/places/{id} Optional: under (minutes), travel_min (adds next.leave_by), date (YYYY-MM-DD, up to 7 days ahead), forecast, view. An airport, border port or hospital campus id returns its lanes or departments. ## Reading an answer - find_waits returns the list under the key places (each item: place, summary, now, distance, links); get_wait returns one item, or lanes[] for a group id. - summary: one line, safe to repeat as is. - now.value is minutes, set only when now.usable is true: a live reading no older than now.stale_after_s seconds (border waits post hourly, so a post over 90 minutes old is stale). Otherwise now.reason says why. Never present last_value as the current wait. now.bound upper: "under N min"; lower: "over N min"; range: "value_low-value min". - now.usable_until: when now.value stops being usable; after it, ask again. Answers are Cache-Control: private, max-age=60. - Compare minutes only between waits with the same now.source.short and now.basis; a mixed list warns. - warnings: read them to the user, first. Every ER answer's warnings[0] is the 911 line, said once. notes: repeat them. diagnostics: for you only. Show the attribution lines. - Unknown parameters: REST ignores them and says so in diagnostics; MCP rejects unknown arguments with invalid_parameter. - coverage partial: closer places may exist that Waity doesn't track, so never call the results the nearest. coverage none: nothing Waity tracks matched; never say nothing exists. - distance is straight-line km, never a drive time. links are ready-made next calls. ## Safety rules - ER and urgent care: Waity tracks only some, so their lists are coverage partial: never call the results the nearest. For chest pain, stroke signs, trouble breathing or a serious injury, tell the user to call 911 or go to the nearest ER, whatever the waits say; serious symptoms are seen first. An ER wait is the time until a provider first sees you, not the whole visit; sources measure it differently, so never compare minutes across sources. A freestanding ER (place.facility freestanding_ed) has no inpatient beds or surgery. - Urgent care: for minor illness or injury only, never for an emergency. - Border crossings: waits are for entering the US only; Waity has none for leaving the US. - Place-specific rules (the gates a checkpoint serves, what a DMV number counts) come in each answer's notes: repeat them. ## Keys and limits Without a key: 100 calls a day. A free key gives 1000: POST https://api.waity.ai/v1/keys with JSON {"email":"YOUR_EMAIL"}, then send X-Api-Key: (or Authorization: Bearer ). Plans (Free $0 a month, 1,000 calls a day, 1 key; Plus $5 a month, 10,000 calls a day, 2 keys; Pro $29 a month, 50,000 calls a day, 5 keys; Team $199 a month, 500,000 calls a day, 25 keys): https://waity.ai/account; GET https://api.waity.ai/v1/plans has them as JSON. Failed calls never count. 429 rate_limited: wait Retry-After seconds. ## Errors {"error":{"code","message","request_id","param"?,"retry_after_s"?}}. retry_after_s (on 429) matches the Retry-After header. Retry only 429, 500 and 503. Every code: https://api.waity.ai/llms-full.txt. Status: GET https://api.waity.ai/health (ok or degraded, uncounted); accuracy: https://waity.ai/status/accuracy.