{"openapi":"3.1.0","info":{"title":"Scrutica public read API","version":"0.2.0","description":"Public, read-only JSON endpoints over the Scrutica AI compute-infrastructure substrate. No authentication; per-route rate limits. The provenance contract holds across payloads: records carry data_source, source_url, authority_tier (1 primary filing/measurement, 2 research database, 3 press/analyst, 4 derived), and is_estimated where values are derived. Null means not published — never infer. Richer, typed access (search, entity records, supply-chain traversal, export-control change log, FLOP estimation) is served by the MCP server at https://scrutica.com/api/mcp; human documentation at https://scrutica.com/agents.","contact":{"name":"Scrutica","url":"https://scrutica.com/agents","email":"davidgringras@hsph.harvard.edu"},"license":{"name":"CC BY-SA 4.0 (data; see /agents for the licensed-corpora carve-out)","identifier":"CC-BY-SA-4.0"}},"servers":[{"url":"https://scrutica.com"}],"paths":{"/api/health":{"get":{"summary":"Liveness probe","parameters":[{"name":"deep","in":"query","required":false,"schema":{"type":"string","enum":["1"]},"description":"When 1, also checks database connectivity."}],"responses":{"200":{"description":"Service healthy.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/page-md":{"get":{"summary":"Markdown rendering of any page","description":"Backs the site-wide `.md`-suffix convention (fetch any page URL + \".md\") and the Accept: text/markdown content negotiation. Facility paths render a native, cited markdown twin from the data modules; other paths convert the rendered HTML. Unknown facility ids return a real 404.","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string"},"description":"Leading-slash page path, e.g. /methodology or /facilities/fac-stargate-abilene."}],"responses":{"200":{"description":"Markdown document.","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Unknown entity id (native-twin paths only)."}}}},"/api/export-controls/cascade-feed":{"get":{"summary":"BIS cross-reference cascade deltas (JSON audit feed)","description":"Machine-readable change deltas from the BIS Entity List cross-reference cascade, for enforcement researchers who want deltas without screen-scraping.","parameters":[{"name":"window","in":"query","required":false,"schema":{"type":"integer"},"description":"Look-back window in days."}],"responses":{"200":{"description":"Delta events.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/sovereign-programs/derivation-chain":{"get":{"summary":"Sovereign-program derivation chains (full corpus)","description":"Every tracked sovereign AI program with the evidence chain behind announced/committed/disbursed figures. Built for downstream researcher pipelines; CORS-enabled.","responses":{"200":{"description":"Derivation chains.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/sovereign-programs/derivation-chain/{program_id}":{"get":{"summary":"Sovereign-program derivation chain (single program)","parameters":[{"name":"program_id","in":"path","required":true,"schema":{"type":"string"},"description":"Program id in the form 'sovereign-<country_code>' (e.g. sovereign-ae)."}],"responses":{"200":{"description":"Derivation chain.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown program id."}}}},"/api/datasets/{name}/{file}":{"get":{"summary":"Packaged dataset artifacts","description":"Download surface for the packaged datasets listed at https://scrutica.com/datasets. Allowlisted files per dataset: data CSV, schema.json, data-dictionary.md, methodology.md, sha256 checksums, croissant.json (MLCommons Croissant JSON-LD).","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Dataset name as listed on /datasets."},{"name":"file","in":"path","required":true,"schema":{"type":"string"},"description":"One of the allowlisted artifact filenames."}],"responses":{"200":{"description":"The artifact (content type per file)."},"404":{"description":"Unknown dataset or non-allowlisted file."}}}},"/api/watchlist/rss":{"get":{"summary":"Watchlist RSS feed","description":"RSS for a client-side watchlist (entity ids supplied by the caller — the server stores nothing). Includes ownership-change and BIS-cascade governance signals, capped at one per facility.","parameters":[{"name":"items","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated entity ids to watch."},{"name":"since","in":"query","required":false,"schema":{"type":"string"},"description":"ISO date lower bound for items."}],"responses":{"200":{"description":"RSS 2.0 document.","content":{"application/rss+xml":{"schema":{"type":"string"}}}}}}}},"x-rate-limits":"Per-route sliding windows; the MCP server enforces 60/min/IP. 429 responses carry Retry-After.","x-additional-endpoints":{"description":"Public GET endpoints whose full parameter surface is not yet documented in this spec (listed rather than guessed; they back the interactive instruments and are stable):","endpoints":[{"path":"/api/cascade-graph","purpose":"Full supply-chain graph JSON for the cascade instrument."},{"path":"/api/supply-chain-graph","purpose":"Full supply-chain graph (17K+ edges)."},{"path":"/api/map-facilities","purpose":"Facility point data for the global map."},{"path":"/api/map-arcs","purpose":"Top supply-chain arcs for the global map."},{"path":"/api/map-eu-grid","purpose":"EU grid substation points."},{"path":"/api/compute-visibility/chain/{facilityId}","purpose":"Ownership-chain walk for one facility."},{"path":"/api/coordination-gaps/edge-aggregates","purpose":"Country-level coordination-gap aggregates."},{"path":"/api/org-preview","purpose":"Single-organization lookup."},{"path":"/api/trade-impact","purpose":"Trade-corridor discovery for an event/year."},{"path":"/api/impact-prescorer/search","purpose":"Autocomplete for the Entity-List pre-scorer."}]},"x-machine-surfaces":{"mcp":"https://scrutica.com/api/mcp","agents_manual":"https://scrutica.com/agents","llms_txt":"https://scrutica.com/llms.txt","llms_full":"https://scrutica.com/llms-full.txt","feeds":["https://scrutica.com/analysis/feed.xml","https://scrutica.com/corrections/feed.xml","https://scrutica.com/export-controls/changes/feed.xml","https://scrutica.com/sovereign-ai/feed.xml"]}}