{
 "schema": "axion-changes/1",
 "site": "screeningfacts.com",
 "generated": "2026-09-06",
 "checked": "2026-09-06",
 "items": [
  {
   "date": "2026-09-06",
   "path": "/api/companies",
   "what": "Dataset refreshed: full-text scan of 28,377,895 CFPB complaint rows across 17 screening companies (complaint mentions + error patterns); supersedes the 2026-08-10 scan of 27,804,930 rows — complaint-mention counts moved for 11 of 17 companies",
   "source": "https://www.consumerfinance.gov/data-research/consumer-complaints/",
   "kind": "data",
   "fixity": "sha256-2491d5efd60eef26a2fbef7b10ad6a6169ef80e60a2fb7f2a55bfd843a5460fa",
   "field": "total_rows_scanned",
   "value": "28377895",
   "superseded_value": "27804930",
   "retired": "2026-09-06"
  },
  {
   "date": "2026-09-06",
   "path": "/",
   "what": "Agent readiness Wave B: Accept: text/markdown negotiation (q-values honoured; Vary: Accept) on / , /companies, /situations, every company page and every situation page — text/markdown; charset=utf-8 rendered from the same data as the HTML (YAML frontmatter = the cite object + dataset_fixity; complaint counts with the CFPB source; the three FCRA rights; sources as a list), under the return contract (own ETag, 304), with x-markdown-tokens (ceil(utf-8 bytes / 4)) and the content-signal response header; pages with no data model keep answering HTML. WebMCP: / registers one tool, screeningfacts_companies (description and inputSchema from /openapi.json's /api/companies operation; execute fetches the real /api/companies), guarded on navigator.modelContext.provideContext",
   "kind": "shape"
  },
  {
   "date": "2026-09-06",
   "path": "/.well-known/api-catalog",
   "what": "Agent readiness Wave A: RFC 8288 Link headers (api-catalog, service-desc, service-doc, describedby, ard) on / and every machine surface; /.well-known/api-catalog (RFC 9727 linkset); Content-Signal line in robots.txt (search=yes, ai-input=yes, ai-train=no); /auth.md (no registration, no OAuth — stated); /.well-known/mcp/server-card.json (gateway transport, no tool reads this door yet); /.well-known/agent-skills/index.json + /skills/screeningfacts-lookup.md (sha256 digest of the served bytes); /.well-known/ai-catalog.json and /.well-known/ard.json (ARD manifest). All under the return contract (ETag/304)",
   "kind": "shape"
  },
  {
   "date": "2026-09-06",
   "path": "/openapi.json",
   "what": "Dataset fixity (axion-return v1.3): one sha256 over the served data files, byte-identical on the cite object (`dataset.version` + `dataset.fixity` on /api/companies), the passport (`last_verified.fixity`), /openapi.json (`info.x-dataset-fixity`) and every data item here (`fixity`)",
   "kind": "shape"
  },
  {
   "date": "2026-09-06",
   "path": "/changes.json",
   "what": "Added the return contract (axion-return/v1): ETag + Last-Modified + 304 on every machine surface; /changes.json, /changes.atom and /openapi.json",
   "kind": "shape"
  },
  {
   "date": "2026-09-06",
   "path": "/llms.txt",
   "what": "Added dated `Checked` line derived from the passport's dataset stamp",
   "kind": "shape"
  },
  {
   "date": "2026-09-05",
   "path": "/api/companies",
   "what": "Added the citation object (axion-cite/v1) `cite` field and `Link: <canonical>; rel=canonical` header on every JSON door",
   "kind": "shape"
  },
  {
   "date": "2026-09-05",
   "path": "/",
   "what": "Security wave: CSP with per-request nonce, HSTS, security headers on every response; POST /q rate-limited to ten a minute per connection; /answers read bounded; beacon keeps referrer host only",
   "kind": "shape"
  },
  {
   "date": "2026-09-05",
   "path": "/privacy",
   "what": "The exit question (what did you come here to find out?) at the foot of every page; POST /q stores the typed text only, 120-day TTL; disclosed on /privacy",
   "kind": "shape"
  },
  {
   "date": "2026-09-04",
   "path": "/for-agents",
   "what": "Machine-first orientation page and /for-agents.json, projected from the estate door registry; noindex",
   "kind": "page"
  }
 ]
}