# info.summary
Read-only HTTP resources for EyeOn Tracker product discovery. No order API, payment API, webhooks, MCP server, or agent registration.

# info.description
EYEON (also EyeOn Tracker, eyeontracker.com) is a B2C product site for private firearm owners in Israel.

**Versioning:** current API is **v1**, URL-prefixed (`/v1/…`). Legacy aliases (`/status.json`, `/openapi.json`) remain. Breaking changes ship as `/v2/`; v1 will then send `Deprecation` and `Sunset` headers. There is no write surface and no agent credentials.

**Errors:** 4xx/5xx use RFC 9457 `application/problem+json` with `code`, `title`, `detail`, and `hint`.

**Rate limit:** `RateLimit` / `RateLimit-Policy` on JSON responses (120 req / 60s). A 429 includes `Retry-After`.

Humans order via the website form → WhatsApp. Agents should read `/llms.txt` and `/docs`.

# servers[].description
Site origin (legacy aliases + HTML pages)

# externalDocs.description
EYEON developer resources — when to call this origin, auth policy, error model

# tags[].description
Machine-readable product facts and catalogs

# tags[].description
Human-facing HTML (also available as markdown via content negotiation)

# paths./status.get.description
Returns a static JSON heartbeat. Use this to verify the origin is reachable before reading `/v1/catalog`. No authentication. Rate-limit headers are always present.

# paths./catalog.get.summary
EYEON product catalog (price, compatibility, order channel)

# paths./catalog.get.description
Typed JSON of the facts an agent needs to answer consumer questions about EYEON: price, shipping, battery, networks, and pistol compatibility. Not an inventory or checkout API — orders still go through WhatsApp.

# paths./compatibility.get.summary
Pistol compatibility list (same document as catalog)

# paths./compatibility.get.description
Alias of `/v1/catalog`. Prefer `/v1/catalog` in new integrations. Returns the same Catalog object so agents can bind a single schema.

# paths./openapi.json.get.description
Serves the same OpenAPI 3.1 document as `/openapi.json` on the site origin, from the versioned `/v1/` prefix. Use this URL in function-calling tool definitions.

# paths./llms.txt.get.description
Plain-text index: what EYEON is, when to use this origin, and links to catalog, docs, auth.md, and legal pages. Prefer this file as the first fetch after landing on eyeontracker.com.

# paths./docs.get.summary
EYEON developer resources (HTML; markdown via Accept)

# paths./docs.get.description
Human- and agent-readable documentation for the public discovery API: when to use EYEON, endpoints, auth (none), error model, and deprecation policy. Send `Accept: text/markdown` for `/docs.md`.

# paths./auth.md.get.summary
Agent authentication / registration policy

# paths./auth.md.get.description
WorkOS-shaped auth.md: Discover, Pick a method, Register, Claim, Use credential, Errors, Revocation. This origin issues no credentials — anonymous GET of public resources only.

# components.parameters.AcceptJson.description
Prefer application/json. Problem+json is used for errors.

# components.parameters.AcceptMarkdown.description
Send text/markdown for a markdown representation of this page.

# components.schemas.Problem.properties.type.description
RFC 9457 type URI pointing at /docs#code

# components.responses.NotFound.description
Unknown path. Agents should not retry with a different method.