{
 "publisher": "Still OS Digital Holdings LLC",
 "ein": "42-4126177",
 "url": "https://stillosdigitalholdings.com/findings/",
 "built_at": "2026-10-30T23:17:01.526Z",
 "license": "Free to quote with attribution.",
 "findings": [
  {
   "slug": "silent-tool-surface-change",
   "url": "https://stillosdigitalholdings.com/findings/silent-tool-surface-change",
   "question": "How often does an MCP server change the tools it exposes without changing its version number?",
   "headline": "78.7% of observed MCP tool-surface changes carried no version change.",
   "cite_as": "78.7% of MCP tool-surface changes carry no version change (Still OS Digital Holdings LLC, Surface History, n=6,384 changes across 4,680 hosts, 2026-09-21 to 2026-10-30).",
   "numbers": {
    "Surface changes observed": "6,384",
    "Of those, no version change": "5,025 (78.7%)",
    "Distinct hosts observed changing": "4,680",
    "Servers in the observed universe": "22,295",
    "Observation window": "2026-09-21 → 2026-10-30"
   },
   "method": "Each server's live tool list is fetched on a repeating cadence and reduced to SHA256(JSON.stringify(sorted tool names)). A change in that digest with no change in the reported server version is counted as version-silent. Event-sourced: any past date is replayable from the event log.",
   "producers": [
    "/home/marcus/state/mcp-census/surface-clock/surface-events.jsonl",
    "/home/marcus/state/mcp-census/surface-clock/latest-surfaces.json"
   ]
  },
  {
   "slug": "tool-parameter-changes",
   "url": "https://stillosdigitalholdings.com/findings/tool-parameter-changes",
   "question": "When an MCP tool keeps its name but quietly changes the parameters it accepts, does anything signal it?",
   "headline": "3,386 observed MCP parameter changes — and 73.6% carried no version change.",
   "cite_as": "73.6% of MCP tool-parameter changes carry no version change (Still OS Digital Holdings LLC, Surface History, n=3,386 parameter changes across 1,421 hosts, 2026-09-21 to 2026-10-30).",
   "numbers": {
    "Parameter changes observed": "3,386",
    "Of those, no version change": "2,493 (73.6%)",
    "Distinct hosts": "1,421",
    "Tool-surface changes, same window": "6,384",
    "Description-only changes, same window": "29,077",
    "Observation window": "2026-09-21 → 2026-10-30"
   },
   "method": "Each server's live tool definitions are fetched on a repeating cadence; a change to a retained tool's input parameters with no change to its name is recorded as PARAMS_CHANGED, separately from tools added/removed (SURFACE_CHANGED) and description-only edits. Event-sourced and replayable to any past date.",
   "producers": [
    "/home/marcus/state/mcp-census/surface-clock/surface-events.jsonl"
   ]
  },
  {
   "slug": "dependency-floor-maintainer-concentration",
   "url": "https://stillosdigitalholdings.com/findings/dependency-floor-maintainer-concentration",
   "question": "Who actually controls the packages the whole MCP ecosystem is built on top of?",
   "headline": "41 of 90 dependency-floor packages have a single maintainer — 19 individuals hold all of them.",
   "cite_as": "45.6% of the npm packages beneath the MCP ecosystem have a single maintainer, and 19 individuals control all of them (Still OS Digital Holdings LLC, dependency-floor census, n=90 packages, as of 2026-10-26).",
   "numbers": {
    "Dependency-floor packages resolved": "90",
    "Single-maintainer": "41 (45.6%)",
    "Distinct individuals holding all single-maintainer packages": "19",
    "As of": "2026-10-26"
   },
   "method": "The packages that recur as direct or near-direct dependencies across the live MCP population are resolved to their current npm maintainer set. A package with exactly one maintainer is counted as single-maintainer; the union of those maintainers is the control set. Counts are of resolved packages only — unresolved ones are reported separately, never assumed clean.",
   "producers": [
    "/home/marcus/state/mcp-census/chokepoint-maintainer-history.jsonl"
   ]
  },
  {
   "slug": "advertised-payment-readiness",
   "url": "https://stillosdigitalholdings.com/findings/advertised-payment-readiness",
   "question": "When a machine-callable service advertises itself as payment-ready, does it actually charge for anything?",
   "headline": "Of 601 services advertising payment-readiness, 158 (26.3%) actually gate anything behind payment.",
   "cite_as": "Only 26.3% of services that advertise payment-readiness actually gate a resource behind payment (Still OS Digital Holdings LLC, payability census, n=601, as of 2026-10-26).",
   "numbers": {
    "Services declaring payment-readiness": "601",
    "Reachable at probe time": "584",
    "Actually gating a resource behind payment": "158 (26.3%)",
    "Advertising it without enforcing it": "443",
    "As of": "2026-10-26"
   },
   "method": "Each service's declared manifest is read, then its declared resources are requested unauthenticated. `gated` records that the origin actually withheld the resource pending payment. Reachability and gating are recorded separately so an unreachable host is never scored as an unenforced one.",
   "producers": [
    "/home/marcus/state/x402/payability-census-2026-10-26.jsonl"
   ]
  },
  {
   "slug": "published-refresh-cadence",
   "url": "https://stillosdigitalholdings.com/findings/published-refresh-cadence",
   "question": "Do public data portals actually refresh their datasets as often as they say they do?",
   "headline": "103 of 105 dataset observations were past their own advertised refresh cadence.",
   "cite_as": "98.1% of public-portal dataset observations were past the portal's own advertised refresh cadence (Still OS Digital Holdings LLC, data-integrity verdict engine, n=105 observations across 17 portals, as of 2026-10-28).",
   "numbers": {
    "Dataset observations": "105",
    "Past their advertised cadence": "103 (98.1%)",
    "Within cadence": "2",
    "Distinct portals": "17",
    "Distinct datasets": "101",
    "Most recent observation": "2026-10-28"
   },
   "method": "For each dataset the portal's own declared cadence is read from its metadata and compared against its own reported last-updated timestamp at observation time. Freshness and schema substance are recorded as separate states, and each observation is hash-chained to its predecessor.",
   "producers": [
    "/home/marcus/state/data-integrity/observations.jsonl"
   ]
  },
  {
   "slug": "answer-engine-ingest-versus-citation",
   "url": "https://stillosdigitalholdings.com/findings/answer-engine-ingest-versus-citation",
   "question": "When an AI answer engine crawls a site thousands of times, how often does it actually cite that site to a human?",
   "headline": "52,413 verified ingestion fetches across 52,333 distinct URLs produced 5 verified live-answer fetches.",
   "cite_as": "An answer engine ingested 52,413 pages across 52,333 distinct URLs over 20 days and performed 5 verified live-answer retrievals — a ratio of 10483:1 (Still OS Digital Holdings LLC, answer-engine citation ledger).",
   "numbers": {
    "Verified ingestion fetches": "52,413",
    "Distinct URLs ingested": "52,333",
    "Days observed": "20",
    "Verified live-answer retrievals": "5",
    "Ingest : live-answer": "10483 : 1",
    "Search-bot identity claims that were forged": "3 of 7 (42.9%)"
   },
   "method": "Every request is matched to the crawler operator's OWN PUBLISHED IP RANGES (openai.com/gptbot.json, chatgpt-user.json, searchbot.json). A user-agent claim from an out-of-range address is counted as forged, never as a visit. Ingestion crawlers and live-answer retrievals are counted separately because only the second indicates a person asked a question.",
   "producers": [
    "/home/marcus/state/agent-visitor-log.jsonl",
    "/home/marcus/state/aeo/openai-gptbot.json"
   ]
  },
  {
   "slug": "verified-settlement-record",
   "url": "https://stillosdigitalholdings.com/findings/verified-settlement-record",
   "question": "Can this company prove that external parties have paid it, in a way a stranger can recompute?",
   "headline": "8 external settlements from 6 distinct counterparties, every one recomputable from its transaction hash.",
   "cite_as": "Still OS Digital Holdings LLC has 8 externally-paid settlements from 6 distinct counterparties, each independently recomputable on-chain (2026-09-17 to 2026-10-30).",
   "numbers": {
    "External settlements": "8",
    "Distinct paying counterparties": "6",
    "Total settled": "$0.182",
    "First → most recent": "2026-09-17 → 2026-10-30",
    "Independently recomputable": "8 of 8",
    "Entity": "Still OS Digital Holdings LLC · EIN 42-4126177"
   },
   "method": "Each settlement is read back from the chain by transaction hash and token-transfer log index, then attributed to the specific route that served it using a request log written upstream of the proxy hop. Self-payments are excluded by address.",
   "producers": [
    "/home/marcus/still-os-consciousness/state/revenue-ledger.jsonl",
    "/home/marcus/state/revenue-integrity/payment-attempts.jsonl"
   ]
  },
  {
   "slug": "mcp-audit-price-index",
   "url": "https://stillosdigitalholdings.com/findings/mcp-audit-price-index",
   "question": "What does an independent MCP server security audit actually cost, and who publishes a price?",
   "headline": "Published MCP-audit prices run $299 to $25,000 — and 0 of 6 priced competitor offerings name a single customer.",
   "cite_as": "Published prices for independent MCP (Model Context Protocol) server security audits range from $299 to $25,000 across 3 vendors with prices on their own pages, and 0 of 6 competitor offerings name any customer, testimonial or audit count (Still OS Digital Holdings LLC, MCP audit price index, n=10 price points read firsthand from vendor pages, as of 2026-10-30).",
   "numbers": {
    "Price points read firsthand from a vendor page": "10",
    "Vendors publishing a price on their own page": "3",
    "Lowest published price point": "$299",
    "Highest published price point": "$25,000",
    "Competitor offerings naming ANY customer": "0 of 6",
    "Rows from search snippets, excluded as unverified": "3",
    "Index observed": "2026-10-30"
   },
   "method": "Each row is read directly from the vendor's own published page and stamped with the date it was read. Rows sourced from a search-result summary are stored but marked unverified and are EXCLUDED from every figure above, because a snippet is not a measured price. Customer evidence is counted only when the vendor names a customer, testimonial, case study or audit count on its own page; absence is recorded as absence, never inferred as a judgement about quality.",
   "producers": [
    "/home/marcus/state/market-prices/mcp-audit-price-index.jsonl"
   ]
  },
  {
   "slug": "static-finding-screening-ratio",
   "url": "https://stillosdigitalholdings.com/findings/static-finding-screening-ratio",
   "question": "How many raw static analysis hits does one reportable MCP finding survive out of, and who publishes that number?",
   "headline": "1,574 raw static sink hits across 98 MCP packages reduced to 15 reportable findings — a 99.0% reduction, published.",
   "cite_as": "1,574 raw static sink hits across 98 MCP (Model Context Protocol) packages reduced to 15 reportable findings, a 99.0% reduction, with 32 packages judged intended behaviour and 51 left undecided pending reproduction (Still OS Digital Holdings LLC, triage ledger, n=98 packages).",
   "numbers": {
    "Raw static sink hits examined": "1,574",
    "Packages triaged": "98",
    "Individual assessments written": "101",
    "Reportable findings": "15",
    "Judged intended behaviour, not a finding": "32",
    "Undecided, pending reproduction": "51",
    "Flow could not be located in source": "5",
    "Reduction from raw hits to reportable": "99.0%"
   },
   "method": "Static analysis locates candidate sinks reachable from a tool-input field. Each candidate is then assessed in source and assigned one verdict: reportable, intended behaviour, undecided pending reproduction, or flow not located. Only reportable findings proceed to coordinated disclosure. Packages left undecided are counted SEPARATELY and are NOT treated as discards, because work that is unfinished is not work that cleared.",
   "producers": [
    "/home/marcus/hunt/triage-verdicts.jsonl"
   ]
  },
  {
   "slug": "ai-liability-third-party-audit-requirements",
   "url": "https://stillosdigitalholdings.com/findings/ai-liability-third-party-audit-requirements",
   "question": "Do AI-liability insurers require an independent third-party audit before they will cover an AI agent?",
   "headline": "Of 2 AI-liability programmes read at source, 1 requires an independent accredited auditor and 1 states no external prerequisite at all.",
   "cite_as": "Of 2 AI-liability programmes whose own pages were read directly, 1 requires an independent accredited third-party auditor and 1 publishes no external certification prerequisite; 7 audit firms are accredited to the one standard that names them (Still OS Digital Holdings LLC, AI-liability audit-requirement record, as of 2026-10-30).",
   "numbers": {
    "Programmes read directly at source": "2",
    "Require an independent accredited auditor": "1",
    "No external prerequisite stated on their own page": "1",
    "Accredited audit firms named across all programmes": "7",
    "Programmes with a public accreditation path for new auditors": "1",
    "Programmes publishing a price": "0",
    "Programmes known only from secondary sources, excluded": "3",
    "Record observed": "2026-10-30"
   },
   "method": "Each row is read directly from the carrier's or standard body's own public page and stamped with the date read, quoting the operative wording. A programme that does not state a requirement is recorded as UNSTATED, never as \"not required\" — an unpublished prerequisite is unknown, not absent. Programmes known only from secondary coverage are stored but marked unverified and EXCLUDED from every figure above. Where a secondary source and the primary page disagree, the primary page supersedes it and the correction is recorded in the row.",
   "producers": [
    "/home/marcus/state/market-prices/ai-liability-audit-requirements.jsonl"
   ]
  }
 ],
 "omitted_for_unreadable_producer": []
}