Scrutica
REMOTE · SCRUTICA.COM
AI compute infrastructure intelligence: facilities, supply chains, sovereign AI, export controls.
Available components
Last scanned (13 hours ago)
Scores higher than 94% of remote servers
Reachable. Last reached 7 Nov 2026.
Category Cloud Infrastructure
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3794 tokens (~210/item across 18 items; 10 tools + 8 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage93
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 79% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 6 Nov 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 4 Nov 26 0
- Tool “scrutica_query_export_controls” rewrote its description, which is the text the model reads security
- 3 Nov 26 0
- Tool “scrutica_get_facility” rewrote its description, which is the text the model reads security
- Tool “scrutica_get_scenario” rewrote its description, which is the text the model reads security
- 2 Nov 26 0
- Tool “scrutica_get_supply_chain” rewrote its description, which is the text the model reads security
- 1 Nov 26 0
- Tool “scrutica_get_facility” rewrote its description, which is the text the model reads security
- 31 Oct 26 0
- Tool “scrutica_get_sovereign_program” rewrote its description, which is the text the model reads security
- 28 Oct 26 0
- Tool “scrutica_entity_list_changes” rewrote its description, which is the text the model reads security
- Tool “scrutica_get_facility” rewrote its description, which is the text the model reads security
- 24 Oct 26 0
- Tool “scrutica_get_company” rewrote its description, which is the text the model reads security
- Tool “scrutica_query_export_controls” rewrote its description, which is the text the model reads security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 7 Nov 2026 · Probed https://scrutica.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=scrutica.com | CN=YR2,O=Let's Encrypt,C=US | 1 Oct 2026 | 30 Dec 2026 | RSA 2048 | SHA256-RSA | 53385929255cf8ede9ac7abae5e17be05b3 |
| SANs: scrutica.com | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of scrutica.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| scrutica.com. | No DS | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googleapis.com https://*.google-analytics.com https://*.googletagmanager.com https://*.vercel-scripts.com https://*.mapbox.com; style-src 'self' 'unsafe-inline' https://*.mapbox.com; img-src 'self' data: blob: https://*.mapbox.com https://*.supabase.co https://*.google-analytics.com https://*.googletagmanager.com https://*.google.com https://stats.g.doubleclick.net; connect-src 'self' https://*.supabase.co https://*.mapbox.com https://*.google-analytics.com https://*.googletagmanager.com https://*.analytics.google.com https://stats.g.doubleclick.net https://us.i.posthog.com https://us-assets.i.posthog.com; font-src 'self' data:; object-src 'none'; base-uri 'self'; worker-src 'self' blob:; child-src 'self' blob:; frame-ancestors 'self' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://scrutica.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://scrutica.com/api/mcp | HTTPS enforced | 308 | https://scrutica.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
scrutica_entity_list_changes ~607
What CHANGED in the BIS Entity List, as bounded change-log summaries. Backed by the same derivation the public /export-controls/changes page and its RSS feed render. PREFER this over scrutica_query_export_controls for freshness questions ("what changed this month", "latest additions", "recent removals"): designation rows arrive already grouped into per-Federal-Register-notice change events, so you do not re-derive notice grouping from citation strings. Each event includes: canonical FR citation and link, notice title / publication date / document number where the citation resolved to one FR document, a derived event date labeled with the source column it came from, entry / entity / address / removal counts (entry_count counts entries as the Register does: an entity under two destinations is two entries), per-country counts, a bounded sample of entity names, and the entities cross-referenced to compute-infrastructure organizations. Removal actions are returned separately as date-keyed events — a screening list maintained from additions alone over-blocks forever. Also returns a last-N-ISO-week activity rollup counting BOTH additions and removals. Zero-count weeks are a real quiet-Federal-Register signal, not missing data. Results are bounded summaries, never row dumps: at most 24 events per call (default 6, newest first), with any truncation declared in metadata. Cite totals from the count field and per-event entry_count, never by summing a sampled list. Do NOT use this to look up one entity's designation rows — use scrutica_query_export_controls (substring match on the published name). Use company_id here only to scope the log to notices touching an organization you already resolved. Authority tier: Federal-Register-anchored designations are Tier 1 (primary source). Each entry is dated by the effective date of the Federal Register notice that added it, the notice the Entity List's own eCFR citations for the entry resolve to (a removed record: the notice its entry wa…
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | – | Scope to change events touching one organization. Canonical Scrutica org ID ('org-<slug>'); the id space is the matched_org_id values in the BIS cross-reference, so designated entities without a comp… |
| limit | integer | – | Max change events to return (default 6, max 24), newest first. The count field always reports the full total in scope. At the Federal Register's Entity-List cadence the default already reaches back s… |
| weeks | integer | – | ISO-week span of the activity rollup (default 8 — the change-log page's own window; max 52). |
No output schema declared.
No examples provided.
scrutica_estimate_flops ~202
Estimate hypothetical peak and sustained throughput for a user-specified hardware configuration and precision. Sustained throughput equals dense peak throughput multiplied by accelerator count and utilization. The reported bounds are fixed at 0.7 and 1.15 times that result; they are model assumptions. Retain the bounds and is_estimated flag when quoting the estimate. This tool does not verify a named facility's inventory, availability or regulatory compliance. Named-facility estimates have separate evidence requirements documented at /methodology#flop-estimation.
| Name | Type | Req | Description |
|---|---|---|---|
| hardware_type | string | yes | GPU / accelerator model |
| precision | string | – | – |
| sparsity | string | – | Structured-sparsity mode, accepted and echoed in the response. Both values currently apply a 1.0 multiplier. |
| unit_count | integer | yes | Number of accelerators |
| utilization | number | – | Fraction of dense peak throughput sustained (0–1; default 0.40). |
No output schema declared.
No examples provided.
scrutica_get_company ~433
Fetch complete details for a single organization (company, government entity, holding company) by canonical Scrutica ID. Returns: legal name, country of HQ, organization type, parent / subsidiary references, supply-chain edge counts. US government listings that are not export controls: us_restrictive_listings holds the rows that name the organization, each with its list (dod_1260h: the Defense Department's Section 1260H list of "Chinese military companies"; ofac_ns_cmic: OFAC's Non-SDN Chinese Military-Industrial Complex Companies List; dhs_fascsa_exclusion: a Homeland Security FASCSA exclusion order), whether it is on the current list, the name as printed, its source (Federal Register notice or OFAC list file) and how it was matched (resolution 'name' or 'alias'; 'ambiguous' when the printed name matches several organizations, which are listed). on_1260h and on_ns_cmic are true when a current row resolves to the organization, false when no current row names it, and null when a current row names it among several organizations (unless the stored flag already reads true) or the rows cannot be read: names that match no record are not resolved, so false is not proof of absence. on_ofac_sdn is always null: OFAC's SDN list is not ingested. Use scrutica_query_export_controls for BIS designation details. Use scrutica_get_supply_chain for full edge graphs.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | – | REQUIRED. Canonical Scrutica organization ID. Format: 'org-<slug>' (e.g. 'org-nvidia', 'org-tsmc', 'org-huawei'). Resolve via scrutica_search first — do NOT guess slugs. Optional in the schema only s… |
| entity_id | string | – | Alias for company_id. |
| id | string | – | Alias for company_id. |
| org_id | string | – | Alias for company_id. |
| organization_id | string | – | Alias for company_id. |
No output schema declared.
No examples provided.
scrutica_get_facility ~633
Fetch complete details for a single Scrutica facility by canonical ID. Returns: roles[] — each organisation the record names, under the relationship its own source ESTABLISHES (site owner, site operator, AI hardware owner, or another relationship such as PeeringDB listing holder, lessee, developer), with the reason, source URL, quote and authority tier; withheld_roles[] — recorded attributions the cited source does not establish, with the reason; then country, place (the city, town or census-designated place containing the site, else its county; then state and country) with place_basis saying how it was derived, the source's own location cells verbatim (source_location_cells), power capacity (MW), GPU inventory (where disclosed), location (lat/lng), facility type, status, data_source, source_url, is_estimated flags, and any logged data-quality flags (cross-source divergence investigations). present_inventory is Scrutica's partition-by-partition compute evidence (the verdict the facility page, threshold table and query tools use): each accelerator partition admitted at its cited 16-bit rate (rate_format names FP16 or BF16, as the vendor prints it; rate_sparsity says dense, or unstated where the vendor labels the rate neither way) or held with a reason; one held partition withholds the facility figure. Read facility_peak_pflops_16bit, dense_16bit_tflops_per_accelerator and peak_pflops_16bit. The deprecated facility_peak_pflops_fp16, dense_fp16_tflops_per_accelerator and peak_pflops_fp16 keep their earlier meaning, a figure at an FP16 rate: they are null for a BF16 partition, and the facility figure is null unless every partition is admitted at FP16. facility.peak_pflops_fp16 and h100_equivalent_gpus are the record's catalogue scalars, a different basis. Describe an organisation as the site's owner ONLY where roles[] names it "Site owner"; a recorded organisation is not by itself evidence of title or operation. Where a role's evidence covers only part of the record, t…
| Name | Type | Req | Description |
|---|---|---|---|
| entity_id | string | – | Alias for facility_id. |
| facility_id | string | – | REQUIRED. Canonical Scrutica facility ID. Format: 'fac-<slug>' (e.g. 'fac-tsmc-arizona-fab21-p2', 'fac-tsmc-fab-18'). Resolve via scrutica_search first — do NOT guess slugs. Optional in the schema on… |
| id | string | – | Alias for facility_id. |
No output schema declared.
No examples provided.
scrutica_get_methodology ~94
Return methodology documentation for a Scrutica metric or index. Topics: 'flop-estimation', 'cost-index', 'compute-visibility-index', 'supply-chain-weighting', 'chokepoint-cascade', 'sovereign-execution-classification'. Returns the canonical URL + section anchor + summary. Use this when a user asks "how did you calculate X".
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | yes | – |
No output schema declared.
No examples provided.
scrutica_get_scenario ~133
Fetch geopolitical compute risk scenarios. Available: 'taiwan-strait' (4 TSMC disruption scenarios), 'iran-threat' (IRGC missile range vs Gulf compute), 'tokyo-earthquake' (Japan memory-fab exposure), 'abqaiq-2' (Saudi grid). Returns the scenario's summary plus its substrate serialized from the interactive page's own data modules — assumption scenarios / threat systems / affected assets with per-item sources and authority tiers, capped lists shipping their true totals. The propagation SIMULATION itself remains interactive-only at the returned URL.
| Name | Type | Req | Description |
|---|---|---|---|
| scenario_id | string | yes | – |
No output schema declared.
No examples provided.
scrutica_get_sovereign_program ~492
Fetch detailed data on a national sovereign AI compute program. Returns: announced_usd, announced_govt_only_usd, committed_usd, disbursed_usd, reality_ratio, status, key_partners, NVIDIA/US dependency, source_count, and published_spending (a government's own spending figures, each in its currency against its budget, with the document). 'list_all' returns a summary table of all tracked programs. announced_usd can include private commitments; announced_govt_only_usd records the government-funded portion. Compare the programme sources for scope, dates and currency conversions. A government-only figure can still span a different budget period or initiative from another programme's figure. reality_ratio divides disbursed_usd by announced_govt_only_usd, using announced_usd when the government-only field is null. The ratio is null when disbursement or the denominator is missing, or the denominator is zero. Each row includes reality_ratio_denominator_usd and reality_ratio_denominator_field so the division is reproducible from the payload. Where disbursed_usd converts a government's published spending figure, reality_ratio_basis is native_currency and the ratio divides that figure by its own budget in the source currency (reality_ratio_numerator_native / reality_ratio_denominator_native, in reality_ratio_currency): the two dollar amounts were converted on different dates and do not reproduce it. disbursed_usd derives only from a government's published expenditure or payments; a transfer to an administering body is listed in published_spending as released and is not counted. Missing fields and differing reporting scopes limit comparisons; reality_ratio_unavailable_reason explains an absent ratio.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 |
| list_all | boolean | – | Return summary of all sovereign programs instead of a single record |
| program_id | string | – | Scrutica sovereign-program ID in the form 'sovereign-<country_code>' (e.g. 'sovereign-ae'), as returned by scrutica_search and list_all. The bare country_code is also accepted. Regional programs use… |
No output schema declared.
No examples provided.
scrutica_get_supply_chain ~257
Return supply-chain relationships for one or more organizations. direction = 'upstream' traces suppliers (who feeds this entity); 'downstream' traces customers (who depends on this entity); 'both' returns both. Each edge carries supplier_org_id, customer_org_id and data_source; product_service, category, sole-source status, share and criticality appear only where the edge's cited source states them for that pair, and attribute_withholding gives the reason for every withheld value. Collection size: 20,684 supply-chain records across all sources (snapshot 2026-10-29). Of these records, 1,924 come from a licensed layer limited to relationships between organizations already in Scrutica's records.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | – | – | Alias for org_ids. |
| direction | string | – | – |
| limit | integer | – | – |
| org_id | – | – | Alias for org_ids; a single id may be passed as a bare string. |
| org_ids | array | – | REQUIRED. Scrutica org IDs in 'org-<slug>' format (e.g. ['org-nvidia', 'org-tsmc']), 1-5 of them. Optional in the schema only so the single-id aliases below can stand in. |
No output schema declared.
No examples provided.
scrutica_query_export_controls ~498
Look up BIS Entity List designations for companies or countries. The queried dataset is the US Commerce Department Entity List, Federal-Register-anchored; it does NOT cover OFAC SDN or Wassenaar CCL (for an organization's Section 1260H, NS-CMIC or FASCSA listing, use scrutica_get_company — its us_restrictive_listings rows and the on_1260h / on_ns_cmic flags derived from them; OFAC's SDN list is not ingested, and on_ofac_sdn is null). entity_name is a case-insensitive substring match against the designated entity's published name (no alias expansion). Returns entity_name, entity_type, country, list_type, designation_date, removal_date, grounds, federal_register_citation, source_url (Federal Register notice URL), data_quality_flags. Provide entity_name or country. entity_id filtering is not implemented: an entity_id-only call is rejected; alongside a supported filter, entity_id is ignored and the response sets entity_id_ignored: true. VEU authorization removals are returned separately in regulatory_events (maximum 50, with count and truncation); they do not contribute to designation membership or counts. Event effective_date and publication_date are distinct. Authority tier: Federal-Register-anchored designations are Tier 1 (primary source). bis_coverage_class discriminates how a row is covered: explicitly_named (FR notice cites the entity by name) vs affiliate_50pct_rule (inferred via BIS's 50% Affiliates Rule). coverage_note is populated only on affiliate_50pct_rule rows and states whether that rule is currently suspended. data_quality_flags is an array of provenance/caveat notes, empty for most rows; where present (derived-country provenance, removal-date sourcing, or the affiliate rows' suspension and substrate-reproducibility caveats) treat it as load-bearing context for the row.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 |
| entity_id | string | – | Retained for compatibility; filtering by this ID is not implemented. An ID-only call is rejected; with entity_name or country, the ID is ignored and entity_id_ignored is true. |
| entity_name | string | – | Case-insensitive substring of the designated entity's published name; no alias expansion. Supply entity_name or country. |
| limit | integer | – | – |
No output schema declared.
No examples provided.
scrutica_search ~172
Search facilities, companies, or sovereign programs by free-text query. Returns ranked results with id, name, type, one-line summary, and Scrutica URL. Filter by entity_type to scope to a single class. Filter by ISO 3166-1 alpha-2 country code. Do NOT use this for BIS Entity List / export-control lookups — use scrutica_query_export_controls. Do NOT use this for supply-chain traversal — resolve an entity ID first via this tool, then call scrutica_get_supply_chain.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. US, CN, TW) |
| entity_type | string | – | Limit results to this entity class |
| limit | integer | – | – |
| query | string | yes | Free-text search query |
No output schema declared.
No examples provided.
How do I install the Scrutica MCP server?
Scrutica is a hosted endpoint at https://scrutica.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · scrutica.com
claude mcp add --transport http davidgringras-scrutica 'https://scrutica.com/api/mcp'
What is the Scrutica MCP server?
Scrutica is an MCP server listed in the public MCP registry as io.github.davidgringras/scrutica. AI compute infrastructure intelligence: facilities, supply chains, sovereign AI, export controls. This page covers its hosted endpoint (https://scrutica.com/api/mcp).
Is the Scrutica MCP server safe to use?
Scrutica scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Scrutica MCP server expose?
Scrutica exposes 10 tools: scrutica_search, scrutica_get_facility, scrutica_get_company, scrutica_query_export_controls, scrutica_entity_list_changes, and 5 more. Their descriptions and schemas cost roughly 3,521 tokens of context every time the server is loaded.
Does the Scrutica MCP server require authentication?
No. We connected to Scrutica without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Scrutica MCP server still maintained?
Scrutica is still listed as active in the MCP registry. We last reached this channel on 7 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the Scrutica MCP server?
VerifyMCP ran 13 checks on Scrutica, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.