Skip to main content

Scrutica for agents

Everything on this site is reachable programmatically, under the same provenance contract the pages render: every record carries data_source, source_url, authority_tier, and is_estimated. This page is the operator manual — for people configuring agents, and for agents that landed here mid-task. Machine-readable index: /llms.txt.

The surface map

  • MCP server https://scrutica.com/api/mcp. 10 read-only tools, reference resources, and canned analysis prompts over the full substrate. Connection details below; the LLM-optimized reference is the agent guide, and the discovery card sits at /.well-known/mcp/server-card.json. Listed in the MCP Registry as io.github.davidgringras/scrutica.
  • Markdown twins — append .md to any page URL for a markdown rendering (e.g. /methodology.md), per the llms.txt .md-suffix convention. The site index is /llms.txt; the complete single-file reference (~260KB) is /llms-full.txt, regenerated from the substrate at every deploy and drift-gated in CI.
  • Feeds — RSS for Entity List changes (whole log, or per-organization), sovereign-program evidence (all programs, or per-program), analysis notes, and corrections (every public disclosure of a value we got wrong, subscribable); plus a JSON audit feed of BIS cross-reference cascade deltas at /api/export-controls/cascade-feed.
  • Dataset downloads — packaged datasets with CSV, schema, data dictionary, SHA-256 checksums, and Croissant JSON-LD, from /datasets. Citation formats for each at /datasets/cite.
  • JSON API — public read endpoints, described in OpenAPI 3.1 at /api/openapi.json. Content negotiation is live too: request any page URL with Accept: text/markdown and the markdown twin comes back at the page's own URL.

Connect the MCP server

Transport is streamable HTTP; no authentication; rate limit 60 requests/minute/IP with Retry-After on 429. A plain GET on the endpoint returns this same connection information as JSON.

claude.ai / Claude Desktop

Settings → Connectors → Add custom connector → paste https://scrutica.com/api/mcp.

Claude Code

claude mcp add --transport http scrutica https://scrutica.com/api/mcp

Cursor

One-click install (Cursor's documented deeplink), or add to .cursor/mcp.json:

{ "mcpServers": { "scrutica": { "url": "https://scrutica.com/api/mcp", "transport": "streamable-http" } } }

VS Code

One-click install (VS Code's documented vscode:mcp/install scheme), or use the same JSON server entry as Cursor.

The tools

ToolWhat it returns
scrutica_searchFree-text search over facilities, companies, and sovereign programs; returns canonical ids with per-row source attribution.
scrutica_get_facilityComplete facility record by canonical id: capacity, operator and owner, energy profile, campus relations, source attribution, estimate flags, and a ready-made citation.
scrutica_get_companyOrganization record by canonical id: type, jurisdiction, identifiers, and ownership references.
scrutica_query_export_controlsBIS Entity List designations, each anchored to its Federal Register notice (tier-1 sourcing).
scrutica_entity_list_changesWhat changed in the BIS Entity List: per-notice change events, removal actions, and a weekly activity rollup.
scrutica_get_supply_chainSupplier–customer edges for one or more organizations, weighted by supply share and 3-month price correlation.
scrutica_get_sovereign_programNational sovereign-AI program records: announced vs disbursed capital, reality ratio, status, and dependency structure.
scrutica_get_scenarioGeopolitical compute-risk scenario summaries, each linking its interactive propagation analysis.
scrutica_estimate_flopsPeak and sustained FLOP estimates for a hardware configuration, with editorial bounds and is_estimated flagged.
scrutica_get_methodologyCanonical methodology summary and URL for a Scrutica metric — the answer to "how was this number calculated".

The server also exposes MCP resources (the agent guide, the full site reference, per-topic methodology summaries) and three prompts that bake in the relay discipline: facility_brief, export_control_changes_brief, verify_scrutica_number.

The data contract

What a response means, so it can be relayed without distortion:

  • authority_tier — 1: primary measurement or regulatory filing (SEC EDGAR, Federal Register). 2: research database or curated corpus aggregating primary sources. 3: press or analyst secondary. 4: Scrutica-derived, with documented methodology and adjustable parameters.
  • is_estimated — derived values flag it and, where applicable, carry explicit bounds. A null field means the value is not published anywhere we accept — null is an answer, not a gap to fill.
  • Campus records — several facility rows can describe one physical site at different scopes. Responses mark the relation (campus_id, canonical-for-power member); summing member megawatts double-counts.
  • Corrections — when the site showed a wrong value, the disclosure is public and permanent at /corrections. Routine data additions land in /changelog.
  • Freshness — ingest crons refresh sources on daily-to-weekly cadences; the substrate snapshot behind rendered counts is dated (currently 2026-07-23). Entity records carry their own update timestamps; sitemap lastmod values are real, not request-time.

Crawling and fair use

AI crawlers, retrieval fetchers, and search indexers are explicitly welcome — robots.txt allow-lists the documented agent families by name and states affirmative consent for training, retrieval, and search use. Only admin paths are disallowed. Identify your client honestly (a real User-Agent with a contact URL) and respect the published rate limits; there is no pay-wall and no login-wall to route around.

Data license: CC BY-SA 4.0 except where noted; source datasets that originate in licensed corpora are stored as extracted relational facts with provenance preserved, and the raw licensed datasets are not redistributed.

Citing Scrutica

Entity pages carry a Cite panel (BibTeX, APA, Chicago, MLA, DataCite, plain). MCP facility and company responses include a ready-made cite string with the canonical URL and access date. When relaying a number, keep its source_url and tier with it — that chain is the point.