# Canondex Canondex is an index of curated public-data directories. It returns pointers, not listings. Host: https://canondex.com Unmetered: `/`, `/llms.txt`, `/openapi.json`, and `/health`. ## Auth Send header `X-Api-Key` or `Authorization: Bearer ` on metered routes. Demo key: `canondex_dev_discover_000` (legacy alias `dod_dev_discover_000`). Missing or unknown key → HTTP 401 `{"error":"unauthorized","hint":"send X-Api-Key"}`. Over quota → HTTP 402 `{"error":"quota_exceeded","hint":"billing stub; no payment processor"}` with no payment URL. Stripe is not wired (`stripe.wired=false`). Checkout is not live. Quota is a D1 ledger on CATALOG_DB (canondex-catalog) and survives isolate recycle. `/`, `/llms.txt`, `/openapi.json`, `/health`, and `GET /v1/mcp/tools` are unmetered. ## Discover GET /v1/discover?intent=food_inspections&city=austin&state=TX GET /v1/discover?intent=realtors&state=TX&county=Harris GET /v1/discover?intent=trade_licenses&state=TX&county=Harris GET /v1/discover?intent=childcare_ops&state=TX&county=Harris GET /v1/discover?intent=realtors&state=TX&county=Travis GET /v1/discover?intent=nursing_homes&country=US&state=TX GET /v1/discover?intent=k12_schools&country=US&state=TX GET /v1/discover?intent=chiropractors&country=US&state=TX GET /v1/discover?intent=pharmacies&country=US&state=TX GET /v1/discover?intent=building_permits&city=austin&state=TX GET /v1/discover?intent=hospitals&country=US&state=TX GET /v1/discover?intent=home_health&country=US&state=TX GET /v1/discover?intent=hospice&country=US&state=TX GET /v1/discover?intent=dialysis&country=US&state=TX GET /v1/discover?intent=dentists&country=US&state=TX GET /v1/discover?intent=physical_therapists&country=US&state=TX GET /v1/discover?intent=optometrists&country=US&state=TX GET /v1/discover?intent=building_permits&city=chicago&state=IL GET /v1/discover?intent=building_permits&city=nyc&state=NY GET /v1/discover?intent=building_permits&city=sf&state=CA GET /v1/discover?intent=business_licenses&city=chicago&state=IL GET /v1/discover?intent=banks&country=US&state=TX GET /v1/discover?intent=colleges&country=US&state=TX GET /v1/discover?intent=food_inspections&city=houston&state=TX&stale=1 Response shape: `{ query, matches[], note }`. Each match has `next.url` (and optional `next.mcp` / `next.auth`). Call that URL next. Do not expect rankings, entities, or license rows in the discover body. ## MCP (Worker HTTP) GET /v1/mcp/tools POST /v1/mcp/call This is MCP-shaped HTTP, the same contract as SameRead. It is not Streamable HTTP JSON-RPC. Auth mapping: send the same discover API key as `X-Api-Key` or `Authorization: Bearer `. `GET /v1/mcp/tools` needs no key. `POST /v1/mcp/call` meters through the same ledger as `GET /v1/discover`. ``` POST /v1/mcp/call X-Api-Key: dod_dev_discover_000 {"name":"discover","arguments":{"intent":"food_inspections","city":"austin","state":"TX"}} ``` The JSON body equals `GET /v1/discover` for the same arguments. One unit per successful call. ## Pricing (draft) Monthly draft: $0, $29, $99, $249. Checkout is not live. Do not treat these as live prices or ARR. ## Tenant SameRead is the first directory tenant (food inspection rankings): https://sameread.itiriumgroup.workers.dev ## OpenAPI GET /openapi.json ## Do not Do not treat this index as a listings warehouse. Do not scrape HTML search UIs for facts this index points at. Do not expect Authority Host to appear as a geo-intent discover match. Do not invent scores or licenses with a model when a pointer exists.